在大型企業裏維護多分支流水線

本文首發於:Jenkins 中文社區安全

原文連接    做者:Aytunc BEKEN工具

在大型企業裏維護多分支流水線

若是沒有適當的解決方案,在大型企業可能難以建立和維護多分支流水線ui

jenkins-multi-branch-pipeline

Jenkins 是 DevOps 領域裏很是好的 CI/CD 工具,它憑藉其獨特的功能,幾乎能夠知足你一切的的業務要求。其中一個獨特的功能是多分支流水線(Multi-branch 流水線),能夠動態配置流水線。可是,隨着公司的發展,單獨的多分支流水線並不能徹底知足你的全部需求,特別是在涉及大型企業時,你須要考慮流水線的集中管理,治理,穩定性,限制和安全性等其餘事項。所以對於具備 Jenkins 流水線的大規模 CI/CD 環境,你須要添加以前沒有想到的更多功能。插件

動態配置流水線

當一個開發人員建立一個新分支並將其推送到遠程代碼倉庫時,Jenkins 會爲這個新分支動態建立流水線。根據代碼倉庫,甚至也能夠做爲動態建立 Pull Request 流水線。這個動態功能在使用 Feature 分支或其餘相似功能的團隊中很是有用,因爲本文的主題不是多分支流水線,你能夠在端到端多分支流水線項目建立中找到詳細信息和一些示例。3d

流水線即代碼

在多分支流水線中,腳本存儲在項目代碼倉庫中,這就是「流水線即代碼」的概念。此外,當你擁有小型開發人員團隊或項目沒有大量分支時,它很是有用。這樣,開發人員能夠根據須要更改流水線,將更改推送到分支,並當即看到更改生效,但對於擁有數百或數千名擁有大量項目的開發人員的大型企業而言,這種方案就完成不可行了。cdn

集中式庫

當你的團隊或項目增長時,是時候考慮一種方法,好比經過共享的的方式應該在全部項目中。從長遠來看,這種「集中式庫」變得很是關鍵,由於隨着規模的擴大,流水線中出現了新的要求或變化,在這種狀況下,手動更改每一個流水線或腳本對管理員來講將是一場噩夢。所以,若是你在一個地方進行更改而且每一個流水線都獲得更新,那麼擁有該集中式庫將更加實用。這是 Jenkins 共享庫概念的用武之地。有關詳細信息,你能夠訪問該站點blog

即便你只有一個流水線,仍然可使用集中式庫。ip

治理與穩定

若是你的團隊有對 CI/CD 必定了解的開發人員,而且你確信他們不會作出重大更改或編寫腳本錯誤致使影響環境的穩定性,那麼將流水線腳本放在代碼中是很好的。可是,你真的肯定嗎?開發

有人極可能會意外刪除流水線文件或者可能出現小錯誤,這些小錯誤都會影響 CI/CD 的穩定性。若是你在早期發現這些錯誤時很容易解決這些錯誤,若是沒有,這些微小的變化或錯誤將可能比你想象的更嚴重的影響 CI/CD,它將被傳播到不一樣項目中的全部分支或 tag,這會變得很難解決。rem

你須要將正確的流水線腳本推送到全部分支和/或代碼倉庫,或是要求每一個開發人員提取最新的腳本,這種類型的問題集中式庫這種更高級的方式來解決,除此以外,你的環境會由於有人可能會刪除 Jenkins 文件或輸入一些拼寫錯誤帶來風險。

遠程文件插件

爲了消除沒必要要的更改的風險並下降使用的庫的複雜性,咱們須要以某種方式將流水線腳本與項目/代碼代碼倉庫分開,同時仍繼續使用多分支流水線功能。爲此,咱們有遠程文件插件

這個插件使多分支流水線可以從其餘代碼倉庫運行/加載流水線腳本,而不是將它們放在項目/代碼代碼倉庫中,經過這個功能,你能夠擁有一個單獨的代碼倉庫,你能夠在其中放置全部流水線腳本,而且只能爲你本身提供訪問權限。這樣,你將擁有與集中式庫相同的集中式流水線腳本代碼倉庫。此外,你能夠將流水線腳本存儲在集中式庫自己中。

這個功能的好處是除了有訪問權限的人以外,沒有人可以在流水線腳本中進行更改。你在集中流水線腳本中所作的任何更改都將影響使用該腳本文件的全部多分支流水線。這樣,你無需等待全部開發人員獲取更新版本或將腳本推送到全部代碼倉庫上的全部分支。

另外一個好處是,若是你將集中式流水線腳本放入 BitBucket 或 GitHub 等代碼倉庫中,你還將擁有代碼審查功能。這樣,你能夠與其餘人共享代碼倉庫,同時仍可限制或查看其餘人所作的更改。

結論

在大型企業中建立 CI/CD 流水線並不容易,你須要考慮治理,限制,穩定性和安全性等概念。在此上下文中,藉助 Jenkins 的其餘功能,Remote File Plugin 提供了一個獨特的功能,用於集中,維護和共享流水線腳本。

有關插件的詳細信息,你能夠訪問插件的 Wiki 頁面。

相關文章
相關標籤/搜索