一千萬個為什麽

搜索

monorepos的創建和觸發各種管道的最佳實踐是什麽?



根據這篇文章,monorepo包含不同的項目。觸發不同管道的最佳實踐是什麽?

當前的git倉庫包含以下項目:

╔═════════════╗
║ projects    ║
╠═════════════╣
║ A           ║
║ B           ║
║ C           ║
║ D           ║
║ E           ║
╚═════════════╝

There are three different pipelines, i.e. x, y and z

如果monorepo中的某個項目發生變化,則應觸發不同的管道,即:

If a commit is done in folder a then pipeline x should be triggered (a --> x). If a change occurs in directory b or c then pipeline y should be run (b || c > y) and if either d or dir e changes then pipeline should start running (d || e > z).

如何實現這一目標?大多數CI由存儲庫中的變化觸發,例如,一個承諾回購,並且管道被觸發。有一對一的關系。如果將其轉換為monorepo,則意味著1個更改會導致3個管道觸發器,而在某些情況下,只應觸發1個管道。

轉載註明原文: monorepos的創建和觸發各種管道的最佳實踐是什麽?

一共有 1 個回答:

如果這被翻譯成monorepo,那意味著1個結果變化   在3個管道觸發器中,而在某些情況下,只有1個管道應該是   觸發。

我一定會將這一點進一步考慮。使用monorepo最引人註目的原因之一是它不會對項目進行技術分離。只有邏輯上的分離,唯一的技術區別可能是你的版本(除非你有一個通用的版本號)。這意味著你沒有100%的保證,任何一個項目都不依賴於另一個項目。因此,您的最終管道應該在您的存儲庫中包含所有項目。通過這樣做,您可以保證對一個項目進行更改不會對存儲庫中的任何其他項目產生負面影響(以最長時間構建,發布等的項目為代價)。

話雖如此,如果您想要單獨運行管道中的某些步驟(lint,語法,編譯等),大多數CI都應該有一種方法來篩選特定文件夾/項目的回購。如果沒有,並且您仍然不想針對所有項目運行,則可能需要考慮將存儲庫重構為單獨的回購站或更改CI工具以符合您的工作流程。