如何使用 GitLab CI/CD 觸發(fā)多項(xiàng)目管道

持續(xù)集成(CI)是在將代碼合并到master分支之前自動(dòng)進(jìn)行代碼構(gòu)建和測(cè)試的實(shí)踐。這使開發(fā)人員可以及早的發(fā)現(xiàn)錯(cuò)誤和頻繁地合并代碼,同時(shí)降低了將新錯(cuò)誤引入主源代碼存儲(chǔ)庫(kù)的風(fēng)險(xiǎn)。
代碼運(yùn)行CI之后,在實(shí)時(shí)環(huán)境中部署和運(yùn)行測(cè)試很重要。從CI過(guò)渡到持續(xù)交付和部署(CD)是DevOps成熟的下一步。再次部署然后進(jìn)行測(cè)試,可以將一個(gè)項(xiàng)目中的代碼與其他組件和服務(wù)一起進(jìn)行測(cè)試,而其他組件和服務(wù)可以在其他項(xiàng)目中進(jìn)行管理。
為什么需要驗(yàn)證代碼關(guān)聯(lián)的其他組件 ?
一個(gè)很好的例子可能是微服務(wù)架構(gòu)。通常,在不同的項(xiàng)目中管理不同的微服務(wù)-每個(gè)微服務(wù)都有自己的存儲(chǔ)庫(kù)和管道。不同的團(tuán)隊(duì)負(fù)責(zé)不同的微服務(wù)及其管道配置也很常見。作為開發(fā)人員,您將需要確認(rèn)您的代碼更改不會(huì)破壞從屬微服務(wù)的功能。因此,除了項(xiàng)目測(cè)試之外,您還需要在那些微服務(wù)上執(zhí)行測(cè)試。
跨項(xiàng)目管道
在運(yùn)行項(xiàng)目管道時(shí),您還希望觸發(fā)跨項(xiàng)目管道,該管道最終將部署并測(cè)試所有相關(guān)微服務(wù)的最新版本。為了實(shí)現(xiàn)此目標(biāo),您需要一種簡(jiǎn)單,靈活和方便的方式來(lái)觸發(fā)其他管道,并將其作為項(xiàng)目CI的一部分。通過(guò)在CI配置文件中簡(jiǎn)單地添加觸發(fā)作業(yè),GitLab CI/CD提供了這種運(yùn)行跨項(xiàng)目管道的簡(jiǎn)便方法。
GitLab CI/CD配置文件
在GitLab CI/CD中,在每個(gè)項(xiàng)目的.gitlab-ci.yml文件中定義了管道及其組件作業(yè)和階段。該文件是項(xiàng)目存儲(chǔ)庫(kù)的一部分。它具有完整的版本,開發(fā)人員可以使用他們選擇的任何通用IDE對(duì)其進(jìn)行編輯。他們是自助服務(wù),因此不必要求系統(tǒng)管理員或DevOps團(tuán)隊(duì)對(duì)管道配置進(jìn)行更改。該.gitlab-ci.yml文件定義管道的結(jié)構(gòu)和順序,并確定使用GitLab Runner(運(yùn)行作業(yè)的代理)執(zhí)行哪些操作,以及在遇到特定條件(例如流程成功或失?。r(shí)做出哪些決定。
添加跨項(xiàng)目管道觸發(fā)作業(yè)
從GitLab 11.8開始,GitLab提供了新的CI/CD配置語(yǔ)法,用于觸發(fā)跨項(xiàng)目管道。以下代碼說(shuō)明了配置bridge作業(yè)以觸發(fā)下游管道:
在上面的示例中,一旦部署作業(yè)在部署階段成功完成,則將啟動(dòng)Android作業(yè)。該作業(yè)的初始狀態(tài)為待定。GitLab將在mobile/android項(xiàng)目中創(chuàng)建一個(gè)下游管道,一旦創(chuàng)建管道,Android作業(yè)將成功。在這種情況下,mobile/android是該項(xiàng)目的完整路徑。
創(chuàng)建上游管道的用戶需要具有對(duì)下游項(xiàng)目(在這種情況下為mobile/android)的訪問(wèn)權(quán)限。如果找不到下游項(xiàng)目,或者用戶無(wú)權(quán)在此處創(chuàng)建管道,則Android作業(yè)將被標(biāo)記為失敗。
從上游管道圖瀏覽到下游
GitLab CI/CD使可視化管道配置成為可能。在下圖中,構(gòu)建,測(cè)試和部署階段是上游項(xiàng)目的一部分。一旦部署作業(yè)成功,將并行觸發(fā)四個(gè)其他項(xiàng)目,您將能夠通過(guò)單擊下游作業(yè)之一來(lái)瀏覽到它們。

在下圖中,可以看到下游管道?,F(xiàn)在,我們可以向左滾動(dòng)到上游管道,向右滾動(dòng)回到下游管道,或者選擇另一個(gè)下游管道。

指定下游管道分支
可以指定下游管道將使用的分支名稱:
使用project關(guān)鍵字指定下游項(xiàng)目的完整路徑。使用branch關(guān)鍵字指定分支名稱。在創(chuàng)建下游管道時(shí),GitLab將使用當(dāng)前在分支的HEAD上的提交。
將變量傳遞到下游管道
有時(shí)您可能想將變量傳遞到下游管道。您可以使用variables關(guān)鍵字來(lái)執(zhí)行此操作,就像定義常規(guī)作業(yè)時(shí)一樣。
ENVIRONMENT變量將傳遞到下游管道中定義的每個(gè)作業(yè)。當(dāng)GitLab Runner選擇工作時(shí),它將作為環(huán)境變量使用。
該.gitlab-ci.yml文件定義CI/CD階段的順序,要執(zhí)行的作業(yè)以及在什么條件下運(yùn)行或跳過(guò)作業(yè)的執(zhí)行。在trigger該文件中添加帶有關(guān)鍵字的"bridge作業(yè)" 可用于觸發(fā)跨項(xiàng)目管道。我們可以將參數(shù)傳遞給下游管道中的作業(yè),甚至可以定義下游管道將使用的分支。
管道可以是具有許多順序和并行作業(yè)的復(fù)雜結(jié)構(gòu)組成,并且正如我們剛剛了解的那樣,有時(shí)它們可以觸發(fā)下游管道。為了更容易理解管道(包括其下游管道)的流程,GitLab提供了用于查看管道及其狀態(tài)的管道圖。
















 
 
 














 
 
 
 