【发布时间】:2020-01-24 14:01:30
【问题描述】:
由于无法在 AzurePipeline 的各个阶段之间传递变量,因此我尝试在两个作业之间传递变量,正如 Azure 文档 (https://docs.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!!
我已经为这个案例尝试了很多不同的方法,但到目前为止还没有解决,有人可以帮忙吗?
更新:
似乎其他人也报告了这个问题,他们正计划修复它:
即使我将这两个工作都用作正常工作,它仍然不适用于我的情况..
【问题讨论】:
-
我已经复制并改编了你的 yaml,我使用了 Bash 任务而不是 AzureCLI,变量在作业之间成功传递。我想 AzureCLI@2 任务(可能无法访问变量)或您的“环境测试”有问题。请检查在作业 B 中使用 Bash@3 并检查变量是否通过。我的 yaml 和结果在附图中。似乎使用“部署”或“工作”没有问题。 i.stack.imgur.com/2rTmk.png
标签: variables azure-devops azure-pipelines