簡體   English   中英

Jenkins Build管道和並行作業的問題

[英]Problems with Jenkins Build pipeline and parallel jobs

背景

我將Jenkins與Build Pipeline插件一起使用來構建一些相當復雜的項目,這些項目需要多個編譯步驟:

  1. 構建源RPM。
  2. 構建二進制RPM(此操作執行兩次,每個平台執行一次)。
  3. 部署到YUM存儲庫。

我解決構建要求的策略包括將普通工作分成參數化的工作,這些工作可以在項目和分支之間重復使用,每個工作代表管道中的一個階段。 每個階段都由參數觸發,並生成工件傳遞到管道中的下一個作業。 但是,我在使用此策略時遇到了麻煩,確實可以使用一些技巧來盡可能以最優雅,最靈活的方式解決此問題。

更具體地說,有兩個公共庫,它們由其他項目(但不是所有項目)共享。 庫的構建與從屬項目不同,但是不必在詹金斯中指定什么是從屬項目。

有多個分支,主分支(每晚重建),開發分支(輪詢更改),功能分支(也輪詢)和發布分支(輪詢,但為發布而構建)。 在多個項目中以相同的方式構建分支。

我們每個月都會創建多個存儲庫,雖然可以期望為新項目進行一些設置,但總的來說,我們希望它盡可能簡單和自動化。

問題所在

  1. 我有許多具有多個分支的項目,並且我不希望以相同的方式構建所有分支甚至所有項目。 因為大多數構建步驟都是相似的,所以我可以將這些通用步驟轉換為參數化的構建作業,並讓每個作業觸發鏈中的下一個,沿着鏈傳遞參數和構建工件。 但是,如果需要跳過其中一個步驟,這會分崩離析,因為我不知道有條件地跳過構建步驟的方法。 這意味着我將需要復制構建作業,以便可以為每個管道自定義它們,從而導致大量的構建作業。 我可以使用插件的組合來創建作業生成器(例如dsl流,dsl作業等),並向用戶盡可能多地隱藏,但是最完美的Jenkins解決方案是什么? 有沒有我可能錯過的插件或示例? 您的經驗是什么?

  2. 由於步驟2可以分為兩個可以並行運行的作業,因此引入了復雜性,這使我的管道出現問題。 我的第一次嘗試將使用不同的參數觸發兩次參數化的構建作業,然后再使用join插件將其加入作業,但是從兩個上游作業中復制構建工件看起來似乎很復雜。 這很重要,因為在階段3中,我需要這兩個作業都需要構建構件。什么是結合並行作業並從所有作業中復制構件的最佳解決方案? 有沒有我可能會錯過的例子?

  3. 我需要合並從階段2的兩個作業生成的測試結果,並將它們復制到觸發構建的作業中。 處理此問題的最佳方法是什么?

我很高興閱讀文章,演示文稿,技術文章,參考文檔,編寫腳本以及使它正常運行所需的其他任何東西,但我不是詹金斯專家。 如果有人可以針對這3個問題給我一些建議,那將有所幫助。 此外,如果有相關的建議,我將對如何在Jenkins中充分利用管道CI的建設性建議表示贊賞。

對於第一點,我編寫的Job Generator插件已經開發出來,可以解決這種用例。 您可以在Job Generator的Wiki頁面上找到更多信息。 還有一種具有不同方法(工作生成器作為構建步驟)的相同類型的插件,稱為Jobcopy Builder 您提到的其他方法需要某種DSL,也可能是不錯的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM