在 azure pipelines yaml 中的模板作业之间传递值
Pass values between template jobs in azure pipelines yaml
我有以下设置,其中第一个模板作业 (deploy-infra.yml) 运行一些 terraform 作业,这些作业产生一些输出,这些输出在以后的模板作业中需要,我似乎可以做的是传递这个输出对于其他模板化作业,这似乎是因为模板参数是在编译时而不是运行时确定的。
有办法吗?这是我目前拥有的:
- stage: Deploy_Canary
displayName: Deploy Canary
jobs:
- template: deploy-infra.yml
- template: deploy-software.yml
parameters:
dbserver: $[dependencies.DeployInfra.outputs['outputDeployInfra.dbserver']]
deploy-infra.yml 将此作为输出生成,该输出取自 powershell 脚本,而该脚本又从 terraform 模块获取输出:
- pwsh: |
echo "##vso[task.setvariable variable=dbserver]$(db.server)"
name: outputDeployInfra
如果我在 deploy-software.yml 作业中回显 parameters.dbserver
,我将得到:
$[dependencies.DeployInfra.outputs['outputDeployInfra.dbserver']]
有什么想法吗?!谢谢!
Pass values between template jobs in azure pipelines yaml
我们需要从 azure-pipelines.yaml
移动参数,然后在 deploy-software.yml
中用变量解析它:
variables:
Parametersdbserver: $[dependencies.DeployInfra.outputs['outputDeployInfra.dbserver']]
作为测试,我创建了 deploy-infra.yml
、deploy-software.yml
和 azure-pipelines.yaml
:
deploy-infra.yml(因为我没有db.server
的值,所以我用测试值123456
的变量定义了它.):
jobs:
- job: DeployInfra
variables:
db.server: 123456
steps:
- checkout: none
- pwsh: |
echo "##vso[task.setvariable variable=dbserver;isOutput=true]$(db.server)"
name: outputDeployInfra
部署-software.yml:
jobs:
- job: deploysoftware
dependsOn: DeployInfra
variables:
Parametersdbserver: $[dependencies.DeployInfra.outputs['outputDeployInfra.dbserver']]
steps:
- checkout: none
- pwsh: |
Write-Host "$(Parametersdbserver)"
azure-pipelines.yaml:
pool:
vmImage: 'windows-latest'
stages:
- stage: Deploy_Canary
jobs:
- template: deploy-infra.yml
- template: deploy-software.yml
作为测试结果:
希望这对您有所帮助。
我有以下设置,其中第一个模板作业 (deploy-infra.yml) 运行一些 terraform 作业,这些作业产生一些输出,这些输出在以后的模板作业中需要,我似乎可以做的是传递这个输出对于其他模板化作业,这似乎是因为模板参数是在编译时而不是运行时确定的。
有办法吗?这是我目前拥有的:
- stage: Deploy_Canary
displayName: Deploy Canary
jobs:
- template: deploy-infra.yml
- template: deploy-software.yml
parameters:
dbserver: $[dependencies.DeployInfra.outputs['outputDeployInfra.dbserver']]
deploy-infra.yml 将此作为输出生成,该输出取自 powershell 脚本,而该脚本又从 terraform 模块获取输出:
- pwsh: |
echo "##vso[task.setvariable variable=dbserver]$(db.server)"
name: outputDeployInfra
如果我在 deploy-software.yml 作业中回显 parameters.dbserver
,我将得到:
$[dependencies.DeployInfra.outputs['outputDeployInfra.dbserver']]
有什么想法吗?!谢谢!
Pass values between template jobs in azure pipelines yaml
我们需要从 azure-pipelines.yaml
移动参数,然后在 deploy-software.yml
中用变量解析它:
variables:
Parametersdbserver: $[dependencies.DeployInfra.outputs['outputDeployInfra.dbserver']]
作为测试,我创建了 deploy-infra.yml
、deploy-software.yml
和 azure-pipelines.yaml
:
deploy-infra.yml(因为我没有db.server
的值,所以我用测试值123456
的变量定义了它.):
jobs:
- job: DeployInfra
variables:
db.server: 123456
steps:
- checkout: none
- pwsh: |
echo "##vso[task.setvariable variable=dbserver;isOutput=true]$(db.server)"
name: outputDeployInfra
部署-software.yml:
jobs:
- job: deploysoftware
dependsOn: DeployInfra
variables:
Parametersdbserver: $[dependencies.DeployInfra.outputs['outputDeployInfra.dbserver']]
steps:
- checkout: none
- pwsh: |
Write-Host "$(Parametersdbserver)"
azure-pipelines.yaml:
pool:
vmImage: 'windows-latest'
stages:
- stage: Deploy_Canary
jobs:
- template: deploy-infra.yml
- template: deploy-software.yml
作为测试结果:
希望这对您有所帮助。