azure-devops - Azure Devops Pipeline:定义变量并将其用作另一步骤的任务输入
问题描述
我有 Azure DevOps 发布管道作业,其中包含 4 个任务。
我想在第一个任务中设置环境变量,并将该值用作第二个任务的参数输入:显示名称。
我们可以假设所有 4 个步骤都是 PowerShell 脚本。
任务 1 Powershell:
Write-Host "##vso[task.setvariable variable=myvariable;]abcdefg"
任务 2 Powershell:
任务 2 中的 PowerShell:
Write-Host "$(myvariable)"
如何在任务 1 中设置变量并将其作为任务 2 的输入变量访问?
我的输出是:
Task2 - $(myvariable) 作为显示名称
但 PowerShell 脚本本身的输出是:
abcdefg
解决方案
写入主机“##vso[task.setvariable variable=myvariable;]abcdefg”
那是因为这个脚本创建的变量不是预定义的变量。
作为执行逻辑,在对管道进行排队后,即使脚本没有执行,也可以看到首先显示管道名称、任务名称。因此,如果这些名称使用变量来定义它们,则该变量可以从预定义的变量中获取值。因为管道/任务名称中变量值的编译总是先于执行的脚本。
另外,task中的脚本只是创建了一个脚本变量,这个脚本变量只存在于Phase的生命周期中,执行后销毁。
如何在任务 1 中设置变量并将其作为任务 2 的输入变量访问?
如您所愿,如果在另一个脚本中获取它,只需使用$(xxx)
or $env:xxx
。但是,对于名称,$()
只能获取预定义的变量值,而不是脚本变量值。
推荐阅读
- excel - 在 Excel VBA 上查找和替换逗号
- swift - 非 void 函数中的 void 函数中出现意外的非 void 返回值
- python-3.x - 条形图在seaborn的Y轴上计算什么?
- java - Node.js 中的 DES 加密
- java - 搜索 JTree 的节点
- perl - Perl:读取列并转换为数组
- azure - 使用 Azure Function 的基于会话的服务总线
- php - Google云端硬盘文件未设置到期时间权限
- android - 以编程方式更改 ConstraintLayout 中的宽度和高度不起作用
- highcharts - 角度中的高图表工具提示十字准线问题