powershell - Azure 管道:基于 OS 的条件环境变量
问题描述
我正在尝试使我的环境变量依赖于代理操作系统。
我写了以下内容test.yml
,但它不起作用:
jobs:
- job: Test
pool:
vmImage: 'ubuntu-latest'
steps:
- pwsh: |
echo $env:TestVar
echo $env:OS
env:
OS: $[variables['Agent.OS']]
${{ if eq(variables['Agent.OS'], 'Windows_NT') }}:
TestVar: "I am Windows"
${{ if eq(variables['Agent.OS'], 'Linux') }}:
TestVar: "I am Linux"
我的 YAML 缩进有问题吗?
解决方案
根据 Cece Dong 的回答,在这种语法中不能使用代理变量。达到相同效果的最简洁的方法就是使用 shell 来管理环境变量。
jobs:
- job: Test
pool:
vmImage: 'ubuntu-latest'
steps:
- pwsh: |
if ($env:AGENT_OS -eq "Windows_NT") {
$env:TestVar="I am Windows"
}
if ($env:AGENT_OS -eq "Linux") {
$env:TestVar="I am Linux"
}
如果TestVar
应该在另一个步骤中使用,则在之后使用:
echo "##vso[task.setvariable variable=env:TestVar]$env:TestVar"
推荐阅读
- python - 在python中提交Kattis问题时出现运行时错误:我能猜到数据结构
- r - R - 为回归线添加图例到 ggplot 图
- python - __str__ 返回一个巨大的字符串而不是单个值。Python 新手
- docker - 构建烧瓶泊坞窗图像时分配端口
- google-sheets - 如何删除单行中的多个单元格,并继续删除 50 行
- html - 如何使用反应打字稿将来自 JSON 的长字符串数据显示为列表
- html - 在 HTML href 中生成动态 Localhost URL 路径
- coldfusion - 如何调试 Coldfusion Bad Gateway 错误?
- graphql - GraphQL:具有标量和 InputObjectType 的 UnionType
- visual-c++ - 使用 Microsoft Visual C++ 构建 libdav1d?