鳴人
鳴人

設定Pipeline的識別編號格式

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

Build pipeline修改識別文字前
Release pipeline修改識別文字前

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

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

Build pipeline修改識別文字後
Release pipeline修改識別文字後

上面第一張截圖就是共用的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符號會有提示說明與官網的文件連結(中文/英文):

Classic editor設定Build number format

以上面共用的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,而官網的文件連結也不相同(中文/英文):

Release pipeline設定Release name format

傳統編輯器有設定欄位可以方便設定,但是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執行結果的識別名稱與之前的差異:

原文連結泰克哪裡去

CC BY-NC-ND 2.0 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

加载中…

发布评论