Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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í pipeline pomocí Pythonu, podívejte se na rychlý průvodce Pythonem.
S agenty hostovanými Microsoftem ve službě Azure Pipelines můžete vytvářet aplikace Pythonu bez nastavení vlastní infrastruktury. 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é paralelní úlohy nebo zakoupit paralelní úlohu pro spuštění vašich 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 úlohu Použít verzi Pythonu do azure-pipelines.yml. 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 seznam verzí Pythonu s job a matrix. Pak nastavte úkol UsePythonVersion tak, aby odkazoval 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
Také můžete pomocí úlohy skriptu Pythonu 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
Nainstalujte závislosti
Pomocí skriptů můžete nainstalovat konkrétní balíčky PyPI s pip. Následující příklad nainstaluje nebo upgraduje pip a setuptoolswheel balíčky.
- script: python -m pip install --upgrade pip setuptools wheel
displayName: 'Install tools'
Požadavky na instalaci
Po aktualizaci pip a ostatních 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ů ve vašem potrubí.
Spouštění lint testů pomocí 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, přičemž výstupem jsou výsledky testů ve formátu JUnit a výsledky 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)'
Publikujte výsledky pokrytí kódu
Přidejte úlohu Publikování výsledků pokrytí kódu pro zveřejnění výsledků pokrytí kódu na server. Můžete zobrazit metriky pokrytí v souhrnu sestavení a stáhnout si HTML zprávy pro další analýzu.
- task: PublishCodeCoverageResults@2
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'
Zabalení a doručení kódu
Ověřte se pomocí úlohy "Python Twine upload authenticate" pro uložení přihlašovacích údajů do proměnné prostředí.
- task: TwineAuthenticate@1
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.