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需要文件内容的任务中访问。
文件创建器示例:

您的命令字符串缺少 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 次 |
| 最近记录: |