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

Lev*_*ler 5 azure-devops azure-pipelines-build-task azure-pipelines

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

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

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

任务 1 - 配置脚本 (Bash)

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

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

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE $(CONTAINER_PORT)
...
Run Code Online (Sandbox Code Playgroud)

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

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 81
...
Run Code Online (Sandbox Code Playgroud)

任务 3 - 提交脚本 (Bash)

echo "Port should be set to: $CONTAINER_PORT"
Run Code Online (Sandbox Code Playgroud)

任务 3(输出)

Port should be set to: 8080
Run Code Online (Sandbox Code Playgroud)

太棒了;正确的$CONTAINER_PORT值可以在将来的脚本任务中访问,但不能在File Creator需要文件内容的任务中访问。

文件创建器示例: 文件创建者

jes*_*ing 0

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

echo "##vso[task.setvariable variable=CONTAINER_PORT]$containerPort";
Run Code Online (Sandbox Code Playgroud)

应该:

echo "##vso[task.setvariable variable=CONTAINER_PORT;]$containerPort";
                                                    ^
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

1167 次

最近记录:

4 年,5 月 前