Как сохранить среду для разных заданий в azure конвейере - PullRequest
0 голосов
/ 24 апреля 2020

Stage может сохранять все работающие среды для своих заданий, но у меня есть несколько разных заданий, которые по логике не могут быть сгруппированы в один этап. все эти задания имеют одинаковую рабочую среду, я не хочу повторять следующий код для каждого задания, как я могу абстрагировать все эти шаги в какие-то функции и вызывать их для каждого задания. Или как я могу создать общую среду для этих рабочих мест. Или как я могу сохранить среду вместо того, чтобы объединить их все в одну стадию?

 steps:
      - bash: echo "##vso[task.prependpath]$CONDA/bin"
        displayName: Add Conda to PATH

      - bash: conda env update -f environment.yml --name $(Agent.Id)
        displayName: Create Conda Environment

      - bash: export PYTHONPATH="src/"
        displayName: Add /src to PYTHONAPTH

      - bash: source activate $(Agent.Id)
        displayName: Active Test Environment

1 Ответ

1 голос
/ 27 апреля 2020

Вы можете поместить вышеуказанные шаги в файл шаблона yaml. И используйте пошаговые шаблоны для ссылки на него в файле Yaml основного конвейера.

Например, создайте файл шаблона yaml setEnv.yml с указанными выше кодами.

#File: setEnv.yml

steps:
  - bash: echo "##vso[task.prependpath]$CONDA/bin"
    displayName: Add Conda to PATH

  - bash: conda env update -f environment.yml --name $(Agent.Id)
    displayName: Create Conda Environment
    ...

Используйте template для ссылки на вышеуказанный файл шаблона.

 # File: azure-pipelines.yml
  stages:
  - stage: A
    jobs:
    - job: macOS
      pool:
        vmImage: 'macOS-10.14'
      steps:
      - template: setEnv.yml # Template reference
      - othertasks: 
 - stage: B
   jobs:
   - job: Linux
     pool:
       vmImage: 'ubuntu-16.04'
     steps:
     - template: setEnv.yml # Template reference
     - othertasks: 

Проверьте документ здесь для получения дополнительной информации.

...