如何防止在添加git标签时触发gitlab ci管道?我在本地运行这个命令(而不是在gitlab-ci作业中)
git tag -a "xyz"
然后推动标签;并且这触发了各种管道。我想排除其中一些管道的运行。
我正在尝试从问题的想法变化,如this;这个问题使用了only,我想排除,所以我试着用except。这里的答案有两个变体,一个带refs,一个不带。
build:
# ... my work here ...
except:
- tags
build:
# ... my work here ...
except:
refs:
- tags
两者似乎都没有任何效果;我添加一个标记,构建仍然发生。
我的理解可能完全错误,因为这个词似乎有三种可能的含义,当阅读文档或示例时,我并不总是确定哪种含义是适用的:
1.使用git tag应用Git标签
- Gitlab CI标签用于确定哪些跑步者选择作业
1.提交的ref标识符,用于通过REST API触发管道。这通常是一个分支名称,但也可以是一个git标签。
我只想控制第一个案子的结果。从目前的评论来看,似乎很清楚“除了:-tags”与我的案例无关,那么有没有什么方法确实有效呢?
5条答案
按热度按时间ijnw1ujt1#
看起来GitLab建议使用
rules
而不是except
只有和除了没有被积极开发。rules是控制何时向管道添加作业的首选关键字。
所以
nhhxz33t2#
Except tags
正是你应该使用的,如果你想跳过标签的构建。您需要确保理解commit vs branches vs tags
为了说明当你将tagged commit推送到gitlab时会发生什么,我做了如下操作:
1.创建了
.gitlab-ci.yml
,包含以下内容:1.提交的更改,标记提交并使用
--follow-tags
推送,以确保标记也传播到服务器:图示结果:
如果你想跳过CI,那么你可以使用git push -o ci.skip,它的灵感来自this article
3phpmpom3#
(note:这是一个格式化的评论而不是一个答案)
要调试触发管道的条件,请执行以下操作:
gitlab's doc提到了运行CI作业时设置的几个变量,其中:
CI_COMMIT_REF_NAME
:构建项目的分支或标记名称CI_COMMIT_BRANCH
:提交分支名称。仅在构建分支时存在。CI_COMMIT_TAG
:提交标记名称。仅在构建标记时存在。让您的构建作业输出其中的一些变量(例如:
echo "triggered by ref : " $CI_COMMIT_REF_NAME
)查看是什么触发了您的作业。uyhoqukh4#
我遇到了同样的情况,我的解决方案是这样的:
前::x1c 0d1x
后:
这两个stage都配置在我的.gitlab-ci.yml文件中,名称不同“Dev-UnitTests”,它只在有人提交到仓库时执行,对分支“test”中的tags没有影响
单元测试仅在分支测试上完成合并时运行
那在创建标签的时候没有再运行任何管道,希望对你有帮助.
关键是:
5us2dqdw5#
为了避免整个管道,使用“-o ci.skip”: