yaml - 如何为 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
解决方案
您可以将上述步骤放入模板 yaml 文件中。并使用步骤模板在您的主管道 Yaml 文件中引用它。
例如,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:
在此处查看文档以获取更多信息。
推荐阅读
- snowflake-cloud-data-platform - Snowflake 中是否有查询来识别文件中无效的 utf8 字符
- c# - 如何在不打开文件夹的情况下打印文件夹中的所有word文档?
- css - 如何使字体字形能够延伸到其包含跨度的边界之外?
- jenkins - 无法从 jenkins 连接到我的 bitbucket 存储库
- java - 替代 Hashmap 作为内存数据库以外的缓存。?
- xamarin - 聚焦时从 ios 的 xamarin 表单中的材料输入控件中删除下划线
- xml - 验证 xsd 中属于另一个命名空间的元素
- android - 如何在Android中设置除英语以外的默认语言?
- webserver - 该视频是否被缓存?
- regex - 如何以任何顺序正则表达式匹配逗号分隔值?