Personnaliser Python pour Azure Pipelines
Vous pouvez utiliser Azure Pipelines pour créer vos applications Python sans avoir à configurer votre propre infrastructure. Les outils que vous utilisez couramment pour générer, tester et exécuter des applications Python, comme pip, sont préinstallés sur les agents hébergés par Microsoft dans Azure Pipelines.
Pour créer votre premier pipeline avec Python, consultez le Guide de démarrage rapide Python.
Utilisation d’une version spécifique de Python
Pour utiliser une version spécifique de Python dans votre pipeline, ajoutez la tâche Utiliser la version de Python à azure-pipelines.yml. Cet extrait de code définit le pipeline pour qu’il utilise Python 3.11 :
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.11'
Utilisation de plusieurs versions de Python
Pour exécuter un pipeline avec plusieurs versions de Python, par exemple pour tester un package sur ces différentes versions, définissez un job
avec une matrix
de versions Python. Ensuite, définissez la tâche UsePythonVersion
pour référencer la variable 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)'
Vous pouvez ajouter des tâches à exécuter à l’aide de chaque version de Python dans la matrice.
Exécuter des scripts Python
Pour exécuter des scripts Python dans votre dépôt, utilisez un élément script
et spécifiez un nom de fichier. Par exemple :
- script: python src/example.py
vous pouvez également exécuter des scripts Python inclus avec la tâche Script Python :
- task: PythonScript@0
inputs:
scriptSource: 'inline'
script: |
print('Hello world 1')
print('Hello world 2')
Pour paramétrer l’exécution du script, utilisez la tâche PythonScript
avec arguments
des valeurs pour passer des arguments dans le processus en cours d’exécution. Vous pouvez utiliser sys.argv
ou la bibliothèque plus sophistiquée argparse
pour analyser les arguments.
- 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
Installer des dépendances
Vous pouvez utiliser des scripts pour installer des packages PyPI spécifiques avec pip
. Par exemple, ce YAML installe ou met à niveau pip
et les packages setuptools
et wheel
.
- script: python -m pip install --upgrade pip setuptools wheel
displayName: 'Install tools'
Configuration requise pour l’installation
Une fois que vous avez mis à jour pip
et amis, en général l’étape qui suit consiste à installer les dépendances à partir de requirements.txt.
- script: pip install -r requirements.txt
displayName: 'Install requirements'
Exécuter les tests
Utilisez des scripts pour installer et exécuter différents tests dans votre pipeline.
Exécuter des tests lint avec flake8
Pour installer ou mettre à niveau flake8
et l’utiliser pour exécuter des tests lint, utilisez ce YAML :
- script: |
python -m pip install flake8
flake8 .
displayName: 'Run lint tests'
Tester avec pytest et collecter des mesures de couverture avec pytest-cov
Utilisez ce YAML pour installer pytest
et pytest-cov
, exécuter des tests, générer des résultats de test au format JUnit et les résultats de couverture du code de sortie au format XML Cobertura :
- script: |
pip install pytest pytest-azurepipelines
pip install pytest-cov
pytest --doctest-modules --junitxml=junit/test-results.xml --cov=. --cov-report=xml
displayName: 'pytest'
Exécuter des tests avec Tox
Azure Pipelines peut exécuter des travaux de test Tox parallèles pour fractionner le travail. Sur un ordinateur de développement, vous devez exécuter vos environnements de test en série. Cet exemple utilise tox -e py
pour exécuter la version de Python active pour le travail actuel.
- 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'
Publier les résultats des tests
Ajoutez la tâche Publier les résultats des tests pour publier les résultats des tests JUnit ou xUnit sur le serveur :
- task: PublishTestResults@2
condition: succeededOrFailed()
inputs:
testResultsFiles: '**/test-*.xml'
testRunTitle: 'Publish test results for Python $(python.version)'
Publier les résultats de la couverture du code
Ajoutez la tâche Publier les résultats de la couverture du code pour publier les résultats de la couverture du code sur le serveur. Vous pouvez consulter les métriques de couverture dans le résumé de la build et télécharger des rapports HTML pour une analyse plus approfondie.
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'
Empaqueter et remettre du code
Pour vous authentifier auprès de twine
, utilisez la tâche Twine Authenticate pour stocker les informations d’identification d’authentification dans la variable d’environnement PYPIRC_PATH
.
- task: TwineAuthenticate@0
inputs:
artifactFeed: '<Azure Artifacts feed name>'
pythonUploadServiceConnection: '<twine service connection from external organization>'
Ensuite, ajoutez un script personnalisé qui utilise twine
pour publier vos packages.
- script: |
twine upload -r "<feed or service connection name>" --config-file $(PYPIRC_PATH) <package path/files>
Vous pouvez également utiliser Azure Pipelines pour créer une image pour votre application Python et l’envoyer (push) à un registre de conteneurs.
Extensions associées
- Plug-in Azure DevOps pour PyCharm (IntelliJ) (Microsoft)
- Python dans Visual Studio Code (Microsoft)
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : pendant toute l’année 2024, nous allons éliminer progressivement Problèmes GitHub comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, voir :Soumettre et afficher des commentaires pour