这个标题几乎是不言自明的。
总而言之,如果构建成功,我希望将一个分支(即开发) merge 到另一个分支(即生产)。
最佳答案
我尝试了@jakub-kania 解决方案,但我总是得到 id_rsa invalid format
。我认为 gitlab secret 变量不知何故搞砸了。
我通过直接将部署 key 传递到 ssh-add 而不创建 ssh key 来使其工作。这是工作解决方案:
merge to master:
stage: deploy
image: alpine
only:
- dev-branch
before_script:
- apk add --update git openssh-client
- mkdir ~/.ssh
- ssh-keyscan -p 2222 <gitlab.domain.com> > ~/.ssh/known_hosts
- eval `ssh-agent -s`
- ssh-add <(echo "$GITLAB_DEPLOY_KEY")
- ssh -T git@<gitlab.domain.com> -p 2222
- git config --global user.email "$GITLAB_USER_EMAIL"
- git config --global user.name "$GITLAB_USER_ID"
- git remote set-url origin ssh://git@<gitlab.domain.com>:2222/path/to/repo.git
script:
- git checkout master
- git reset --hard origin/master
- git merge $CI_BUILD_REF
- git push origin master
关于git - 如何使 Gitlab runner 将代码 merge 到成功构建的分支中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42113402/