Skip to content

avergnaud/simple-pipeline-library

Repository files navigation

simple-pipeline-library

Besoin

Développer une Jenkins shared library :

  • Compiler en local (syntaxe groovy, imports de jenkins-core ou de plugins Jenkins)
  • Tester en local (JUnit)

Problématique de l'IDE

On n'explique pas comment ajouter le support pour Groovy dans tel ou tel IDE (VSCode, IntelliJ...)

Solution

Démos

  • 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

Détails de la solution

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

Détails de la démo

étape 1 : vérifier la syntaxe groovy à la compilation

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

étape 2 : compiler avec les API Jenkins

Important : CPS https://www.jenkins.io/doc/book/pipeline/cps-method-mismatches/

https://www.jenkins.io/doc/book/pipeline/shared-libraries/

https://javadoc.jenkins.io/

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

install initiale de jenkins

install jenkins step 1

sudo docker container exec -it 54d0f8ef5748 /bin/bash

Lors de l'install, on accepte les "suggested plugins"

install jenkins step 2

plugin Node.JS

Ajouter le plugin Node.JS (parce-que notre repo d'exemple build du node)

install jenkins step 3

Configurer le plugin

Ensuite http://localhost:8080/manage/configureTools/

install jenkins step 4

job qui build l'app node.JS

Ensuite configurer le job

setup build step 1

setup build step 2

configuration pipeline library

configure shared library

étape 3 TU

https://www.tutorialspoint.com/groovy/groovy_unit_testing.htm

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages