(-_-) .oO (Ne vous inquiétez pas pour le titre, c'est un problème à penser)
J'ai essayé de créer une application Web Python + Flask avec Jenkins, donc ce mémo.
La structure des répertoires ressemble à ceci (j'ai supprimé les répertoires que je ne veux pas voir).
% tree -d
.
├── env (virtual env)
├── project
│ ├── app
│ ├── conf
│ ├── logs
│ ├── models
│ │ └── mongo
│ ├── services
│ ├── static
│ ├── templates
│ ├── tests
│ │ ├── app
│ │ ├── cover
│ │ ├── data
│ │ ├── models
│ │ │ └── mongo
│ │ ├── services
│ │ ├── utils
│ │ └── view
│ └── utils
└── script
├── deploy (comme le tissu)
└── tools
Il existe un répertoire appelé project directement sous le répertoire supérieur et toutes les applications sont déployées sous celui-ci. De plus, nosetests peuvent être exécutés à partir du répertoire du projet et tous les tests réussissent à ce stade. De plus, installez une couverture pour obtenir une couverture. La méthode d'exécution du test est la suivante.
% source env/bin/activate
% cd project
% export PYTHONPATH=$PYTHONPATH:`pwd`
% nosetests -v -w tests/ --with-coverage --with-xunit --cover-package=app --cover-package=models --cover-package=services --cover-package=utils --cover-html --cover-xml
Assurez-vous de valider le pip freeze afin de préparer l'environnement avec virtualenv dans Jenkins (ou vous pouvez l'exécuter avec le shell un par un, mais pip freeze est facile compte tenu de la version).
% source env/bin/activate
% cd project
% pip freeze > requirements.txt
% git add requirements.txt
% git commit
% git push origin master
Tout d'abord, installez le plug-in VCS que vous utilisez et le plug-in Cobertura pour mesurer la couverture.
Créez ensuite un nouveau travail et entrez le chemin du référentiel dans Contrôle du code source. Ensuite, sélectionnez Exécuter Shell à partir de Ajouter des procédures de construction pour la construction et tapez:
if [ ! -d venv ]; then
virtualenv --distribute venv
fi
source venv/bin/activate
cd project
pip install -r requirements.txt
export PYTHONPATH=$PYTHONPATH:$WORKSPACE/project
echo "Si vous avez une copie des paramètres ou quelque chose à faire à l'avance, faites-le ici"
nosetests -v -w tests/ --with-coverage --with-xunit --cover-package=app --cover-package=models --cover-package=services --cover-package=utils --cover-html --cover-xml
sed "s|filename=\"|filename=\"project/|g" $WORKSPACE/project/tests/coverage.xml > $WORKSPACE/project/tests/coverage2.xml
Comme le code source du dernier sed n'est pas directement sous le répertoire, ajoutez le chemin relatif du répertoire supérieur au chemin du résultat de la mesure de couverture pour résoudre le problème que le code source ne peut pas être vu dans la couverture (Référence: [Hudson] "Le code source n'est pas disponible."](Http://stackoverflow.com/questions/2285672/hudson-source-code-is-unavailable/2915958#2915958 "Hudson" Le code source n'est pas disponible. ""))
Ensuite, ajoutez deux processus de post-construction. La première consiste à ajouter un résumé des résultats du test JUnit et à copier le contenu suivant dans le XML de résultat du test.
project/nosetests.xml
L'autre ajoute un agrégat pour le rapport de couverture Cobertura et copie les éléments suivants dans le modèle de rapport XML Cobertura:
project/tests/coverage2.xml
Maintenant, enregistrez et exécutez la compilation.
Vous serez peut-être heureux de voir le tableau de bord.
Recommended Posts