Mat*_*rix 5 variables azure-devops azure-pipelines
由于无法在 AzurePipeline 中的阶段之间传递变量,因此我尝试在两个作业之间传递变量,如 Azure 文档中所述(https://learn.microsoft.com/en-us/azure/ devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch),但是它没有成功并且返回一个空变量。
这就是我正在尝试的:
stages:
- stage: Deploy
jobs:
- deployment: A
displayName: TerraformDeploy
pool:
vmImage: 'ubuntu-latest'
environment: 'test'
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: Bash@3
displayName: 'Deploying Terraform'
inputs:
targetType: 'inline'
script: |
cd environments/test
terraform init
terraform apply -var 'client_id=$(client-id)' -var 'client_secret=$(client-secret)' -var 'key_data=$(LinuxSSHPubKey)' -var 'tenant_id=$(tenant-id)' -auto-approve
ip=$(terraform output public_ip_address)
echo $ip ###1.2.3.4
echo "##vso[task.setvariable variable=myPubIP;isOutput=true]$ip"
name: setvarStep
- job: B
dependsOn: A
pool:
vmImage: 'ubuntu-latest'
variables:
myIP: $[ dependencies.A.outputs['A.setvarStep.myPubIP'] ]
steps:
- task: AzureCLI@2
inputs:
azureSubscription: $(azureSubscription)
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
echo "ip:"$(myIP) ### Empty variable!!
Run Code Online (Sandbox Code Playgroud)
我已经尝试了很多不同的方法来解决这个问题,但到目前为止还没有解决,任何人都可以帮忙解决这个问题吗?
更新:
似乎其他人也报告了这个问题,他们正在计划修复它:
即使我将这两项工作用作正常工作,它仍然不适用于我的情况。
不太确定这是上面 YAML 管道定义中的粘贴格式问题,并且我看到该ip值已非常成功地生成,这似乎是由于 YAML 定义中的语法name不正确造成的,因此它没有正确编译为reference name.
去确认下是否有黄线即可name,如下所示:
如果是,则删除之前的2 个空格name,使其与 处于同一级别inputs:
如果我使用与你相同的定义,我也面临着空输出变量的问题。但如果我之前对空间进行了更改name,那么输出变量就可以成功进入工作B。
所以,你可以尝试一下这个。
| 归档时间: |
|
| 查看次数: |
6337 次 |
| 最近记录: |