提问人:SMendi 提问时间:11/16/2023 最后编辑:SMendi 更新时间:11/16/2023 访问量:44
要在 Azure DevOps 管道的 docker 任务中使用的自定义 BuildNumber
Custom BuildNumber to be used in docker task in Azure Devops pipeline
问:
在我的主管道中,我定义了管道运行的 BuildNumber/Build Name:
name: $(Date:yyyyMMdd).$(Rev:r)_Bugfix_for_workitem_$(work_item)
appendCommitMessageToRunName: false
Then I used this template
steps:
- ${{ if ne(parameters.ContainerRegistry, '') }}:
- task: Docker@2
displayName: 'Docker Build'
inputs:
command: build
containerRegistry: ${{parameters.ContainerRegistry}}
dockerfile: ${{parameters.DockerFile}}
buildContext: $(Build.SourcesDirectory)
repository: ${{parameters.Repository}}
arguments: --build-arg FEED_ACCESSTOKEN=$(VSS_NUGET_ACCESSTOKEN)
tags: |
latest
$(Build.BuildNumber) --- #This is working
echo "$(echo $(Build.BuildNumber) | cut -d'_' -f1)" --- Not working , ##[error]ERROR: invalid tag "***.azurecr.io/:echo \"$(echo 20231116.1_Generic_for_workitem_$(work_item) | cut -d'_' -f1)\"": invalid reference format
在第三个标签中,我的目标是只提取日期和修订号,如 20231116.1,并去除剩余的名称 Bugfix_for_workitem$(work_item) 并将其用作 docker 任务中的标签。
问题是 docker 任务似乎不能直接执行 shell 命令。 如果我在 shell 命令或任务中使用此行,它能够去除名称。 echo “$(echo $(Build.BuildNumber) |切 -d'_' -f1)”
答:
0赞
Dou Xu-MSFT
11/16/2023
#1
从Docker@2任务中的输入来看,默认值为 $(Build.BuildId)。恐怕标签应该是字符串而不是shell命令。tags
如果要自定义标签,可以在脚本中设置变量,然后在下面的 docker 任务中使用。
例
- task: Bash@3
inputs:
targetType: 'inline'
script: |
echo "##vso[task.setvariable variable=customBuildNumber;]"$(echo $(Build.BuildNumber) | cut -d'_' -f1)""
- task: Docker@2
displayName: 'Docker Build'
inputs:
command: build
containerRegistry: ${{parameters.ContainerRegistry}}
dockerfile: ${{parameters.DockerFile}}
buildContext: $(Build.SourcesDirectory)
repository: ${{parameters.Repository}}
arguments: --build-arg FEED_ACCESSTOKEN=$(VSS_NUGET_ACCESSTOKEN)
tags: |
$(customBuildNumber)
希望能有所帮助。
评论
0赞
Dou Xu-MSFT
11/20/2023
嗨,SMendi,很高兴知道答案可以帮助您解决此问题。如果可能的话,您也可以接受答案,这将帮助其他有相同问题的用户。
评论