Передача значений между шаблонными заданиями в azure конвейерах yaml - PullRequest
0 голосов
/ 05 марта 2020

У меня есть следующая установка, где первое шаблонное задание (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

Если я повторю parameters.dbserver в задании deploy-software.yml, я просто получу:

$[dependencies.DeployInfra.outputs['outputDeployInfra.dbserver']]

Есть идеи ?! Спасибо!

1 Ответ

1 голос
/ 06 марта 2020

Передача значений между шаблонными заданиями в azure конвейерах 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

deploy-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

Как результат теста:

enter image description here

Надеюсь, это поможет.

...