【把玩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


<<:  Day25 React Router useParams

>>:  Day 25 - 重覆呼叫shioaji.Shioaji()产生的记忆体问题-修正篇

Day 17:700. Search in a Binary Search Tree

今日题目 题目连结:700. Search in a Binary Search Tree 题目主题...

30天完成家庭任务平台:第二十七天

驻列的目的是希望在幕後执行耗时的工作来加快反应时间,对於不熟悉驻列的人,Laracast一开始提供小...

【Day7】:GPIO输入输出(下)

昨天讲完了基本的输入输出模式,而事实上输出有分成两种,开漏输出与推挽输出,我们来实际看一下这两种模式...

Laravel 实战经验分享 - Day30 回头看看,以及未来要干嘛

到了铁人赛最後一天,其实自己一开始就从没设想如果完成了铁人赛会有什麽样的心情,只想着就算没梗没题材,...

Explain详解(优化查询好帮手)-Part2(possible_keys、key、key_len、ref、rows、filtered、Extra、Json格式的执行计画)

此篇为前篇的延续唷! 方便阅读再贴一次基本的explain及测试表 mysql> explai...