使用 Anaconda 环境运行管道

Azure DevOps Services

了解如何在管道中设置 Anaconda 并将其与 Python 配合使用。 Anaconda 是用于数据科学和机器学习的 Python 发行版。

入门

按照这些说明为具有 Anaconda 环境的示例 Python 应用设置管道。

  1. 登录到 Azure DevOps 组织,并导航到你的项目。

  2. 在项目中,导航到“Pipelines”页面 。 然后选择“操作”以创建新的管道。

  3. 首先选择“GitHub”作为源代码位置,完成向导的各个步骤 。

  4. 可能会重定向到 GitHub 进行登录。 如果是这样,请输入 GitHub 凭据。

  5. 显示存储库列表时,请选择你的 Anaconda 示例存储库。

  6. Azure Pipelines 会分析存储库中的代码,并检测现有的 azure-pipelines.yml 文件。

  7. 选择“运行”。

  8. 开始新运行。 请等待运行完成。

提示

若要按本主题所述对 YAML 文件进行更改,请在“管道”页中选择管道,然后选择“编辑”来编辑 azure-pipelines.yml 文件。

将 conda 添加到系统路径

托管代理上,默认情况下 conda 被排除在 PATH 之外,以防止其 Python 版本与其他已安装的版本发生冲突。 task.prependpath 代理命令将使其可用于所有后续步骤。

- bash: echo "##vso[task.prependpath]$CONDA/bin"
  displayName: Add conda to PATH

创建环境

从命令行参数

conda create 命令将使用你传递给它的参数创建一个环境。

- bash: conda create --yes --quiet --name myEnvironment
  displayName: Create Anaconda environment

从 YAML

可以将 environment.yml 文件签入定义 Anaconda 环境配置的存储库。

- script: conda env create --quiet --file environment.yml
  displayName: Create Anaconda environment

注意

如果你使用的是自托管代理并且最后没有删除环境,那么由于环境已经存在,你会在下一次生成时遇到错误。 若要解决此问题,请使用 --force 参数:conda env create --quiet --force --file environment.yml

注意

如果你使用共享存储的自托管代理,并使用相同的 Anaconda 环境并行运行作业,则这些环境之间可能会发生冲突。 若要解决此问题,请使用 --name 参数和唯一标识符作为参数值,例如与 $(Build.BuildNumber) 生成变量的串联。

从 Anaconda 安装包

以下 YAML 在名为 myEnvironment 的 conda 环境中安装 scipy 包。

- bash: |
    source activate myEnvironment
    conda install --yes --quiet --name myEnvironment scipy
  displayName: Install Anaconda packages

在 Anaconda 环境中运行管道步骤

注意

每个生成步骤都在自己的进程中运行。 激活 Anaconda 环境时,它将编辑 PATH 并对其当前进程进行其他更改。 因此,必须为每个步骤单独激活 Anaconda 环境。

- bash: |
    source activate myEnvironment
    python -m pytest --junitxml=junit/unit-test.xml
  displayName: pytest

- task: PublishTestResults@2
  inputs:
    testResultsFiles: 'junit/*.xml'
  condition: succeededOrFailed()

常见问题

为什么我收到“权限被拒绝”错误?

在托管 macOS 上,代理用户没有安装 Miniconda 的目录的所有权。 如需修复,请查看将 conda 添加到系统路径下的“托管 macOS”选项卡。

为什么我的生成在 conda createconda install 步骤上停止响应?

如果你忘记传递 --yes,conda 会停下来,等待用户交互。

为什么 Windows 上的脚本在激活环境后停止?

在 Windows 上,activate 是 Batch 脚本。 激活后,你必须使用 call 命令才能继续运行脚本。 请参阅在管道中使用call的示例。

如何使用多个版本的 Python 运行测试?

请参阅在 Azure Pipelines 中生成 Python 应用