2013-10-24 51 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時間克隆新鮮的,但對於合理的規模回購我喜歡開始瓦特/保證乾淨的石板。