Python voor Azure-pijplijnen aanpassen
U kunt Azure Pipelines gebruiken om uw Python-apps te bouwen zonder dat u zelf een infrastructuur hoeft in te stellen. Hulpprogramma's die u vaak gebruikt voor het bouwen, testen en uitvoeren van Python-apps, zoals pip, worden vooraf geïnstalleerd op door Microsoft gehoste agents in Azure Pipelines.
Als u uw eerste pijplijn wilt maken met Python, raadpleegt u de Python-quickstart.
Een specifieke Python-versie gebruiken
Als u een specifieke versie van Python in uw pijplijn wilt gebruiken, voegt u de taak Python-versie gebruiken toe aan azure-pipelines.yml. Met dit fragment stelt u de pijplijn in voor het gebruik van Python 3.11:
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.11'
Meerdere Python-versies gebruiken
Als u een pijplijn met meerdere Python-versies wilt uitvoeren, bijvoorbeeld om een pakket te testen op basis van deze versies, definieert u een job
met een matrix
van Python-versies. Stel vervolgens de UsePythonVersion
taak in om te verwijzen naar de matrix
variabele.
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)'
U kunt taken toevoegen om uit te voeren met behulp van elke Python-versie in de matrix.
Python-scripts uitvoeren
Als u Python-scripts wilt uitvoeren in uw opslagplaats, gebruikt u een script
-element en geeft u een bestandsnaam op. Bijvoorbeeld:
- script: python src/example.py
U kunt ook inline Python-scripts uitvoeren met de python-scripttaak:
- task: PythonScript@0
inputs:
scriptSource: 'inline'
script: |
print('Hello world 1')
print('Hello world 2')
Als u de uitvoering van scripts wilt parameteriseren, gebruikt u de PythonScript
taak met arguments
waarden om argumenten door te geven aan het uitvoeringsproces. U kunt of de meer geavanceerde argparse
bibliotheek gebruiken sys.argv
om de argumenten te parseren.
- 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
Afhankelijkheden installeren
U kunt scripts gebruiken om specifieke PyPI-pakketten te installeren met pip
. Met deze YAML worden bijvoorbeeld de setuptools
pakketten en en wheel
geïnstalleerd of bijgewerktpip
.
- script: python -m pip install --upgrade pip setuptools wheel
displayName: 'Install tools'
Installatievereisten
Nadat u en vrienden hebt bijgewerkt pip
, is een typische volgende stap het installeren van afhankelijkheden van requirements.txt:
- script: pip install -r requirements.txt
displayName: 'Install requirements'
Tests uitvoeren
Gebruik scripts om verschillende tests in uw pijplijn te installeren en uit te voeren.
Linttests uitvoeren met vlok8
Als u deze wilt installeren of upgraden flake8
en gebruiken om linttests uit te voeren, gebruikt u deze YAML:
- script: |
python -m pip install flake8
flake8 .
displayName: 'Run lint tests'
Testen met pytest en metrische dekkingsgegevens verzamelen met pytest-cov
Gebruik deze YAML om en te installeren pytest
, pytest-cov
tests uit te voeren, testresultaten uit te voeren in JUnit-indeling en uitvoercodedekkingsresultaten in Cobertura XML-indeling:
- script: |
pip install pytest pytest-azurepipelines
pip install pytest-cov
pytest --doctest-modules --junitxml=junit/test-results.xml --cov=. --cov-report=xml
displayName: 'pytest'
Tests uitvoeren met Tox
Azure Pipelines kan parallelle Tox-testtaken uitvoeren om het werk op te splitsen. Op een ontwikkelcomputer moet u uw testomgevingen in serie uitvoeren. In dit voorbeeld wordt gebruikt tox -e py
om de versie van Python uit te voeren die actief is voor de huidige taak.
- 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'
Testresultaten publiceren
Voeg de taak Testresultaten publiceren toe om JUnit- of xUnit-testresultaten naar de server te publiceren:
- task: PublishTestResults@2
condition: succeededOrFailed()
inputs:
testResultsFiles: '**/test-*.xml'
testRunTitle: 'Publish test results for Python $(python.version)'
Resultaten van codedekking publiceren
Voeg de taak Resultaten van codedekking publiceren toe om resultaten van codedekking op de server te publiceren. U kunt metrische dekkingsgegevens bekijken in het buildoverzicht en HTML-rapporten downloaden voor verdere analyse.
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'
Code verpakken en bezorgen
Als u wilt verifiëren met twine
, gebruikt u de taak Twine Authenticate om verificatiereferenties op te slaan in de PYPIRC_PATH
omgevingsvariabele.
- task: TwineAuthenticate@0
inputs:
artifactFeed: '<Azure Artifacts feed name>'
pythonUploadServiceConnection: '<twine service connection from external organization>'
Voeg vervolgens een aangepast script toe dat wordt gebruikt twine
om uw pakketten te publiceren.
- script: |
twine upload -r "<feed or service connection name>" --config-file $(PYPIRC_PATH) <package path/files>
U kunt ook Azure Pipelines gebruiken om een installatiekopieën voor uw Python-app te bouwen en deze naar een containerregister te pushen.
Gerelateerde extensies
- Azure DevOps-invoegtoepassing voor PyCharm (IntelliJ) (Microsoft)
- Python in Visual Studio Code (Microsoft)
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor