我有一个 GitLab CI/CD 配置,我希望仅当更改推送到主分支时才触发管道。以下是我的
.gitlab-ci.yml
文件的简化版本:
stages:
- deploy
deploy:
stage: deploy
rules:
- if: '$CI_COMMIT_REF_NAME == "master"'
- when: manual
before_script:
- apt-get update && apt-get install sshpass && apt-get install make
- chmod 400 $SSH_KEY
script:
- sshpass -p $SSH_PASS ssh -o "StrictHostKeyChecking=no" $USER_NAME@$HOST "cd /home/backend && git pull && make docker-restart"
使用此配置,管道应仅在更改推送到主分支时运行。然而,即使更改被推送到其他分支,管道似乎也会被触发。
如何修改 GitLab CI/CD 配置以确保仅当更改推送到主分支时才触发管道?
您的
if
键中有一个小拼写错误,但除此之外,我认为您最好使用变量 $CI_COMMIT_BRANCH
代替,因为您当前使用的变量也考虑了标签。另外,作为一个小改进,如果您的默认分支是 master
,您也可以使用变量进行检查:
stages:
- deploy
deploy:
stage: deploy
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
when: manual
before_script:
- apt-get update && apt-get install sshpass && apt-get install make
- chmod 400 $SSH_KEY
script:
- sshpass -p $SSH_PASS ssh -o "StrictHostKeyChecking=no" $USER_NAME@$HOST "cd /home/backend && git pull && make docker-restart"
可以在此处找到 GitLab 预定义变量的完整参考。