首页 > 解决方案 > 在 Docker 构建步骤中使用修订变量

问题描述

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

2019-01-14T21:42:24.4149933Z ##[error]invalid argument "wp/imagename:0.6$(rev:.r)" for "-t, --tag" flag: invalid reference format 2019-01-14T21 :42:24.4160700Z ##[错误]参见'docker build --help'。2019-01-14T21:42:24.4274219Z ##[error]/usr/bin/docker 失败,返回码:125

似乎没有发生变量替换,看起来它正在使用 Qualify 图像名称选项和小写 R 运行它。其他人可以使用该$(Rev:.r)变量吗?

不管我在哪里尝试使用该变量,我都可以在 Image Name 选项或 Arguments 选项中使用它,它会给我同样的错误。

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

标签: dockerazure-devops

解决方案


如果不进行解析,您将无法仅获得“修订号”,它不会作为单独的字段存储在某处。该$(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")

在你的码头使用$revision变量:

-t wp/imagename:0.6$(revision)

推荐阅读