Installation de Jenkins sur son PC avec docker pour une intégration continue personnalisée !

jenkins et docker et dotnet

D’hudson, l’outil le plus connu pour effectuer des intégration et livraison continues s’est transformé voilà quelques années en Jenkins.
Jenkins, c’est un outil formidable, totalement gratuit et open source. Il vous permet de paramétrer votre intégration continue, vos livraisons continues.
Et si nous l’utilisions en local, avec docker ? Ca serait merveilleux, non ?

 

Une première tentative avec docker et jenkins

Quand on travaille avec docker, nous devons prendre comme réflexe de bien choisir notre image. Chaque image peut être récupérée et construite en local.
De plus, point fort et merveilleux avec docker, on peut construire une image docker en local, faite de plusieurs conteneur récupérés : c’est l’assemblage de container !

 

Images venant du hub des images

Nous avons le choix entre deux images à récupérer :

 

Bon déjà, on voit ici la confusion … laquelle choisir …
Et puis, il y a un point qui peut être bien bien bloquant : le système d’exploitation de l’image !

 

Les actions pour installer lancer jenkins en local

  1. Récupérer l’une des deux images, mettons : docker pull jenkins/jenkins
  2. Lancement de docker pour exécuter le container en local : docker run -d -p 8080:8080 -p 50000:50000 -v C:\Users\evan\jenkins:/var/jenkins_home jenkins/jenkins
    point important ici, nous utilisons le –v, qui permet de sauvegarder les données de jenkins sur notre pc
    le –d lance l’exécution en tâche de fond

 

Que ce soit pour l’une ou l’autre image, la récupération et le lancement en local se passe sans encombre … si vous ne souhaitez pas :

 

Zoom sur Blue Ocean

De tous nos essais, nous n’avons pas encore réussi à bien faire fonctionner Blue Ocean, avec :

  1. un pc windows (une surface windows 10 pro)
  2. un projet simple sous github
  3. une seul étape de build
  4. une seule branche dans le pipeline des builds

 

Ah oui, pour avoir Blue Ocean, vous devez aller dans les extensions de jenkins, une fois installé. Et cocher tout ce qui a rapport à Blue Ocean.

Ou bien utiliser une image avec jenkins et Blue Ocean de pré-installée.

 

Bon pour nous, même avec cette astuce, rien n’a changé : Blue Ocean buggue et ne veut pas lancer la récupération de notre espace de travail github …

 

Test avec un projet freestyle

Dans jenkins, à la place de Blue Ocean, vous pouvez aussi utiliser les projets de base, eux qui existent depuis les débuts de jenkins.
Prenons par exemple, le projet FreeStyle.

image

Ici, vous pouvez, grâce à l’extension Github récupérer votre projet Github et lancer un pull en local, dans votre container !

Tout fonctionne bien ici !

Un gros problème arrive : utiliser dotnet cli

Nous souhaitons compiler notre projet dotnet depuis notre container jenkins.

Or, le container est sous linux Alpine. Et même si l’installation de dotnet est possible depuis un Alpine … elle est douloureuse, et bugguée !

 

Changement de stratégie : construction d’une image personnalisée

Pour pallier à ce problème, nous avons fait … l’inverse :

    1. Création d’un fichier DockerFile.
      Vous pouvez le récupérer pour une configuration dotnet jenkins
    2. Construction de notre image grâce au fichier DockerFile
      Avec la commande (il faut se placer dans le dossier oĂą se trouve le fichier DockerFIle):
docker build –t jenkinsdotnet .
  1. Exécution de notre container depuis notre image personnalisée.

 

Et lĂ , au miracle, tout fonctionne ! Smile

 

Installation de nodejs et npm pour installer TypeScript

Enfin, notre projet contenant et du dotnet et de l’angular, nous avons besoin d’installer TypeScript dans le docker.

Deux choix s’offrent à nous :

  1. Mettre à jour le DockerFile pour l’inclure dans la construction de l’image
  2. L’installer depuis le container créé et exécuté.

 

Nous avons choisi l’option deux, en nous connectant en sh à notre container :

docker exec -u root -t -i container_id /bin/bash

Et lancer les commandes suivantes :

carbon - 2019-06-15T120711.183

 

And voilà, tout est installé et prêt pour les prochaines étapes pour notre projet Angular / dotnet core !

 


Nous reviendrons très prochainement sur la suite de nos aventures avec jenkins, dotnet et Angular. Smile

Notre adresse

1 rue du guesclin
44000 Nantes

Notre téléphone

+33 2 79 65 52 87

Société

DevToBeCurious SARL
84860163900018 - Nantes B 848 601 639