Přizpůsobení Pythonu pro Azure Pipelines
Azure Pipelines můžete použít k vytváření aplikací v Pythonu, aniž byste museli nastavovat vlastní infrastrukturu. Nástroje, které běžně používáte k sestavování, testování a spouštění aplikací v Pythonu , jako je pip, se předinstalují na agentech hostovaných Microsoftem v Azure Pipelines.
Pokud chcete vytvořit svůj první kanál pomocí Pythonu, projděte si rychlý start pro Python.
Použití konkrétní verze Pythonu
Pokud chcete ve svém kanálu použít konkrétní verzi Pythonu, přidejte do souboru azure-pipelines.ymlúlohu Použít verzi Pythonu. Tento fragment kódu 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
s a matrix
z verzí Pythonu. Pak nastavte UsePythonVersion
úlohu tak, aby odkazovat na proměnnou 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)'
Pomocí každé verze Pythonu v matici můžete přidat úlohy, které se mají spustit.
Spouštění skriptů Pythonu
Pokud chcete v úložišti spouštět skripty Pythonu script
, použijte element a zadejte název souboru. Příklad:
- script: python src/example.py
Vložené skripty Pythonu můžete také spouštět pomocí úlohy Python Script:
- task: PythonScript@0
inputs:
scriptSource: 'inline'
script: |
print('Hello world 1')
print('Hello world 2')
Chcete-li parametrizovat provádění skriptu, použijte PythonScript
úlohu s arguments
hodnotami k předání argumentů do prováděcího procesu. K parsování 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 pomocí pip
nástroje . Tento YAML například nainstaluje nebo upgraduje pip
a setuptools
balíčky a wheel
.
- 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ů
Pomocí skriptů můžete v kanálu instalovat a spouštět různé testy.
Spouštění testů lint pomocí flake8
Pokud chcete nainstalovat nebo upgradovat flake8
a použít ho ke spouštění testů lint, použijte tento YAML:
- script: |
python -m pip install flake8
flake8 .
displayName: 'Run lint tests'
Testování pomocí pytestu a shromažďování metrik pokrytí pomocí pytest-cov
Tento YAML slouží k instalaci pytest
a pytest-cov
, spouštění testů, výstupních výsledků testů ve formátu JUnit a pokrytí výstupního 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í Tox
Azure Pipelines může spouštět paralelní testovací úlohy Tox a rozdělovat práci. Na vývojovém počítači musíte testovací prostředí spouštět v řadě. Tato ukázka používá tox -e py
ke spuštění jakékoli verze Pythonu, která je aktivní pro aktuální úlohu.
- 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ů testů
Přidejte úlohu Publish Test Results (Publikovat výsledky testu ), která publikuje výsledky testů 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 Publikovat výsledky pokrytí kódu , která publikuje výsledky pokrytí kódu na server. Metriky pokrytí si můžete prohlédnout v souhrnu sestavení a stáhnout si sestavy HTML pro další analýzu.
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'
Zabalení a doručení kódu
Pokud se chcete ověřit pomocí twine
příkazu , použijte úlohu Ověřování twine k uložení přihlašovacích údajů 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ý 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 sestavení image pro aplikaci v Pythonu a jejímu nasdílení do registru kontejneru.
Související rozšíření
- Modul plug-in Azure DevOps pro PyCharm (IntelliJ) (Microsoft)
- Python v editoru Visual Studio Code (Microsoft)
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro