gpt4 book ai didi

powershell - Azure管道:基于OS的条件环境变量

转载 作者:行者123 更新时间:2023-12-03 01:25:59 34 4
gpt4 key购买 nike

我试图根据代理程序操作系统使为我的环境变量。
我写了下面的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缩进有问题吗?

最佳答案

您的YAML似乎是正确的,但是在Azure DevOps上尚不清楚。但是,您可以将其用作解决方法:

trigger:
- master

jobs:
- job: Test
pool:
vmImage: 'ubuntu-latest'
variables:
varOS: $(Agent.OS)
steps:
- pwsh: |
$testVar = ''
$os = '$(Agent.OS)'
if ($os -eq 'Windows_NT') {
$testVar = "I am Windows";
} elseif ($os -eq 'Linux') {
$testVar = "I am Linux";
}
Write-Host $testVar
Write-Host "##vso[task.setvariable variable=HelloOS;isOutput=true]$testVar"
name: Initialize
- pwsh: |
echo $env:TestVar
echo $env:OS
echo $env:AGENT_OS
echo $env:IsMaster
printenv
env:
OS: $(varOS)
TestVar: $(Initialize.HelloOS)
${{ if eq(variables['Build.SourceBranch'], 'refs/heads/master')}}:
IsMaster: "true"

对于这个版本,我得到了:
I am Linux
Linux
Linux
true
我尝试了几种方法,也将条件设置放在了变量部分。但是,只有这样才能达到预期的结果。当然,由于您可以访问 $env:AGENT_OS,因此可以将此条件逻辑直接放在目标步骤中。我只是假设您想在其他地方提供 TestVar

关于powershell - Azure管道:基于OS的条件环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62890370/

34 4 0
文章推荐: elasticsearch - 忽略旧文件,并使用logstash仅推送来自S3的最新日志文件
文章推荐: javascript - cypress.io : Command namespacing, 链接
文章推荐: javascript - ASP.NET:使用 Ajax (JSON) 从 View 到 Controller POST List/Model