2013-10-24 42 views
4

我有一个詹金斯触发构建脚本结束善变。 First Jenkins将从回购(Bitbucket)获得最新版本,然后它将启动构建脚本。 现在,如果构建脚本是在“释放”模式启动脚本将修改一些文件(跟踪版本号和构建日期,并创造在回购标签) 这些变化需要被推回了到远程回购。提交数据以构建

我该如何实施? 构建需要几分钟,所以如果有人在生成过程中推到远程回购则是因为第一次需要合并的推动将失败。如果不是这样的合并将失败,因为没有什么合并...

回答

9

考虑让詹金斯做其提交一个名为分支自己的所有。这有很多优点 - 最大的优点是詹金斯永远不必担心别人推动release分支的变化 - 只有詹金斯会。你詹金斯构建脚本可能会是这个样子:

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 

有了这样的设置,你得到一些好处:

  • 失败的版本是不创造新的提交
  • 詹金斯的推总会成功
  • Jenkins的标记提交处于'发布'分支,但仍可从默认分支访问

注意,|| true告诉詹金斯没有失败的合并对非零退出代码版本(如果有任何合并)并没有什么承诺。

而是每次可以只hg pull ; hg update -C release时间克隆新鲜的,但对于合理的规模回购我喜欢开始瓦特/保证干净的石板。