2013-10-19 81 views
2

我有一個託管在BitBucket中的rails項目,並且我正在使用CloudBees作爲測試和部署環境。讓詹金斯(Cloudbees)只在特定分支上進行更改

我在我的Jenkins工作中寫了一個shell腳本,它基本上爲我做了一切。我把它作爲BitBucket中的後提交鉤子觸發。

問題是,目前,它所做的一切都太頻繁,我只希望在我的主分支中進行提交時運行此作業。現在如果沒有檢測到變化,它也會建立起來。

有沒有辦法要麼:

  • 只有當一個變化到一個特定分支的有無到位桶鉤?
  • 如果找不到更改,Jenkins會中止URL觸發的構建嗎?
  • 讓我的shell腳本來處理它,通過以一種告訴Jenkins放棄並刪除構建的方式退出?

回答

2

Github插件支持此用例,因爲它使用傳入通知有效負載來檢測新提交,查找受影響的作業並觸發它們。 BitBucket上沒有這樣的選項,因爲觸發器只運行特定的工作,沒有上下文信息。

我認爲是時候讓詹金斯社區創建一個bitbucket插件。我會在業餘時間對此進行調查。

1

我創建了一個有點麻煩,但仍然令人滿意的解決方案,這個問題:一個單獨的工作,檢查是否應該觸發部署工作。

  1. 創建一個單獨的檢查工作,不檢查任何SCM項目,可以通過URL來觸發,如果成功完成後運行部署工作只
  2. 使用下面的腳本,改變

詹金斯shell腳本

[ $(git ls-remote [email protected]:a/b.git master | cut -f1) == $(git ls-remote [email protected]:c.git master | cut -f1) ] && exit 1 
exit 0 

此版本在供應鏈管理和生產進行比較,而不檢查出任何的源代碼。

如果您不使用Git進行部署,則可以將當前主散列寫入生產計算機上的文件系統,並檢查其內容以查看您的構建是否需要更新。