Přizpůsobení kanálů Pythonu
Tento článek popisuje, jak přizpůsobit sestavování, testování, balení a doručování aplikací a kódu Pythonu ve službě Azure Pipelines. Pokud chcete vytvořit první kanál pomocí Pythonu, prohlédněte si rychlý start k Pythonu.
S agenty hostovanými Microsoftem ve službě Azure Pipelines můžete vytvářet aplikace v Pythonu, aniž byste museli nastavovat vlastní infrastrukturu. Nástroje, které běžně používáte k vytváření, testování a spouštění aplikací Pythonu, včetně pip
, jsou předinstalované.
Možná budete muset požádat o bezplatné udělení paralelních úloh nebo zakoupit paralelní úlohu ke spuštění kanálů.
K vytváření aplikací v Pythonu pomocí Azure Pipelines potřebujete agenta v místním prostředí s nainstalovaným Pythonem. Pokud chcete nainstalovat Python do svého agenta, přečtěte si téma UsePythonVersion.
Použití konkrétní verze Pythonu
Pokud chcete ve svém kanálu použít konkrétní verzi Pythonu, přidejte k azure-pipelines.yml úlohu Použít verzi Pythonu. Následující příklad definice kanálu YAML nastaví kanál tak, aby používal Python 3.11.
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.11'
Použití více verzí Pythonu
Pokud chcete spustit kanál s více verzemi Pythonu, například otestovat balíček s těmito verzemi, definujte job
balíček s verzemi matrix
Pythonu. Pak nastavte UsePythonVersion
úkol tak, aby odkaz na proměnnou matrix
. Příklad:
jobs:
- job: 'Test'
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
inputs:
versionSpec: '$(python.version)'
V matici můžete přidat úlohy, které používají každou verzi Pythonu.
Spouštění skriptů Pythonu
Pokud chcete spustit skripty Pythonu z úložiště, použijte script
element a zadejte název souboru. Příklad:
- script: python src/example.py
Pomocí úlohy skriptu Pythonu můžete také spouštět vložené skripty Pythonu.
- task: PythonScript@0
inputs:
scriptSource: 'inline'
script: |
print('Hello world 1')
print('Hello world 2')
Pokud chcete parametrizovat provádění skriptu, použijte PythonScript
úlohu s arguments
hodnotami k předání argumentů do spuštěného procesu. K analýze argumentů můžete použít sys.argv
nebo propracovanější argparse
knihovnu.
- 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
Instalace závislostí
Pomocí skriptů můžete nainstalovat konkrétní balíčky PyPI s pip
. Následující příklad nainstaluje nebo upgraduje pip
a setuptools
wheel
balíčky.
- script: python -m pip install --upgrade pip setuptools wheel
displayName: 'Install tools'
Požadavky na instalaci
Po aktualizaci pip
a přátel je typickým dalším krokem instalace závislostí z requirements.txt.
- script: pip install -r requirements.txt
displayName: 'Install requirements'
Spouštění testů
Skripty můžete použít k instalaci a spuštění různých testů v kanálu.
Spouštění testů lint s využitím flake8
Následující kód YAML nainstaluje nebo upgraduje flake8
a používá ho ke spuštění testů lint.
- script: |
python -m pip install flake8
flake8 .
displayName: 'Run lint tests'
Testování s využitím pytestu a shromažďování metrik pokrytí pomocí pytest-cov
Následující kód YAML nainstaluje pytest
a pytest-cov
spustí testy, výstupem výsledků testů ve formátu JUnit a výstupem výsledků pokrytí kódu ve formátu 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'
Spouštění testů pomocí toxu
Azure Pipelines může spouštět paralelní testovací úlohy Tox, aby se práce rozdělila. Na vývojovém počítači musíte spustit testovací prostředí v řadě. Následující příklad používá tox -e py
ke spuštění toho, která verze Pythonu je pro aktuální úlohu aktivní.
- 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'
Publikování výsledků testu
Přidejte úlohu Publikovat výsledky testu pro publikování výsledků testu JUnit nebo xUnit na server.
- task: PublishTestResults@2
condition: succeededOrFailed()
inputs:
testResultsFiles: '**/test-*.xml'
testRunTitle: 'Publish test results for Python $(python.version)'
Publikování výsledků pokrytí kódu
Přidejte úlohu Publikování výsledků pokrytí kódu pro publikování výsledků pokrytí kódu na server. Metriky pokrytí můžete zobrazit v souhrnu sestavení a stáhnout sestavy HTML pro další analýzu.
- task: PublishCodeCoverageResults@2
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'
Zabalení a doručení kódu
Pokud se chcete ověřit pomocí twine
příkazu , pomocí úlohy ověření nahrání dvojčete Pythonu uložte přihlašovací údaje pro ověřování do PYPIRC_PATH
proměnné prostředí.
- task: TwineAuthenticate@0
inputs:
artifactFeed: '<Azure Artifacts feed name>'
pythonUploadServiceConnection: '<twine service connection from external organization>'
Pak přidejte vlastní skript , který se používá twine
k publikování balíčků.
- script: |
twine upload -r "<feed or service connection name>" --config-file $(PYPIRC_PATH) <package path/files>
Azure Pipelines můžete také použít k vytvoření image pro vaši aplikaci v Pythonu a jeho nasdílení do registru kontejneru.