Gagnez l'application Web Python + Flask avec Jenkins

(-_-) .oO (Ne vous inquiétez pas pour le titre, c'est un problème à penser)

introduction

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

Choses à faire avant de lancer Jenkins

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

Travailler du côté de Jenkins

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

Gagnez l'application Web Python + Flask avec Jenkins
Application Web facile avec Python + Flask + Heroku
Application Web avec Python + Flask ② ③
Application Web avec Python + Flask ④
Exemple pour mettre l'application Web Python Flask sur Azure App Service (Web App)
(Échec) Déployer une application Web créée avec Flask avec heroku
[Python] Exécutez Flask sur Google App Engine
Démonisez une application Web Python avec Supervisor
Télécharger des fichiers sur le Web avec Python
Créez une application Web simple avec Flask
Exécutez des applications Web Python avec NGINX + NGINX Unit + Flask
Lancer un serveur Web avec Python et Flask
Exécutez Flask sur CentOS avec python3.4, Gunicorn + Nginx.
Programmation avec Python Flask
Déployer des applications Web Python 3.6 / Django / Postgres sur Azure
Apprentissage automatique facile avec scikit-learn et flask ✕ Application Web
Analyser et visualiser JSON (application Web ⑤ avec Python + Flask)
PIL en Python sur Windows8 (pour Google App Engine)
Web scraping avec python + JupyterLab
Développement d'applications Web avec Flask
API Web avec Python + Falcon
Web scraping débutant avec python
Rationalisez la recherche Web avec Python
Comment déployer une application Web créée avec Flask sur Heroku
Enregistrer des images sur le Web sur un lecteur avec Python (Colab)
Bases de SNS Python faites avec Flask
Premiers pas avec les applications Web Python
Web scraping avec Python Première étape
J'ai essayé webScraping avec python.
Exécutez l'application avec Flask + Heroku
Surveillez les applications Web Python avec Prometheus
Obtenez une capture d'écran Web avec python
Déployer l'application Flask sur heroku (amer)
Déployez l'application Flask sur Heroku
Notes sur l'utilisation de rstrip avec python.
Déployez l'application Flask sur heroku
Premiers pas avec Python 3.8 sous Windows
Développement d'applications avec Docker + Python + Flask
[Memo] Tweet sur Twitter avec Python
La première intelligence artificielle. Testez la sortie Web avec python. ~ Introduction du flacon
Application Web réalisée avec Python + Flask (en utilisant VScode) # 1-Construction d'environnement virtuel-
Créer une application Web de type Flask / Bottle sur AWS Lambda avec Chalice
Créez rapidement un environnement d'exécution d'application Web Python3.4 + Nginx + uWSGI + Flask en utilisant pyenv sur Ubuntu 12.04
Stockage de table Azure avec l'application PTVS Flask
Exécutez le servo avec Python sur ESP32 (Windows)
Déployer l'application flask avec mod_wsgi (à l'aide de pipenv)
Jouez comme une application Web avec ipywidgets
Premiers pas avec Python Web Scraping Practice
Uncle SES modernise l'application VBA avec Python
POSTER diversement avec Python et recevoir avec Flask
Intégration de données depuis l'application Python sur Linux vers Amazon Redshift avec ODBC
Un mémo contenant Python2.7 et Python3 dans CentOS
Carte des informations de location sur une carte avec python
Chase des applications actives sur Mac avec Python