Il s'avère que c'est possible. Il y a deux tâches d'intégration majeures : les résultats du test runner et les résultats de la couverture du code. Je suppose que la base de code Python 3 est normale et que le code standard unittest
suite de tests.
Test runner
Bamboo s'attend à ce que les résultats de l'exécution des tests soient Format XML de JUnit . Il y a piste d'essai séparée sur le Cheese Shop capable de produire une telle sortie, mais il vous faudrait écrire un peu de code pour l'exécuter, ce qui n'est pas agréable. Un meilleur moyen de garder la base de code intacte est d'utiliser pytest Les caractéristiques de l'entreprise.
Couverture du code
Bamboo ne supporte que le format XML de Atlassian Clover. Il est important de noter que vous n'avez pas besoin d'activer le plugin Atlassian Clover (et d'obtenir une licence pour celui-ci, ce qui coûte quelques dollars). Bamboo fonctionne de manière autonome.
Outil de couverture de code standard de facto pour Python, couverture produit quelque peu format XML Cobertura, mais il y a une convertisseur . Il y a un plugin pytest pour l'intégration avec l'outil de couverture.
Solution
Voici le Tox où j'ai utilisé pytest pour faire fonctionner les deux intégrations de Bamboo.
[tox]
envlist = py34
skipsdist = True
[testenv]
setenv = LANG=C.UTF-8
basepython = python3.4
deps = -r{toxinidir}/requirements.txt
[testenv:bamboo]
commands =
py.test --junitxml=results.xml \
--cov=project_name --cov-config=tox.ini --cov-report=xml \
--cov-report=html project_name/test
coverage2clover -i coverage.xml -o clover.xml
deps =
{[testenv]deps}
pytest
pytest-cov
coverage2clover
# read by pytest
[pytest]
python_files = *.py
# read by coverage
[run]
omit=project_name/test/*,project_name/__main__.py
Notez que pytest et pytest-cov utilisent tous deux tox.ini
pour la configuration qui n'est pas prise en charge par la ligne de commande. Cela vous évite une fois de plus d'avoir un encombrement supplémentaire dans la racine de votre dépôt. pytest tente de lire tox.ini
automatiquement. pytest-cov contourne à .coveragerc
mais parce que c'est aussi un fichier INI, tox.ini
correspond.
Du côté du bambou, ajoutez un script tâche qui fonctionne tox -e bamboo
. Puis ajoutez Tâche d'analyse JUnit à l'emploi. Dans son dialogue, sous Spécifier des répertoires de résultats personnalisés mettre results.xml
.
La configuration de la couverture se fait d'une autre manière.
- Ouvrir Divers onglet de votre emploi
- Vérifiez Utiliser Clover pour collecter la couverture de code pour cette construction.
- Sélectionnez Clover est déjà intégré dans cette version et un fichier clover.xml sera produit.
- Type
clover.xml
en Emplacement de Clover XML
À ce stade, dans votre prochaine construction, vous verrez la couverture totale et deux graphiques : Historique de la couverture y Historique des lignes de code . Il est également agréable de disposer d'un HTML interactif produit par l'outil de couverture, de sorte que vous puissiez accéder à certaines lignes de code.
Les réglages effectués ci-dessus (du moins dans Bamboo 5.7) ont créé Rapport Clover (système) en Artefact l'onglet du travail. Ouvrez-le et définissez htmlcov
a Localisation et *.*
a Copier le modèle . Bamboo va maintenant collecter les rapports HTML. Vous pouvez les voir à Trèfle de votre plan.