(-_-) .oO (Mach dir keine Sorgen um den Titel, es ist mühsam darüber nachzudenken)
Ich habe versucht, Python + Flask-Webanwendung mit Jenkins zu erstellen, so dass Memo.
Die Verzeichnisstruktur sieht folgendermaßen aus (ich habe die Verzeichnisse gelöscht, die ich nicht sehen möchte).
% 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 (wie Stoff)
└── tools
Direkt unter dem obersten Verzeichnis befindet sich ein Verzeichnis namens project, unter dem alle Anwendungen bereitgestellt werden. Außerdem können Nosetests aus dem Projektverzeichnis ausgeführt werden, und alle Tests werden zu diesem Zeitpunkt bestanden. Installieren Sie außerdem die Abdeckung, damit die Abdeckung erhalten werden kann. Die Testausführungsmethode ist wie folgt.
% 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
Stellen Sie sicher, dass Sie das Pip-Freeze festschreiben, um die Umgebung mit virtualenv in Jenkins vorzubereiten (oder Sie können es einzeln mit der Shell ausführen, aber das Pip-Freeze ist in Anbetracht der Version einfach).
% source env/bin/activate
% cd project
% pip freeze > requirements.txt
% git add requirements.txt
% git commit
% git push origin master
Installieren Sie zunächst das von Ihnen verwendete VCS-Plug-In und das Cobertura-Plug-In, um die Abdeckung zu messen.
Erstellen Sie dann einen neuen Job und geben Sie den Repository-Pfad in der Quellcodeverwaltung ein. Wählen Sie dann unter Build-Prozeduren für Build hinzufügen die Option Shell ausführen aus und geben Sie Folgendes ein:
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 "Wenn Sie eine Kopie der Einstellungen haben oder etwas im Voraus tun müssen, tun Sie dies hier"
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
Da sich der Quellcode des letzten Sed nicht direkt unter dem Verzeichnis befindet, fügen Sie den relativen Pfad vom obersten Verzeichnis zum Pfad des Abdeckungsmessungsergebnisses hinzu, um das Problem zu lösen, dass der Quellcode in der Abdeckung nicht sichtbar ist (Referenz: [Hudson]). "Quellcode ist nicht verfügbar."](Http://stackoverflow.com/questions/2285672/hudson-source-code-is-unavailable/2915958#2915958 "Hudson" Quellcode ist nicht verfügbar. ")
Fügen Sie als Nächstes zwei Post-Build-Prozesse hinzu. Eine besteht darin, eine Zusammenfassung der JUnit-Testergebnisse hinzuzufügen und den folgenden Inhalt in das XML-Testergebnis zu kopieren.
project/nosetests.xml
Der andere fügt ein Aggregat für den Cobertura-Abdeckungsbericht hinzu und kopiert Folgendes in das Cobertura XML-Berichtsmuster:
project/tests/coverage2.xml
Speichern Sie nun den Build und führen Sie ihn aus.
Vielleicht freuen Sie sich über das Dashboard.
Recommended Posts