小烏龜建立新分支 在大型企業裡維護多分支流水線

2021-10-14 19:13:04 字數 1878 閱讀 9612

jenkins 是 devops 領域裡非常好的 ci/cd 工具,它憑藉其獨特的功能,幾乎可以滿足你一切的的業務要求。其中乙個獨特的功能是多分支流水線(multi-branch 流水線),可以動態配置流水線。但是,隨著公司的發展,單獨的多分支流水線並不能完全滿足你的所有需求,特別是在涉及大型企業時,你需要考慮流水線的集中管理,治理,穩定性,限制和安全性等其他事項。因此對於具有 jenkins 流水線的大規模 ci/cd 環境,你需要新增之前沒有想到的更多功能。

當乙個開發人員建立乙個新分支並將其推送到遠端**倉庫時,jenkins 會為這個新分支動態建立流水線。根據**倉庫,甚至也可以作為動態建立 pull request 流水線。這個動態功能在使用 feature 分支或其他類似功能的團隊中非常有用,由於本文的主題不是多分支流水線,你可以在端到端多分支流水線專案建立中找到詳細資訊和一些示例。

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

當你的團隊或專案增加時,是時候考慮一種方法,比如通過共享的的方式應該在所有專案中。從長遠來看,這種「集中式庫」變得非常關鍵,因為隨著規模的擴大,流水線**現了新的要求或變化,在這種情況下,手動更改每個流水線或指令碼對管理員來說將是一場噩夢。因此,如果你在乙個地方進行更改並且每個流水線都得到更新,那麼擁有該集中式庫將更加實用。這是 jenkins 共享庫概念的用武之地。有關詳細資訊,你可以訪問該站點。

即使你只有乙個流水線,仍然可以使用集中式庫。

如果你的團隊有對 ci/cd 一定了解的開發人員,並且你確信他們不會做出重大更改或編寫指令碼錯誤導致影響環境的穩定性,那麼將流水線指令碼放在**中是很好的。但是,你真的確定嗎?

有人很可能會意外刪除流水線檔案或者可能出現小錯誤,這些小錯誤都會影響 ci/cd 的穩定性。如果你在早期發現這些錯誤時很容易解決這些錯誤,如果沒有,這些微小的變化或錯誤將可能比你想象的更嚴重的影響 ci/cd,它將被傳播到不同專案中的所有分支或 tag,這會變得很難解決。

你需要將正確的流水線指令碼推送到所有分支和/或**倉庫,或是要求每個開發人員提取最新的指令碼,這種型別的問題集中式庫這種更高階的方式來解決,除此之外,你的環境會因為有人可能會刪除 jenkins 檔案或輸入一些拼寫錯誤帶來風險。

為了消除不必要的更改的風險並降低使用的庫的複雜性,我們需要以某種方式將流水線指令碼與專案/****倉庫分開,同時仍繼續使用多分支流水線功能。為此,我們有遠端檔案外掛程式。

這個外掛程式使多分支流水線能夠從其他**倉庫執行/載入流水線指令碼,而不是將它們放在專案/****倉庫中,通過這個功能,你可以擁有乙個單獨的**倉庫,你可以在其中放置所有流水線指令碼,並且只能為你自己提供訪問許可權。這樣,你將擁有與集中式庫相同的集中式流水線指令碼**倉庫。此外,你可以將流水線指令碼儲存在集中式庫本身中。

這個功能的好處是除了有訪問許可權的人之外,沒有人能夠在流水線指令碼中進行更改。你在集中流水線指令碼中所做的任何更改都將影響使用該指令碼檔案的所有多分支流水線。這樣,你無需等待所有開發人員獲取更新版本或將指令碼推送到所有**倉庫上的所有分支。

另乙個好處是,如果你將集中式流水線指令碼放入 bitbucket 或 github 等**倉庫中,你還將擁有**審查功能。這樣,你可以與其他人共享**倉庫,同時仍可限制或檢視其他人所做的更改。

在大型企業中建立 ci/cd 流水線並不容易,你需要考慮治理,限制,穩定性和安全性等概念。在此上下文中,借助 jenkins 的其他功能,remote file plugin 提供了乙個獨特的功能,用於集中,維護和共享流水線指令碼。

有關外掛程式的詳細資訊,你可以訪問外掛程式的 wiki 頁面。

ROS小烏龜建立

ros啟動小烏龜 雖然過程還有很多failed沒完全看懂解決,但是還是記錄下來好好修正。以下逐條 實驗 建立ros工作環境 catkin 執行 mkdir p catkin ws src cd catkin ws src catkin init workspace cd catkin ws catk...

在github上建立新分支

在github上建立倉庫 create a new repository on the command line touch readme.md git init git add readme.md git commit m first commit git remote add origin gi...

在github上建立新分支

在github上建立倉庫 create a new repository on the command line touch readme.md git init git add readme.md git commit m first commit git remote add origin gi...