Passionné de nouvelles technologies
#jvm #docker #craftmanship #diy
Image d'Open
image de jenkins
Image jobs classiques
Histoire de faire du déploiement continu
Image de la conf pour chainer un job
image du pipeline plugin
Solution peu utilisable pour du déploiement continu
Le but du déploiement continu est d'avoir une application stable en production.
Pour ce faire, la chaine de livraison doit être automatisée au maximum pour réduire le travail entre une modification de code et sa livraison en production.
Ce n'est pas le but premier du déploiement continu.
Pouvoir livrer rapidement ne veut pas dire livrer régulièrement.
Capture d'écran de Go Delivery
image de configuration de workflow
Fichier de build en Groovy
Exprimer tout ce que pouvait faire un job simplement
Ajouter des principes supplémentaires
Convention de nommage pour éviter d'indiquer le nom en configuration du job
node {
git url: 'https://github.com/jglick/simple-maven-project-with-tests.git'
def mvnHome = tool 'M3'
sh "${mvnHome}/bin/mvn -B verify"
}
node {
git url: 'https://github.com/jglick/simple-maven-project-with-tests.git'
def mvnHome = tool 'M3'
sh "${mvnHome}/bin/mvn -B verify"
}
echo 'Compilation'
sh 'ls /tmp'
bat 'dir C:\tmp'
try {
checkpoint('Before production')
} catch (NoSuchMethodError _) {
echo 'Checkpoint feature available in CloudBees Jenkins Enterprise.'
}
def mvn(args) {
sh "${tool 'Maven 3.x'}/bin/mvn ${args}"
}
mvn 'clean install'
input 'Est-ce que la page ${url} est correcte ?'
Image du pause for input
node('unix && 64bit') {
sh 'make install'
}
$VAR en shell
env.VAR en groovy
for (int i = 0; i < splits.size(); i++) {
branches["split${i}"] = {
node('remote') {
sh 'rm -rf *'
sh "${tool 'M3'}/bin/mvn -B -Dmaven.test.failure.ignore test"
}
}
}
parallel branches
stage 'build'
sh "${tool 'M3'}/bin/mvn clean install"
stage concurrency: 1, name: 'deploy'
sh 'mv target/app.war /tmp/webapps/'
stage 'build'
sh "${tool 'M3'}/bin/mvn clean install"
stage name: 'deploy', concurrency: 1
sh 'mv target/app.war /tmp'