In dit artikel wordt beschreven hoe u het bouwen, testen, verpakken en leveren van Python-apps en -code in Azure Pipelines aanpast. Als u uw eerste pijplijn wilt maken met Python, raadpleegt u de Python-quickstart.
Met door Microsoft gehoste agents in Azure Pipelines kunt u uw Python-apps bouwen zonder dat u uw eigen infrastructuur hoeft in te stellen. Hulpprogramma's die u vaak gebruikt voor het bouwen, testen en uitvoeren van Python-apps, waaronder pip, zijn vooraf geïnstalleerd.
Als u Python-apps wilt bouwen met Azure Pipelines, hebt u een zelf-hostende agent nodig waarop Python is geïnstalleerd. Zie UsePythonVersion om Python op uw agent te installeren.
Een specifieke Python-versie gebruiken
Als u een specifieke versie van Python in uw pijplijn wilt gebruiken, voegt u de python-versietaak gebruiken toe aan azure-pipelines.yml. In het volgende voorbeeld van de YAML-pijplijndefinitie wordt de pijplijn ingesteld voor gebruik van Python 3.11.
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 python-versie. Stel vervolgens de UsePythonVersion taak in om te verwijzen naar de matrix variabele. Voorbeeld:
U kunt taken toevoegen die elke Python-versie in de matrix gebruiken.
Python-scripts uitvoeren
Als u Python-scripts vanuit uw opslagplaats wilt uitvoeren, gebruikt u een script element en geeft u een bestandsnaam op. Voorbeeld:
- script: python src/example.py
U kunt ook de Python-scripttaak gebruiken om inline Python-scripts uit te voeren.
- 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 actieve proces. U kunt of de geavanceerdere 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. In het volgende voorbeeld worden de installaties of upgrades en de setuptools pakketten geïnstalleerd of wheel bijgewerktpip.
Testen met pytest en metrische gegevens voor dekking verzamelen met pytest-cov
De volgende YAML-code installeert pytest en pytest-cov voert tests uit, waarbij testresultaten worden uitgevoerd in JUnit-indeling en uitvoercodedekkingsresultaten in Cobertura XML-indeling.
Azure Pipelines kan parallelle Tox-testtaken uitvoeren om het werk op te splitsen. Op een ontwikkelcomputer moet u uw testomgevingen in reeksen uitvoeren. In het volgende voorbeeld wordt gebruikt tox -e py om uit te voeren welke versie van Python actief is voor de huidige taak.
Voeg de taak Testresultaten publiceren toe om JUnit- of xUnit-testresultaten te publiceren op de server.
- task: PublishTestResults@2
condition: succeededOrFailed()
inputs:
testResultsFiles: '**/test-*.xml'
testRunTitle: 'Publish test results for Python $(python.version)'
Resultaten van codedekking publiceren
Voeg de taak Codedekkingsresultaten publiceren toe om resultaten van de codedekking naar de server te publiceren. U kunt metrische dekkingsgegevens in de samenvatting van de build bekijken en HTML-rapporten downloaden voor verdere analyse.
Als u wilt verifiëren met twine, gebruikt u de verificatietaak voor het uploaden van Python twine 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>
In dit leertraject leert u hoe u met anderen samenwerkt om voortdurend nieuwe versies van uw toepassingen te bouwen, te testen en te controleren met behulp van Azure Pipelines en GitHub.
Beheer gegevensopname en -voorbereiding, modeltraining en implementatie en bewaking van machine learning-oplossingen met Python, Azure Machine Learning en MLflow.