Installer et configurer Jenkins 2 sur Synology

Ce billet explique comment installer et configurer Jenkins 2 sur Synology. Nous avons vu précédemment comment installer Tomcat 8 sur Synology, je vous recommande d'y jeter un œil puisque nous allons avoir besoin de Java et d'un Tomcat maison. L'objectif est aussi de pouvoir accéder à notre Jenkins via un sous domaine jenkins.thorpora.fr par exemple, juste parce que c'est plus stylé 🙂

Installer et configurer Jenkins 2 sur Synology : jenkins logo

Pourquoi pas Docker ? A ma connaissance il y a peu d'intérêt à faire tourner un Jenkins dans un Docker sur notre NAS !

  • La plupart des NAS Syno ne sont pas des bêtes de courses, et bien qu'optimiser Docker constitue une surcouche inutile en termes de consommation de ressources.
  • Jenkins n'est constitué que d'un seul war, il n'y a aucune problématiques de déploiements ni même de configuration
  • Même si Docker pourrait être intéressant pour tuner finement la consommation de notre Jenkins, en réalité, vous devriez directement opter pour un hébergement externe si vous pensez avoir des problématiques de consommation de ressources. La problématique n°1 de l'intégration continue c'est le temps de build, ce n'est donc pas une bonne idée de réduire les ressources allouées à Jenkins.
  • Je ne connais pas suffisamment Docker 😛

En revanche, des slave Docker pourront être utilisés car eux présentent un réel intérêt, par exemple pour prioriser certains jobs par rapport à d'autres.

Introduction

Jenkins est un outil open source d'intégration continue. Écrit en Java, Jenkins fonctionne dans un conteneur de servlets tel qu’Apache Tomcat, ou en mode autonome avec son propre serveur Web embarqué. Il s'interface avec des systèmes de gestion de versions tels que CVS, Git et Subversion, et exécute des projets basés sur Apache Ant et Apache Maven aussi bien que des scripts arbitraires en shell Unix ou batch Windows.
wikipedia

Jenkins permet d'automatiser la construction de projets et de générer des rapports de tests et de qualité. De façon plus abstraite, ce n'est finalement qu'un orchestrateur de tâches. Jenkins est certainement l'outil d'intégration continue le plus populaire du marché :

  • Open Source (MIT)
  • Des centaines de plugins offrant une grande souplesse de configuration
  • Une interface web simple, fortement améliorée avec la version 2
  • Des rapports détaillés

Installation de Tomcat 8 sur Synology

Installer et configurer Jenkins 2 sur Synology : java et tomcat

Cet article suppose que vous disposez d'un minimum de connaissances techniques (ssh, git, github, etc). Par ailleurs, il est nécessaire d'avoir déjà java et Tomcat d'installés, pour cela vous pouvez regarder cet article.

 

Installer et configurer Jenkins 2 sur Synology

Télécharger l'archive (war)

  • Télécharger le war, version LTS (Long Time Support) depuis le site officiel : https://jenkins.io
  • Copier le fichier jenkins.war sur le syno
    • Pour l'exemple : /volume1/web/thorpora/jenkins/jenkins.war
  • Décompresser le war (7z x jenkins.war)

Mise à jour de la configuration Tomcat

Jenkins à besoin d'un répertoire de travail dédié pour fonctionner correctement (création de fichiers temporaires, etc). Il est donc nécessaire de mettre à jour une variable d'environnement, le plus propre est de mettre à jour le fichier setenv.sh. De plus, afin d'éviter l'erreur de fonte non trouvée, vous devrez également ajouter l'option tel que présenté ci-dessous. Enfin, mieux vaut également ne pas mettre de valeur trop basse pour la mémoire, Jenkins étant particulièrement gourmand.

grep -i jenkins /volume1/app/apache-tomcat-8.5.9/bin/setenv.sh
# Set Jenkins working directory (JENKINS_HOME)
export JENKINS_HOME="/volume1/app/jenkins_home"
# Active awt for Jenkins
export CATALINA_OPTS="$CATALINA_OPTS -Djava.awt.headless=true"
# Jenkins max heap
export CATALINA_OPTS="$CATALINA_OPTS -Xmx512m" # Jenkins
# Jenkins max perm (static)
export CATALINA_OPTS="$CATALINA_OPTS -XX:MaxPermSize=128m" # Jenkins

Il faut ensuite bien évidemment indiquer à Tomcat où allez chercher l'application jenkins :

cat /volume1/app/apache-tomcat-8.5.9/conf/Catalina/localhost/jenkins.xml         # ajustez en fonction de vos répertoires
<Context displayName="jenkins"
docBase="/volume1/web/thorpora/jenkins"
path="/jenkins"
reloadable="true" />

Si vous tentez tout de suite d'accéder à votre jenkins (192.168.xx.xx:8080/jenkins) sans la configuration des fontes (+awt) vous rencontrerez probablement cette erreur :

Installer et configurer Jenkins 2 sur Synology : erreur awt

Erreur : AWT n'est pas configuré correctement sur ce serveur. Peut-être devez-vous lancer votre conteneur avec "-Djava.awt.headless=true"?

Deux actions sont nécessaires pour corriger ce problème :

  • Ajouter l'option au démarrage de Tomcat comme indiqué ci-dessus
  • Installer la fonte manquante, personnellement j'ai opté pour la solution la plus simple :
    • ajouter la fonte manquante (ce fichier) directement là où elle aurait du être de base : /usr/share/fonts/TTF
    • décompresser le zip (7z x file)

Vérification de l'installation

Après redémarrage du Tomcat, vous devriez maintenant être en mesure de vous y connecter !

Installer et configurer Jenkins 2 sur Synology : étape de sécurité

Installer et configurer Jenkins 2 sur Synology : étape de sécurité

 

Installer et configurer Jenkins 2 sur Synology : plugins

Installer et configurer Jenkins 2 sur Synology : plugins

Installer et configurer Jenkins 2 sur Synology : welcome

Installer et configurer Jenkins 2 sur Synology : welcome

Accès internet depuis un vhost

La démarche à suivre est tout à fait similaire à celle présentée précédemment pour notre war hello-world. Dans le répertoire site-enabled, nous devons ajouter un vhost :

Je ne conseille pas d'écrire directement vos vhosts dans le répertoire site-enabled, mieux vos faire des liens symboliques de vos vhosts qui doivent être enregistrés en lieu sûr. Cela à notamment comme avantage de s'épargner des changements de configuration inattendus de Synology... Par ailleurs, je n'ai pas réussi à supprimer le contexte 'jenkins' via Nginx, cela engendre un problème de redirection infini au login, nous sommes donc obligés de rappeler ce contexte même si le nom du sous domaine est déjà explicite. Si vous avez une solution je suis preneur 🙂

Recharger la configuration Nginx : nginx -s reload

That's all ! Jenkins devrait être accessible depuis Internet 🙂

Problèmes de connexion

Visiblement il est très courant de constater des difficultés à se connecter avec Jenkins faute d'erreur de configuration. J'ai personnellement rencontré ce problème (création d'un compte admin qui ne peut plus se connecter après déconnexion). Pour une utilisation simple, vous pouvez suivre ces étapes :

  1. Arrêter Tomcat et ouvrir le fichier config.xml (situé dans votre répertoire $JENKINS_HOME)
  2. Modifier la balise <useSecurity> à false et supprimer les balises authorizationStrategy et securityRealm
  3. Démarrer Tomcat et se rentre sur Jenkins
  4. Activer la sécurité comme la popup le propose
  5. Choisir une base d'utilisateurs gérés par Jenkins avec autorisation de création de compte
  6. Les utilisateurs peuvent tout faire
  7. Se déconnecter et créer les utilisateurs dont on a besoin
  8. Si besoin il y a, vous pouvez éditer de nouveau le fichier config.xml pour y remodifier certaines options

Liens utiles sur le sujet :

 

Nous avons vu comment installer et configurer Jenkins 2 sur Synology nous verrons dans les prochains articles comment mettre en place un build automatisé pour la construction d'une application java (Spring Boot) branchée sur Github.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *