iT邦幫忙

2021 iThome 鐵人賽

DAY 28
0
DevOps

把玩Azure DevOps系列 第 28

【把玩Azure DevOps】Day28 設定Pipeline的識別文字格式

不知道各位在前面建立Pipeline執行之後,有沒有發現Pipeline執行結果列表的識別文字是像下圖的格式?

https://ithelp.ithome.com.tw/upload/images/20211010/200339614J6NMHN9ky.png

https://ithelp.ithome.com.tw/upload/images/20211010/20033961uHXUfkB4uC.png

如上圖的兩張截圖,不是以日期加序號的方式呈現,就是名稱加上序號,這種識別方式在Pipeline多的情況下其實會有些困擾,如果又是像前面文章「CI/CD從這裡:第2個Pipeline,建立共用的Build Pipeline」這種方式建立了共用的Build Pipeline,可以透過執行時輸入變數值的方式來讓Pipeline產生不同的結果時,這時候在識別上就會產生很大的問題,不知道哪一次的執行結果是做了些什麼。

不過這個識別編號的格式其實是可以修改的,下面幾張截圖是修改後的範例:

https://ithelp.ithome.com.tw/upload/images/20211010/20033961dPEUgOcIsE.png

https://ithelp.ithome.com.tw/upload/images/20211010/20033961DWFClTNNlT.png

上面第一張截圖就是共用的Build Pipeline修改後的結果,分別執行了三個不同專案的建置,並且從識別文字中可以看得出來是使用master這個Branch的原始碼來建置的,後面再加上日期和序號,這樣就可以知道哪一次執行是做了什麼動作。

第二張截圖則是Release Pipeline修改後的結果,從原本的Release-1、Release-2的格式內容,修改成了DevOpsAgent-20211010.1,從這樣的識別文字就可以直接知道是哪一個Release pipeline的執行結果,並且是哪個日期執行的,比起Release-1、Release-2這樣的內容看起來要好得多了。

下面就來看看要如何修改Pipeline的識別文字吧!

首先是Build pipeline的部份,因為分成兩種編輯模式(傳統編輯器與YAML),所以修改的方式不太相同,傳統編輯器的修改方式是透過Options頁籤之下的Build number format的欄位進行修改,點擊旁邊的i符號會有提示說明與官網的文件連結(中文/英文):

https://ithelp.ithome.com.tw/upload/images/20211010/20033961Uk8SropeGE.png

以上面共用的Build pipeline執行結果的截圖為例,因為有ProjectName這個變數可供使用者設定,再加上取得Branch名稱的系統預先定義變數為SourceBranchName,日期的部份則是以Date:yyyyMMdd的方式輸出,最後的序列號則是Rev:.r的格式,最終在Build number format的部份就需要輸入:

$(ProjectName)_$(SourceBranchName)_$(Date:yyyyMMdd)$(Rev:.r)

至於同樣是使用Classic editor方式編輯的Release pipeline,同樣也是在Options的頁籤下進行設定,只是欄位名稱改為Release name format,而官網的文件連結也不相同(中文/英文):

https://ithelp.ithome.com.tw/upload/images/20211010/20033961CCngc3Zsjy.png

傳統編輯器有設定欄位可以方便設定,但是YAML格式的Build pipeline要怎麼設定呢?

其實上面在傳統編輯器的部份雖然已經寫出了整個Build number format的設定內容,但是最前面的截圖內容卻不是在傳統編輯器下設定的,因為前面文章「CI/CD從這裡:第2個Pipeline,建立共用的Build Pipeline」所建立的Pipeline是透過YAML格式設定的,所以我只是把設定的內容提前寫出來而已,詳細的YAML如下:

name: $(ProjectName)_$(SourceBranchName)_$(Date:yyyyMMdd)$(Rev:.r)

trigger:
- none

pool:
  vmImage: ubuntu-latest

steps:
- task: DotNetCoreCLI@2
  inputs:
    command: 'build'
    projects: '$(ProjectName)/*.csproj'
    arguments: '-o $(Build.BinariesDirectory)'
- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '$(Build.BinariesDirectory)'
    includeRootFolder: false
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildNumber).zip'
    replaceExistingArchive: true
- task: PublishPipelineArtifact@1
  inputs:
    targetPath: '$(Build.ArtifactStagingDirectory)'
    artifact: 'BuildOutputFiles'
    publishLocation: 'pipeline'

從上面的YAML內容可以看到,設定的地方是在最上面的name的部份,在官網文件上(中文/英文)有提到,在YAML格式是以name這個名稱來設定,並且它是屬於根(root)層級,所以把它放在最上面的一行。

上面的YAML內容中還有一個地方也進行了修改,那就是在壓縮檔案的Task部份也使用了Build.BuildNumber這個變數,也就是我們在最上面的name的部份所設定的格式內容會放入Build.BuildNumber裡面,所以將這個變數值做為我們壓縮後的檔案名稱,最終從下圖也可以看到執行後所上傳到Artifacts中的檔案名稱的變化,以及Pipeline執行結果的識別名稱與之前的差異:

https://ithelp.ithome.com.tw/upload/images/20211010/20033961MIJWIiKTBt.png


上一篇
【把玩Azure DevOps】Day27 Build Pipeline的YAML結構描述:多個Agent Job
下一篇
【把玩Azure DevOps】Day29 再次建立Release pipeline:多個不同Artifacts來源
系列文
把玩Azure DevOps30

尚未有邦友留言

立即登入留言