在脚本中设置任务组变量不会更改其值

时间:2018-10-16 22:24:52

标签: azure-devops azure-pipelines azure-pipelines-build-task

如何确保任务组变量已更新且可以在非脚本任务中访问?

在任务组中,在脚本中设置了CONTAINER_PORT变量之后,该变量在以后的脚本任务中可用,但是当通过$(CONTAINER_PORT)访问它时,将返回原始任务组变量值。 / p>

例如使用任务组创建构建后,由于默认情况下需要所有任务组变量,因此我必须将CONTAINER_PORT设置为81

任务1-配置脚本(重击)

containerPort=8080
if [ $(framework) == 'dotnet' ]; then containerPort=80; fi;
echo "##vso[task.setvariable variable=CONTAINER_PORT]$containerPort";

任务2-生成Dockerfile(文件创建器)

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE $(CONTAINER_PORT)
...

任务2(输出)-我希望在这里EXPOSE 8080

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 81
...

任务3-提交脚本(重击)

echo "Port should be set to: $CONTAINER_PORT"

任务3(输出)

Port should be set to: 8080

tldr;在以后的脚本任务中可以访问正确的$CONTAINER_PORT值,但在需要文件内容的File Creator任务中则不能访问。

文件创建器示例: File Creator

1 个答案:

答案 0 :(得分:0)

您的命令字符串缺少 ; 并且代理很挑剔:

echo "##vso[task.setvariable variable=CONTAINER_PORT]$containerPort";

应该是:

echo "##vso[task.setvariable variable=CONTAINER_PORT;]$containerPort";
                                                    ^