Yaml 如何在azure管道中保留不同作业的环境

Yaml 如何在azure管道中保留不同作业的环境,yaml,azure-pipelines,Yaml,Azure Pipelines,Stage可以为它的作业保留所有运行环境,但是我有几个不同的作业,从逻辑上讲不能组合到同一个Stage中。所有这些作业都有相同的运行环境,我不想对每个作业重复以下代码,如何将所有这些步骤抽象为某种函数并由每个作业调用。或者我如何为这些工作创造一个共享的环境。或者,我怎样才能保留环境,而不是将它们全部分组到同一个阶段 steps: - bash: echo "##vso[task.prependpath]$CONDA/bin" displayName: Add Con

Stage可以为它的作业保留所有运行环境,但是我有几个不同的作业,从逻辑上讲不能组合到同一个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

您可以将上述步骤放入模板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: 

查看文档以了解更多信息。

我可以告诉您如何将其放入Azure-pipelines.yml文件中的代码块中,并在需要时引用它吗?恐怕目前无法做到这一点。YAML管道不支持引用其Azure-pipelines.yml文件中定义的代码块。