我有这样的GitlabCI。
STAGE:
stage: deploy
image:
name: bitnami/kubectl:1.26
entrypoint: [""]
script:
...
rules:
- changes:
- .gitlab-ci.yml
when: never
- if: $CI_COMMIT_REF_NAME =~ /^release\/\d+\.\d+\.\d+$/
这个任务是针对像release/x.y. z这样的分支的。问题是当我第一次推送分支时,CI不会被触发。正如我从GitLab日志中看到的,它将分支的最后一次提交与空提交(0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000但如果它是在分支第一次被推时触发的话就好了。这种情况下的最佳做法是什么?
我希望在第一次按下分支时触发CI。
1条答案
按热度按时间aemubtdh1#
尝试将
when: always
添加到规则中:实际上,当它比较最后一次提交和空提交时,CI文件是新的,并且发生了“更改”条件,它将 * 不 * 寻找第二个条件。
第一条规则中的
changes
子句可能确实导致了这个问题。当您推送一个新分支时,.gitlab-ci.yml
文件在该分支的上下文中被认为是新的,并且when: never
的第一个规则优先。所以:
changes
子句。此配置使用一个规则来确保为匹配
release/x.y.z
模式的分支触发管道。它还包括对空提交SHA的显式检查,并结合分支模式检查。
这应满足以下两种情况:新分支的第一次推送和随后的推送。