在Docker构建步骤中使用修订版本变量

时间:2019-01-14 21:49:47

标签: docker azure-devops

尝试在我的docker构建步骤(版本1. *)中使用$(Rev:.r)变量进行标记,但似乎不起作用。我总是得到

  

2019-01-14T21:42:24.4149933Z ## [错误]无效的参数   “ -t,--tag”标志的“ wp / imagename:0.6 $(rev:.r)”:无效的引用   格式2019-01-14T21:42:24.4160700Z ## [错误]请参阅'docker build    - 救命'。 2019-01-14T21:42:24.4274219Z ## [错误] / usr / bin / docker失败,返回码:125

似乎没有发生任何变量替换,并且看起来它正在通过Qualify image name选项运行,并使用小写的R。其他任何人都可以使用$(Rev:.r)变量吗?

无论在哪里尝试使用该变量都无所谓,我可以在“图像名称”选项或“自变量”选项中使用它,并且会给我同样的错误。

-t wp/imagename:0.6$(Rev:.r)

2 个答案:

答案 0 :(得分:2)

未经解析就无法获得“修订号”,它不会存储为单独的字段。 $(Rev:.r)部分指示Azure DevOps提出使内部版本号唯一的第一个数字(并在该特定示例中,在其前面加一个点)。仅最终版本号可用。

在解决方法中,在内部版本号的末尾添加$(Rev:.r)(如果没有)。在Docker任务之前添加一个PowerShell脚本任务(您可以内联PowerShell来完成),并将以下代码放入:

$buildNumber = $Env:BUILD_BUILDNUMBER
$revision= $buildNumber.Substring($buildNumber.LastIndexOf('.') + 1)
Write-Host ("##vso[task.setvariable variable=revision;]$revision")

在您的Docker中,使用$revision变量:

-t wp/imagename:0.6$(revision)

答案 1 :(得分:1)

我只能在选项下的内部版本号格式部分中识别它。如果您将其用作内部版本号,是否可以仅在此处设置内部版本号,然后使用$(Build.BuildNumber)进行引用?