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
答案 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,了解更多信息。