Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
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.
Войдите в свою организацию Azure DevOps и откройте нужный проект.
В вашем проекте перейдите на страницу Pipelines. Затем выберите действие, чтобы создать новый конвейер.
Пройдите через шаги мастера, выбрав GitHub в качестве расположения исходного кода.
Возможно, вас перенаправят на GitHub для входа. Для этого введите учетные данные GitHub.
Когда появится список репозиториев, выберите пример репозитория Anaconda.
Azure Pipelines анализирует код в репозитории и обнаруживает существующий
azure-pipelines.ymlфайл.Выберите Выполнить.
Начат новый запуск. Дождитесь завершения задания.
Совет
Чтобы внести изменения в файл 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.