如何确保任务组变量已更新且可以在非脚本任务中访问?
在任务组中,在脚本中设置了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
任务中则不能访问。
文件创建器示例:
答案 0 :(得分:0)
您的命令字符串缺少 ;
并且代理很挑剔:
echo "##vso[task.setvariable variable=CONTAINER_PORT]$containerPort";
应该是:
echo "##vso[task.setvariable variable=CONTAINER_PORT;]$containerPort";
^