Настройка Python для Azure Pipelines
Вы можете использовать Azure Pipelines для создания приложений Python без необходимости настраивать собственную инфраструктуру. Средства, которые обычно используются для сборки, тестирования и запуска приложений Python, например pip, предварительно устанавливаются на размещенных в Майкрософт агентах в Azure Pipelines.
Сведения о создании первого конвейера с помощью Python см. в кратком руководстве по Python.
Использование определенной версии Python
Чтобы использовать определенную версию Python в конвейере, добавьте задачу Использовать версию Python в azure-pipelines.yml. Этот фрагмент кода задает конвейер для использования Python 3.11:
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.11'
Использование нескольких версий Python
Чтобы запустить конвейер с несколькими версиями Python, например для тестирования пакета с этими версиями, определите job
с помощью matrix
версии Python. Затем задайте UsePythonVersion
задачу для ссылки на matrix
переменную.
jobs:
- job: 'Test'
pool:
vmImage: 'ubuntu-latest' # other options: 'macOS-latest', 'windows-latest'
strategy:
matrix:
Python38:
python.version: '3.8'
Python39:
python.version: '3.9'
Python310:
python.version: '3.10'
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '$(python.version)'
Вы можете добавить задачи для выполнения, используя каждую версию Python в матрице.
Запустить сценарии Python
Чтобы запустить скрипты Python в репозитории, используйте script
элемент и укажите имя файла. Например:
- script: python src/example.py
Вы также можете запускать встроенные скрипты Python с помощью задачи Скрипт Python:
- task: PythonScript@0
inputs:
scriptSource: 'inline'
script: |
print('Hello world 1')
print('Hello world 2')
Чтобы параметризировать выполнение скрипта PythonScript
, используйте задачу со значениями arguments
для передачи аргументов в выполняемый процесс. Для анализа аргументов можно использовать sys.argv
или более сложную argparse
библиотеку.
- task: PythonScript@0
inputs:
scriptSource: inline
script: |
import sys
print ('Executing script file is:', str(sys.argv[0]))
print ('The arguments are:', str(sys.argv))
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--world", help="Provide the name of the world to greet.")
args = parser.parse_args()
print ('Hello ', args.world)
arguments: --world Venus
Установка зависимостей
Вы можете использовать скрипты для установки определенных пакетов PyPI с pip
помощью . Например, этот YAML устанавливает или обновляет pip
setuptools
пакеты и .wheel
- script: python -m pip install --upgrade pip setuptools wheel
displayName: 'Install tools'
Требования к установке
После обновления pip
и друзей следующим типичным шагом является установка зависимостей из requirements.txt:
- script: pip install -r requirements.txt
displayName: 'Install requirements'
Выполнить тесты
Используйте скрипты для установки и выполнения различных тестов в конвейере.
Выполнение тестов анализа кода с помощью flake8
Чтобы установить или обновить flake8
и использовать его для выполнения тестов lint, используйте следующий YAML:
- script: |
python -m pip install flake8
flake8 .
displayName: 'Run lint tests'
Тестирование с помощью pytest и сбор метрик покрытия с помощью pytest-cov
Используйте этот YAML для установки pytest
и pytest-cov
, выполнения тестов, вывода результатов тестов в формате JUnit и выходных результатов покрытия кода в формате Cobertura XML:
- script: |
pip install pytest pytest-azurepipelines
pip install pytest-cov
pytest --doctest-modules --junitxml=junit/test-results.xml --cov=. --cov-report=xml
displayName: 'pytest'
Выполнение тестов с помощью Tox
Azure Pipelines может выполнять параллельные тестовые задания Tox для разделения работы. На компьютере разработки необходимо последовательно запускать тестовые среды. В этом примере используется tox -e py
для запуска любой версии Python, активной для текущего задания.
- job:
pool:
vmImage: 'ubuntu-latest'
strategy:
matrix:
Python38:
python.version: '3.8'
Python39:
python.version: '3.9'
Python310:
python.version: '3.10'
steps:
- task: UsePythonVersion@0
displayName: 'Use Python $(python.version)'
inputs:
versionSpec: '$(python.version)'
- script: pip install tox
displayName: 'Install Tox'
- script: tox -e py
displayName: 'Run Tox'
Публикация результатов тестирования
Добавьте задачу "Публикация результатов теста ", чтобы опубликовать результаты тестов JUnit или xUnit на сервере:
- task: PublishTestResults@2
condition: succeededOrFailed()
inputs:
testResultsFiles: '**/test-*.xml'
testRunTitle: 'Publish test results for Python $(python.version)'
Публикация результатов покрытия кода
Добавьте задачу Publish Code Coverage Results (Публикация результатов покрытия кода), чтобы опубликовать результаты покрытия кода на сервере. Метрики охвата можно просмотреть в сводке по сборке и скачать отчеты HTML для дальнейшего анализа.
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'
Упаковка и доставка кода
Для проверки подлинности с twine
помощью используйте задачу Twine Authentication для хранения учетных данных проверки подлинности в переменной PYPIRC_PATH
среды.
- task: TwineAuthenticate@0
inputs:
artifactFeed: '<Azure Artifacts feed name>'
pythonUploadServiceConnection: '<twine service connection from external organization>'
Затем добавьте пользовательский скрипт , который использует twine
для публикации пакетов.
- script: |
twine upload -r "<feed or service connection name>" --config-file $(PYPIRC_PATH) <package path/files>
Вы также можете использовать Azure Pipelines для создания образа для приложения Python и отправки его в реестр контейнеров.
Связанные расширения
- Подключаемый модуль Azure DevOps для PyCharm (IntelliJ) (Майкрософт)
- Python в Visual Studio Code (Майкрософт)
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по