Запуск конвейеров с помощью сред Anaconda
Azure DevOps Services
Узнайте, как настроить и использовать Anaconda с Python в конвейере. Anaconda — это дистрибутив Python для обработки и анализа данных и машинного обучения.
Начало работы
Следуйте этим инструкциям, чтобы настроить конвейер для примера приложения Python в среде Anaconda.
Войдите в свою организацию Azure DevOps и откройте нужный проект.
В этом проекте перейдите к странице Pipelines (Конвейеры). Выберите действие создания конвейера сборки.
Пройдите через шаги мастера, выбрав GitHub в качестве расположения исходного кода.
Возможно, вам придется выполнить вход в GitHub. Для этого введите учетные данные GitHub.
Когда появится список репозиториев, выберите пример репозитория Anaconda.
Azure Pipelines проанализирует код в репозитории и обнаружит существующий
azure-pipelines.yml
файл.Выберите Запуск.
Будет выполнен новый запуск. Дождитесь, пока он завершится.
Совет
Чтобы внести изменения в файл YAML, как описано в этом разделе, выберите конвейер на странице Конвейеры , а затем изменитеazure-pipelines.yml
файл.
Добавление conda в системный путь
На размещенных агентахPATH
conda по умолчанию не используется, чтобы ее версия 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 устанавливает scipy
пакет в среде conda с именем myEnvironment
.
- 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. Сведения об исправлении см. на вкладке Hosted macOS в разделе Добавление conda в путь к системе.
Почему сборка перестает отвечать на conda create
шаг или conda install
?
Если вы забудете пройти --yes
, conda остановится и дождется взаимодействия с пользователем.
Почему сценарий в Windows останавливается после активации среды?
В Windows activate
— это пакетный скрипт. Чтобы возобновить выполнение скрипта call
после активации, необходимо использовать команду .
См. примеры использования call
в конвейере.
Как выполнить тесты с несколькими версиями Python?
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделе:Отправить и просмотреть отзыв по