【发布时间】:2022-02-16 23:08:48
【问题描述】:
我正在采用Docker-semver compliant 构建模型。
我需要为每个图像构建几个标签,尊重带有可替换标签的 semver 模型。
我使用 Azure DevOps 进行构建。
我创建了一个 Node 脚本,为简洁起见不共享,特别是因为它有效,根据package.json 中的项目版本计算所有标签并将它们写入文件。
我需要将计算的标签传递给 Docker 任务,但我遇到了麻烦。以下涉及为请求的标签设置multiline pipeline variable,并在Docker任务中使用它
- task: CmdLine@2
displayName: Import version into pipeline variable
inputs:
script: echo "##vso[task.setvariable variable=dockerTags;isOutput=true]$(cat dist/docker.tags | sed ':a;N;$!ba;s/\n/%0D%0A/g')"
- task: Docker@2
displayName: Docker build
inputs:
command: build
repository: $(containerRepositoryName)
tags: $(dockerTags)
运行管道时,变量$(dockerTags)没有被正确替换
invalid argument "***/amlc/aml-controlli-fe:$(dockerTags)" for "-t, --tag" flag: invalid reference format
我的 setvariable 任务有什么问题?我将该代码运行到 Docker 容器中,以确保发生替换
/app # echo "##vso[task.setvariable variable=dockerTags;isOutput=true]$(cat dist/docker.tags | sed ':a;N;$!ba;s/\n/%0D%0A/g')"
##vso[task.setvariable variable=dockerTags;isOutput=true]0.1.0-RELEASE%0D%0A0.1-RELEASE%0D%0A0-RELEASE%0D%0Alatest-RELEASE
但显然代理会抑制输出
有什么想法吗?
【问题讨论】:
-
您解决了吗?我有同样的问题
-
我开始使用插件。我的解决方案现在完全不同了
标签: azure-pipelines