前面的文章建立過了Release pipeline,但是那次並沒有加入多個不同的Artifacts來源,不過在前一篇文章中我們修改了Pipeline的識別文字格式,正好這篇就來再建立一個Release pipeline,同時加入不同的Artifact來源吧!
有些前面的步驟在先前的文章就提過了,所以就直接略過,直接看關鍵截圖吧!



從上面的三張截圖中可以看到加入了三個Artifact,分別是Git Repo,裡面放著Dockerfile檔案,建立Docker image的時候會用到;第二個則是從BuildConsoleApp這個Build pipeline取得最新版本的Artifacts;第三個則是從BuildSpecifiedProject這個Build pipeline中取得Artifacts。第二個是直接從最新版本取得,第三個則是讓使用者在建立Release的時候手動從清單中選擇。Build pipeline中取得Artifact的部份必須要在Pipeline中有將檔案上傳到Pipeline的Artifacts,前面文章都有提過喔!
接著來看看Release中的Task內容:


從上面的兩張截圖可以看到內容很簡單,第一張的關鍵在於紅線的地方,也就是前面加入Artifacts的時候設定的名稱,在第二行與第三行後面的BuildOutputFiles這個名稱則是Build pipeline中我們上傳到Artifacts的時候取得資料夾名稱。
第二張截圖則是利用bash來執行docker build的指令,因為在這個Release的Agent部份我指定了使用Self-hosted的Agent,也就是前面文章提到的LinuxContainerAgent(因為Azure試用過期了…),所以等於在Agent裡面執行透過Bash來執行docker指令,這部份就要確定Agent裡面有安裝才行。
最後是在建立Release的時候,可以從下圖看到在Module的部份就可以讓使用者自行選擇要挑選哪一個版本來作為這個Release的檔案了:

這樣在非全自動的情境下,就可以暫時不需要建立太多的Pipeline,尤其是Module很多的時候,每一個都要建立一個Pipeline的話數量也是不少呢!