Запуск конвейеров с средами Anaconda

Azure DevOps Services

Настройте и используйте Anaconda с Python в конвейере. Anaconda — это распределение Python для обработки и анализа данных и машинного обучения.

Предпосылки

Python предварительно установлен на агентах, хостингующихся на Microsoft для Linux, macOS и Windows. Вам не нужно ничего больше настраивать для создания проектов Python. Чтобы узнать, какие версии Python предварительно установлены, см. статью Software.

Продукт Требования
Azure DevOps проект Azure DevOps.
— способность запуска потоков на хостинговых агентах Microsoft. Вы можете приобрести параллельное задание или запросить бесплатный уровень.
— Базовые знания о YAML и Azure Pipelines. Дополнительные сведения см. в статье "Создание первого конвейера".
- Разрешения:
     — Чтобы создать конвейер: необходимо быть в группе Участников, и у группы должно быть разрешение создать конвейер сборки установлено на "Разрешить". Члены группы "Администраторы проектов" могут управлять конвейерами.
    — Для создания подключений к службам необходимо иметь роль администратора или создателя для подключений служб.
GitHub — учетная запись GitHub.
- Подключение службы GitHub для авторизации Azure Pipelines.

Начало работы

Следуйте этим инструкциям, чтобы настроить конвейер для примера приложения Python с средой Anaconda.

  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 по умолчанию не устанавливается, чтобы избежать конфликта версии Python с другими установленными версиями. task.prependpath Используйте команду агента, чтобы сделать conda доступным для всех последующих шагов.

- 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

Примечание.

Если вы используете автономный агент и не удаляете среду в конце, вы получите ошибку в следующей сборке, так как среда уже существует. Чтобы устранить эту проблему, удалите указанную среду перед созданием новой среды.conda env remove --name your-env-name

Примечание.

Если вы используете автономные агенты, которые совместно используют хранилище и выполняют задания параллельно с использованием тех же сред Anaconda, между этими средами могут возникать столкновения. Чтобы устранить эту проблему, используйте аргумент --name и уникальный идентификатор в качестве значения аргумента, например, конкатенацию с переменной сборки $(Build.BuildNumber).

Установка пакетов из Anaconda

Следующий YAML-файл устанавливает пакет scipy в conda-среду с именем myEnvironment.

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

Выполните шаги конвейера в среде Anaconda

Примечание.

Каждый шаг сборки выполняется в собственном процессе. При активации среды Anaconda он редактирует PATH и вносит другие изменения в текущий процесс. Таким образом, активируйте среду Anaconda отдельно для каждого шага.

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

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

Часто задаваемые вопросы

Почему я получаю ошибку "Отказано в разрешении"?

На хосте macOS пользователь агента не владеет директорией, где установлена Miniconda. Чтобы устранить эту проблему, перейдите на вкладку "Hosted macOS" под Добавить conda в системный путь.

Почему моя сборка перестает отвечать на этапе conda create или conda install?

Если вы не указываете --yes, conda останавливается и ожидает ввода пользователем.

Почему мой скрипт в Windows останавливается после активации среды?

В Windows activate — это Batch-скрипт. После активации необходимо использовать call команду, чтобы возобновить выполнение скрипта. Примеры использования callв конвейере.

Как запустить тесты с несколькими версиями Python?

Перейдите к созданию приложений Python в Azure Pipelines.