У меня есть конфигурация 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 можно найти здесь.