git - 如何使 Gitlab runner 将代码 merge 到成功构建的分支中

标签 git merge gitlab gitlab-ci-runner

这个标题几乎是不言自明的。

总而言之,如果构建成功,我希望将一个分支(即开发) 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/

相关文章:

docker - 容器名称已被容器使用 - gitlab ci

spring-boot - GitLab CI:Spring Boot依赖于另一个项目

git - AWS Elastic Beanstalk + Git 子模块

git - 在 Jenkins 中,如何将项目 check out 到特定目录(使用 GIT)

git - Git 中的提交是否代表存储库的状态?

git - 通过 ssh 或 https 自动访问 git 子模块

git - SourceTree git "clone from url"给我 fatal error

c++ - 合并 a 和 b 的 vector

sql - 如何获取可能在两行之一中找到的值的计数

R 中的 R 绑定(bind)和合并