【发布时间】:2020-10-26 14:43:40
【问题描述】:
我想创建一个仅在满足两个以下条件时运行的管道:
- 标签引用给定的提交
- 提交存在于任何受保护的分支(即主分支)上
- 可选:只要将标记的未受保护分支合并(通过合并请求)到受保护分支或将标记添加到受保护分支,就应该运行该作业。
我试过了:
publish:
stage: publish
script:
- echo "Publish!"
rules:
# Only publish if tag given and commit is present on a protected branch
- if: '$CI_COMMIT_TAG && $CI_COMMIT_REF_PROTECTED == "true"'
当 $CI_COMMIT_TAG 设置为 或 $CI_COMMIT_REF_PROTECTED 设置为 true 时,这不起作用。
我知道类似的问题:Gitlab ci run job on master with release tag only 和 How to run a gitlab-ci.yml job only on a tagged branch?。
我也知道 gitlab 对问题进行了广泛讨论,并提供了一些解决方案(或类似的解决方案),例如 this。
一般的问题似乎是在 gitlab 中无法确定在给定分支上提交是否可靠,因为没有给出相关信息(git 历史记录)。
这个问题是为了在 gitlab CI 中为这个常见用例跟踪一个适当的解决方案。
【问题讨论】:
标签: tags conditional-statements gitlab-ci