Может ли Azure YAML Pipelinesиспользовать переменные среды? - PullRequest
0 голосов
/ 01 октября 2019

Я читаю документацию по средам здесь и проблемы, открытые под ресурсом среды, однако я не могу достичь своей цели:

Я хотел бы использовать параметризованный шаблон yaml вЧтобы выполнить развертывание в нескольких средах, как показано ниже:

parameters:
  pool_name: ''
  aks_namespace: ''
  environment: ''

jobs:
  - job: preDeploy
    displayName: preDeploy
    pool:
      name: $(pool_name)
    steps:
      - template: cd_step_prerequisites.yml


  - deployment: Deploy
    displayName: Deploy
    dependsOn: preDeploy
    condition: succeeded()
    variables:
      secret_name: acrecret
    pool:
      name: dockerAgents
    **environment: '$(environment).$(aks_namespace)'**
    strategy:
      runOnce:
        deploy:
          steps:
          - template: cd_step_aks_deploy.yml


  - job: postDeploy
    displayName: postDeploy
    dependsOn: Deploy
    condition: succeeded()
    pool:
      name: $(pool_name)
    steps:
      - template: cd_step_postrequisites.yml

Я хотел бы использовать этот подход, чтобы я размещал только минимальный файл pipe.yml рядом с моим кодом, а затем я бы имел все шаблоны вдругой репозиторий и вызывать их из основного конвейера, например:

resources:
  repositories:
    - repository: self
    - repository: devops
      type: git
      name: devops

  - stage: CD1
    displayName: Deploy to Alpha
    jobs:
      **- template: pipeline/cd_job_api.yml@devops**
        parameters:
          pool_name: $(pool_name)
          aks_namespace: $(aks_namespace)
          app_name: $(app_name)
          app_image_full_name: $(app_image_full_name)
          environment: alpha

Тогда я смогу передать переменную $ environment, чтобы манипулировать несколькими целями развертывания (кластерами AKS / группами пространств имен) из одногошаблон. В настоящее время это кажется невозможным, поскольку синтаксический анализатор AzureDevOps по умолчанию завершается неудачно, когда я пытаюсь запустить свой конвейер, с сообщением «$ (environment) environment не содержит x namespace», которое говорит мне, что переменная не раскрывается.

Планируется ли реализовать это в ближайшее время? Если нет, есть ли альтернативы использованию только одного параметризованного шаблона задания для развертывания в нескольких средах?

1 Ответ

1 голос
/ 01 октября 2019

Я думаю, вам нужно либо проанализировать файлы и выполнить замену токена скриптом, либо для этого должны быть шаги.

Ваша основная альтернатива будет helm . Это позволяет создавать шаблоны и передавать переменные для отображения этих шаблонов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...