docker - 在 Docker 构建步骤中使用修订变量

标签 docker azure-devops

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

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 ##[error]See 'docker build --help'. 2019-01-14T21:42:24.4274219Z ##[error]/usr/bin/docker failed with return code: 125

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

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

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

最佳答案

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

关于docker - 在 Docker 构建步骤中使用修订变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54189703/

相关文章:

php - 将 docker 容器映射到常规开发域名

docker - 如何修复 Kafka Docker 容器抛出 0.0.0.0/0.0.0.0 :2181: Connection refused?

docker - 如何在 docker 日志中记录 docker 健康检查状态?

scrum - 有没有办法将现有的 "feature"分配给史诗?

tfs - VSTS 释放多行变量

azure - 如何在 azure (AKS) 中的 Kubernetes 集群中附加磁盘

docker -/bin/sh:1:sudo:运行dockerfile时找不到

networking - Docker Swarm Overlay 网络通信

git - Visual Studio Team Explorer 丢失了 Visual Studio Online 的 Git 授权

使用 Terraform 创建 Azure DevOps 代理池