如何在天蓝色管道中为不同工作保留环境

时间:2020-04-24 10:20:26

标签: yaml azure-pipelines

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 个答案:

答案 0 :(得分:1)

您可以将上述步骤放入模板yaml文件中。并使用step templates在主管道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: 

查看文档here,了解更多信息。