2017-07-28 178 views
1

好的,所以我看到很多這類問題沒有真正的答案,而是反對它的警告。所以我明白爲什麼這樣做會很煩人/危險,並且考慮過這些事情。但是,隨着我的團隊項目/管理層的建立(至少現在是如此),對於我們來說,當某人提交併且Jenkins檢測到,拉取以及構建/修改時,能夠撤消對BitBucket的提交是非常合理的。測試失敗。有沒有插件/方式來做到這一點?在Jenkins上構建/測試失敗時的回滾提交

回答

1

它足夠容易去除但是HEAD從分支提交,你真的不能安全的幾個原因這樣做在詹金斯的工作。

第一個原因是,你可能不處理單個提交。根據jenkins的配置情況(例如等待perioud),一個jenkins工作可能會包含多個提交。另外,用戶可能一次推送多個提交。

其次,沒有保證的承諾是開始詹金斯仍然會在HEAD當詹金斯已完成執行。所需要的只是在Jenkins執行期間有人推動,現在你將不得不嘗試一個更復雜的rebase,如果沒有人爲干預,這可能是不可能的(特別是因爲默認情況下,你不能自動重定義合併提交)。

我強烈的建議是,而不是試圖從你的主人刪除提交/開發分支考慮,而不是擁抱如下模式:像gitlabs負責合併到主。然後,您可以在jenkins中設置一個多分支管道作業,自動生成分支並配置gitlabs以防止合併,只要jenkins作業失敗。這個想法是你爲每個任務創建一個分支,然後jenkins將master合併到你的分支,並在你提交一個pull請求時建立它。只有這個構建成功後,才允許你合併到master中。

https://about.gitlab.com/2014/09/29/gitlab-flow/

0

如其他答案描述,更容易前檢查後比。

其實還有另一個想法。它基本上重複了手動合併。如果有人能夠成功實施它,並分享他們的經驗,那將會很好。

  1. 開發人員從未直接推送到master。 (*)
  2. 新的內容推到master-rc,這始終是從master一個快進。他們可以直接從合併開發者的推拉請求中,在評論和一些預先檢查之後推送。 (**)
  3. 你的CI讀取特定從當前master-rc提交A並測試它是否建立,測試通過等
  4. 如果所有的檢查都成功,則構建構件被存儲,master快進到A。然後回到步驟3
  5. 如果檢查失敗,master-rc重置爲master,和什麼用作者們大概有故障通知。然後返回到步驟3.(***)

這樣,您始終確信master可以構建 - 因爲它已經構建完畢。 (*)除特殊情況外,應取消生成中,master-rc重設爲新的master,如出現錯誤。或者,如果你需要這個,那麼你的master就壞了,你應該停止步驟2-6直到解決。 (**)有一個選擇 - 要麼他們獨立於構建週期來完成,並且總是可能有一些新的內容超過master-rc - 請參閱下一個項目。或者他們等到週期開始。後者更方便,當有拉取請求時可以自動合併,因爲有需要並且批准合併。 (***)如果master-rc中有更多內容比失敗,它可以與失敗一起丟棄,以便作者可以重新綁定它。或自動重新發布,但這已經是一些複雜化了。

相關問題