Django
Intégration continue avec Jenkins
Recherche…
Script de pipeline Jenkins 2.0+
Les versions modernes de Jenkins (version 2.x) sont livrées avec un "plug-in de pipeline" qui peut être utilisé pour orchestrer des tâches complexes sans créer une multitude de tâches interconnectées, et vous permet de contrôler facilement la version de votre configuration.
Vous pouvez l'installer manuellement dans un travail de type "Pipeline" ou, si votre projet est hébergé sur Github, vous pouvez utiliser le "GitHub Organization Folder Plugin" pour configurer automatiquement les tâches pour vous.
Voici une configuration simple pour les sites Django qui nécessitent uniquement l'installation des modules python spécifiés sur le site.
#!/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'
}
Script de pipeline Jenkins 2.0+, conteneurs Docker
Voici un exemple de script de pipeline qui génère un conteneur Docker, puis exécute les tests à l'intérieur de celui-ci. Le point d'entrée est supposé être manage.py
ou invoke
/ fabric
avec une commande runtests
disponible.
#!/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}"
}
}