Django
Kontinuierliche Integration mit Jenkins
Suche…
Jenkins 2.0+ Pipeline Script
Moderne Versionen von Jenkins (Version 2.x) verfügen über ein "Build Pipeline Plugin", mit dem komplexe CI-Tasks koordiniert werden können, ohne dass eine Vielzahl miteinander verbundener Jobs erstellt wird. Außerdem können Sie Ihre Build- / Test-Konfiguration auf einfache Weise versionieren.
Sie können dies manuell in einem Auftrag vom Typ "Pipeline" installieren. Wenn Ihr Projekt auf Github gehostet wird, können Sie das "GitHub Organization Folder Plugin" verwenden, um automatisch Jobs für Sie einzurichten.
Hier eine einfache Konfiguration für Django-Sites, für die nur die angegebenen Python-Module der Site installiert werden müssen.
#!/usr/bin/groovy
node {
// If you are having issues with your project not getting updated,
// try uncommenting the following lines.
//stage 'Checkout'
//checkout scm
//sh 'git submodule update --init --recursive'
stage 'Update Python Modules'
// Create a virtualenv in this folder, and install or upgrade packages
// specified in requirements.txt; https://pip.readthedocs.io/en/1.1/requirements.html
sh 'virtualenv env && source env/bin/activate && pip install --upgrade -r requirements.txt'
stage 'Test'
// Invoke Django's tests
sh 'source env/bin/activate && python ./manage.py runtests'
}
Jenkins 2.0+ Pipeline Script, Docker Container
Hier ist ein Beispiel eines Pipeline-Skripts, das einen Docker-Container erstellt und die darin enthaltenen Tests ausführt. Der Einstiegspunkt wird angenommen, dass sie entweder manage.py
oder invoke
/ fabric
mit runtests
verfügbaren Befehls.
#!/usr/bin/groovy
node {
stage 'Checkout'
checkout scm
sh 'git submodule update --init --recursive'
imageName = 'mycontainer:build'
remotes = [
'dockerhub-account',
]
stage 'Build'
def djangoImage = docker.build imageName
stage 'Run Tests'
djangoImage.run('', 'runtests')
stage 'Push'
for (int i = 0; i < remotes.size(); i++) {
sh "docker tag ${imageName} ${remotes[i]}/${imageName}"
sh "docker push ${remotes[i]}/${imageName}"
}
}