首页 > 解决方案 > 如何为 Azure 管道中的不同作业保留环境

问题描述

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

标签: yamlazure-pipelines

解决方案


您可以将上述步骤放入模板 yaml 文件中。并使用步骤模板在您的主管道 Y​​aml 文件中引用它。

例如,setEnv.yml使用上述代码创建一个模板 yaml 文件。

#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: 

在此处查看文档以获取更多信息。


推荐阅读