[英]How to update submodules in a gitlab CI/CD
我在以下樹中組織了一個項目
|.
|..
|-- devops
|-- project1
|-- project2
在 devops 文件夾中,我將其他兩個項目作為子模塊包含在內,因為這兩個項目是由兩個不同的團隊獨立開發的。
|.
|..
|-- project1@0deed0fa
|-- project2@0beef0fb
|-- .gitlab-ci.yml
我已經設置了管道來部署項目。 每當任何項目有新的提交時,都會設置一個觸發器來運行devops
項目管道。 作為 devops 作業的一部分,我運行git submodule
命令來獲取和合並。 然后構建。 有用。
我遇到的問題是,在一段時間內,對子模塊進行了很多更改。 每次對任何項目進行提交時,都會重播從最后一個子模塊提交到 devops 項目文件夾的更改。 每月一次,我手動更新devops
項目文件夾並更新到子模塊項目的最新提交。 我可以提交來自 devops 管道任務的更改,但這將在同一個 devops 管道中生成新管道。 (我沒有測試,但看起來很明顯)。
作為 devops 管道的一部分,有什么方法可以將子模塊更新為最新提交?
謝謝。
使用 git 子模塊不是實現集成管道的最佳實踐。 影響深遠的書籍《 持續交付》在“ Only Build Your Binaries Once
(第 5 章)一節中陳述了以下內容:
許多構建系統使用版本控制系統中保存的源代碼作為許多步驟的規范源代碼。 在提交過程中,代碼將在不同的上下文中重復編譯,在驗收測試時再次編譯,[等等]每次編譯代碼時,都會冒引入一些差異的風險。
此外,重新編譯需要花費大量時間,導致反饋周期更長。 建議是:
在構建的提交階段,您應該只構建一次二進制文件。 這些二進制文件應該存儲在某個地方的文件系統中 [...] ,以便在管道的后期階段輕松檢索它們。
按照這種范式,您的工作流程將如下所示:
project1
和project2
的功能分支上工作的開發人員將推送一個提交release
存儲庫請注意源代碼是如何只構建一次的。
有許多流行的二進制存儲庫可用。 大多數都有免費和付費的專業版。 查看他們的網站以獲取更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.