Développer une Jenkins shared library :
- Compiler en local (syntaxe groovy, imports de jenkins-core ou de plugins Jenkins)
- Tester en local (JUnit)
On n'explique pas comment ajouter le support pour Groovy dans tel ou tel IDE (VSCode, IntelliJ...)
- Compiler en local, syntaxe Groovy : démo 1
- Compiler en local, import depuis jenkins-core : démo 2
- Tester en local (TU) : démo 3
- Build d'un projet depuis un jenkins local, en appelant ce pipeline library : démo 4
Pour compiler le groovy on a besoin de :
- Fichier pom.xml
<configScript>${project.basedir}/groovy-compiler-config.groovy</configScript>
- Fichier groovy-compiler-config.groovy
Pour tirer la dépendance à jenkins-core on a besoin de :
- Fichier pom.xml
<dependency>
<groupId>org.jenkins-ci.main</groupId>
<artifactId>jenkins-core</artifactId>
<version>2.479.3</version>
</dependency>
(la version doit correspondre à celle du runtime Jenkins)
- Fichier settings.xml.
Attention : le fichier settings.xml ne doit pas a priori être placé à la racine du repo. C'est le cas ici pour faciliter la démo.
Build local, exécuter :
mvn clean package --settings ./settings.xml
TU local, exécuter :
mvn clean test --settings ./settings.xml
https://docs.groovy-lang.org/latest/html/documentation/tools-groovyc.html#_maven_integration
https://groovy.github.io/GMavenPlus/index.html
https://mvnrepository.com/artifact/org.codehaus.gmavenplus/gmavenplus-plugin
--> Dernière version : 4.1.1
http://groovy.github.io/GMavenPlus/compile-mojo.html#targetBytecode
--> Compatibilité GMavenPlus, Groovy, Java.
<targetBytecode>23</targetBytecode>
http://groovy.github.io/GMavenPlus/compile-mojo.html#configScript
http://groovy-lang.org/dsls.html#compilation-customizers
Important : CPS https://www.jenkins.io/doc/book/pipeline/cps-method-mismatches/
https://www.jenkins.io/doc/book/pipeline/shared-libraries/
https://hub.docker.com/_/jenkins
Pour exécuter un Jenkins en local :
sudo docker run -p 8080:8080 -p 50000:50000 --restart=on-failure -v $(pwd)/local_jenkins:/var/jenkins_home --dns 1.1.1.1 --dns 8.8.8.8 jenkins/jenkins:lts
sudo docker container exec -it 54d0f8ef5748 /bin/bash
Lors de l'install, on accepte les "suggested plugins"
Ajouter le plugin Node.JS (parce-que notre repo d'exemple build du node)
Configurer le plugin
Ensuite http://localhost:8080/manage/configureTools/
Ensuite configurer le job
https://www.tutorialspoint.com/groovy/groovy_unit_testing.htm