在持续集成中自动化 Git 合并,但如果存在合并冲突则失败
Automate Git merge in continuous integration but fail if there are merge conflicts
我所在的团队想使用持续集成来自动合并两个 git 分支。但是,如果存在合并冲突,我们希望持续集成作业失败,以便开发人员可以 运行 手动合并并解决任何问题。
有没有人有过这种设置的经验(最好是使用 TeamCity,但任何 CI 服务器都会很有趣)?
这可以在 TeamCity 中使用自动合并构建功能来实现
合并只会在构建成功后执行,但如果在合并过程中有任何冲突,随后构建将失败。
可以在此处找到更多详细信息 - TeamCity Documentation
希望对您有所帮助。
我不久前写了一个 bash 脚本来执行此操作。实际上,完整的脚本会在我们的 github 仓库中为 所有 打开带有 test
标签的 PR 执行此操作。
相关位:
try_merge()
{
test -n ""
local branch= commit
if ! commit=$(git rev-parse --verify -q $branch)
then
error bogus $branch
return
fi
if bash -c 'set -o pipefail; git branch --contains '$commit' | grep -qw master'
then
warning already $branch
return
fi
if git merge --ff-only $branch $commit
then
good fast $branch $commit
return
fi
if git merge $branch $commit
then
good merge $branch $commit
return
fi
git merge --abort
error abort $branch $commit
return
}
我所在的团队想使用持续集成来自动合并两个 git 分支。但是,如果存在合并冲突,我们希望持续集成作业失败,以便开发人员可以 运行 手动合并并解决任何问题。
有没有人有过这种设置的经验(最好是使用 TeamCity,但任何 CI 服务器都会很有趣)?
这可以在 TeamCity 中使用自动合并构建功能来实现
合并只会在构建成功后执行,但如果在合并过程中有任何冲突,随后构建将失败。
可以在此处找到更多详细信息 - TeamCity Documentation
希望对您有所帮助。
我不久前写了一个 bash 脚本来执行此操作。实际上,完整的脚本会在我们的 github 仓库中为 所有 打开带有 test
标签的 PR 执行此操作。
相关位:
try_merge()
{
test -n ""
local branch= commit
if ! commit=$(git rev-parse --verify -q $branch)
then
error bogus $branch
return
fi
if bash -c 'set -o pipefail; git branch --contains '$commit' | grep -qw master'
then
warning already $branch
return
fi
if git merge --ff-only $branch $commit
then
good fast $branch $commit
return
fi
if git merge $branch $commit
then
good merge $branch $commit
return
fi
git merge --abort
error abort $branch $commit
return
}