La demande du jour : étant donné que le build maven se fait via Jenkins, comment faire en sorte que Jenkins n'exécute pas les tests unitaires ?
Solution 1 : on crée un profil "skipTests" dans le pom.xml, dont le but est de ne jamais exécuter les tests (phase none).
Problème : les devs du projets vont voir ce profil, et risquent d'en profiter pour builder sans les tests en local.
Solution 2: dire à Jenkins de passer les tests. Comment ? Au lieu de faire mvn clean install
, qui va exécuter la phase test, on lui ajoute une property spéciale code-de-merde, ce qui donne :
mvn clean install -Dmaven.test.skip=true
Il suffit de placer cette commande dans le Jenkinsfile.
Bon d'accord, le fichier est aussi à la racine du répo git. Mais seul un curieux non allergique au groovy saura le lire.
C'est l'équipe de la qualité qui va être contente :D
Un récapitulatif des commandes utilisables dans un pipeline lors de la création d'un Jenkinsfile.
Lors de la création d'un job dans Jenkins, il se peut que l'erreur suivante apparaisse au moment d'indiquer le repository à suivre :
Failed to connect to repository : Command "git ls-remote -h https://monsite.com/scm/mon_repo.git HEAD"
Voire même :
Failed to connect to repository : Command "git ls-remote -h https://monsite.com/scm/mon_repo.git HEAD" returned status code 128:
stdout:
stderr: fatal: unable to access 'https://monsite.com/scm/mon_repo.git/': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
Cela arrive quand le serveur contenant les répo utilise un certificat SSL auto-signé. Pour remédier à ce problème, il faut :
/etc/ssl/certs/
du serveur hébergeant Jenkins.Jenkins devrait maintenant accepter le répo sans broncher.
Pour lancer jenkins :
java -jar jenkins.war
Si une erreur au lancement indique que Jetty n'a pas pu être lancé, cela signifie que le port sur lequel Jetty voulait mettre Jenkins en écoute est occupé. Pour résoudre ce problème :
Pour cela, il suffit d'ajouter l'option --httpPort à la ligne de commande :
java -jar jenkins.war --httpPort=12345
Et voilà !