我有一个由Jenkins触发的构建脚本。 第一个Jenkins将从repo(Bitbucket)获得最新版本,然后它将启动构建脚本。 现在,如果构建脚本以“发布”模式启动,脚本将对某些文件进行更改(以跟踪版本号和构建日期,并在repo上创建标记) 需要将这些更改推回到远程仓库。
我该如何实现? 构建需要几分钟,因此如果有人在构建期间推送到远程仓库,则推送将失败,因为首先需要合并。如果不是这种情况,合并将失败,因为没有任何东西可以合并......
答案 0 :(得分:10)
考虑让Jenkins在自己的命名分支中执行提交。这有很多优点 - 最大的问题是詹金斯从不担心其他人推动改变release
分支 - 只有詹金斯会。您的Jenkins构建脚本可能如下所示:
hg clone --updaterev release http://path/to/repo
hg merge default || true # merge the latest from master
...build here...
hg commit -m "Auto commit from Jenkins for build $BUILDNUMBER" || true
hg tag build_$BUILDNUMBER
hg push
通过这样的设置,您将获得一些优势:
请注意,|| true
告诉Jenkins不要使用非零退出代码进行构建失败(如果没有要合并的东西),也不要提交任何内容。
而不是每次只能hg pull ; hg update -C release
克隆新鲜,但对于合理大小的回购,我喜欢以保证清洁的方式开始。