Jin*_*ark 18 git gitlab gitlab-ci
在我的 gitlab 项目中有 3 个主要分支:develop、stage 和 master。
每次将更新的代码推送到开发分支时,我都必须将其合并到阶段分支,然后再次手动将其合并到主分支。
这看起来效率不高。
有没有办法在不冲突的情况下自动合并分支?
此外,可以使用名为“gitlab-ci.yml”的文件进行自动合并,例如
# merge develop branch to stage branch
merge-to-stage:
only:
- develop
script:
- merge (develop) to (stage) << something like this
# merge stage branch to master branch when the job above is completed
stage-to-master:
only:
- stage
script:
- merge (stage) to (master) << something like this
Run Code Online (Sandbox Code Playgroud)
请给我您的好意建议。
pix*_*ets 21
GitLab 中无法自动执行此操作。但您可以使用 GitLab CI 自动化此操作。
请注意,GitLab CI Runner 独立于 GitLab,仅获取 Git 存储库的本地副本。所以你的 CI 脚本将无法开箱git merge即用地运行。git push
您需要做的是设置从 GitLab CI Runner 到您的 GitLab 实例的 SSH 连接。before为此使用脚本。StackOverflow上有几个答案,GitLab 上有一篇很好的博客文章如何实现这一目标。
merge-job:
before_script:
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- eval $(ssh-agent -s)
- ssh-add <(echo "$GIT_SSH_PRIV_KEY")
- mkdir -p ~/.ssh
- cat gitlab-known-hosts >> ~/.ssh/known_hosts
Run Code Online (Sandbox Code Playgroud)
然后运行 Git 命令,例如git merge. 然后推。
merge-to-stage:
only:
- develop
script:
# If this is the last job you can stay here, otherwise better clone the repo into a working directory
# git clone <URL> <working-directory> && cd <working directory>
- git checkout stage
- git merge develop
- git push origin stage
Run Code Online (Sandbox Code Playgroud)
您的下一个管道作业的架构取决于您对when there is no conflict. 在示例代码中,您将所有阶段分支合并到更高的分支(要开发的功能、开发到阶段、阶段到主分支)。如果是这样,那么您应该确保每个阶段都有一个合并作业,并且这些合并作业放置在管道的末尾。如果之前存在 CI 错误或合并冲突,则合并不会发生。
或者,您也可以只从事一项工作,该工作使用 GitLabs推送选项。使用这些选项,您可以为功能分支创建合并请求,当 CI 管道成功时,这些请求会自动合并并关闭。此策略只会合并您的功能分支更改,而不是整个阶段分支。
merge-to-stage-branches:
only:
- <feature branch names that are no WIP anymore>
script:
# <scripts to merge feature into develop>
git push -o merge_request.create -o merge_request.target=develop -o merge_request.merge_when_pipeline_succeeds
# <repeat merge for each stage branch>
# <repeat push for each stage branch>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19323 次 |
| 最近记录: |