Самое простое решение состоит в том, чтобы сделать запрос на слияние и нажать кнопку «Слияние при конвейере трубопровода», это объединит ветку после сборки. Это я бы рекомендовал.
Ниже приведено рабочее решение, которое я не рекомендую для автоматического слияния. Для этого требуется создать ключ развертывания с доступом для записи и сохранить закрытый ключ в качестве переменной проекта GITLAB_DEPLOY KEY
, а также сделать ssh-keyscan
на сервере и сохранить его в переменной GITLAB_PUBLIC_KEY
.
mergetomaster:
stage: deploy
image: alpine
only:
- dev
script:
- apk add --update git openssh-client
- mkdir ~/.ssh
- echo $GITLAB_DEPLOY_KEY > ~/.ssh/id_rsa
- chmod 400 ~/.ssh/id_rsa
- echo $GITLAB_PUBLIC_KEY > ~/.ssh/known_hosts
// Steal the identity of person that triggered the build
- git config --global user.email "$GITLAB_USER_EMAIL"
- git config --global user.name "$GITLAB_USER_ID"
- git remote set-url origin <ssh-repository-url>
- git checkout master
- git reset --hard origin/master
- git merge $CI_BUILD_REF
- git push origin master
На самом деле теперь есть ключи развертывания с возможностью записи, которые можно использовать для этого. В более ранних версиях это было бы возможно, создав учетную запись пользователя только для этой цели. –