djn*_*jna 9 git gitlab gitlab-ci
添加 git 标签时如何防止触发 gitlab ci 管道?我在本地运行此命令(而不是在 gitlab-ci 作业中)
git tag -a "xyz"
Run Code Online (Sandbox Code Playgroud)
然后推动标签;这会触发各种管道。我想从运行中排除其中一些管道。
我想从这样的问题的思想变化这个; 这个问题是使用只,我想排除,所以我想除了。那里的答案有两种变体,一种有参考,一种没有。
build:
# ... my work here ...
except:
- tags
build:
# ... my work here ...
except:
refs:
- tags
Run Code Online (Sandbox Code Playgroud)
两者似乎都没有任何效果;我添加了一个标签,构建仍然发生。
我的理解在这里可能完全错误,因为标签这个词似乎有三种可能的含义,并且在阅读文档或示例时,我并不总是确定哪种含义适用:
我有兴趣控制如果第一种情况会发生什么。到目前为止,从评论中可以清楚地看出“除了:-tags”与我的情况无关,那么有没有可行的方法?
ibe*_*dev 40
看来 GitLab 建议使用rules而不是except按照文档
only 和 except 没有被积极开发。规则是控制何时将作业添加到管道的首选关键字。
所以它会是
your_job:
stage: your_stage
script:
- echo "Hello"
rules:
- if: $CI_COMMIT_TAG
when: never
- when: always
Run Code Online (Sandbox Code Playgroud)
mak*_*aki 20
Except tags 如果您想跳过标签的构建,这正是您应该使用的。
您需要确保了解提交 vs 分支 vs 标签
为了说明将标记的提交推送到 gitlab 时会发生什么,我执行了以下操作:
.gitlab-ci.yml使用以下内容创建:tests_always_run:
script:
- echo I should always execute
tests_except_tags:
script:
- echo I skip tagged triggers
except:
- tags
Run Code Online (Sandbox Code Playgroud)
--follow-tags以确保标记也传播到服务器:git add .gitlab-ci.yml
git commit -m 'my great yml with except tags'
git tag -a "abc" -m "Test tag"
git push --follow-tags
Run Code Online (Sandbox Code Playgroud)
如果你想跳过选定提交的 CI,那么你可以使用git push -o ci.skip,灵感来自这篇文章
(注意:这是一个格式化的评论,而不是一个答案)
为了调试触发管道的条件:
gitlab 的文档提到了运行 CI 作业时设置的几个变量,其中:
CI_COMMIT_REF_NAME:构建项目的分支或标签名称CI_COMMIT_BRANCH:提交分支名称。仅在构建分支时出现。CI_COMMIT_TAG:提交标签名称。仅在构建标签时出现。
让您的构建作业输出其中一些变量(例如:)echo "triggered by ref : " $CI_COMMIT_REF_NAME以查看触发您的作业的原因。
| 归档时间: |
|
| 查看次数: |
4139 次 |
| 最近记录: |