Nous avons déployé Jenkins pour automatiser les tâches techniques récurrentes qui, sans orchestrateur, seraient exécutées à la main. Un exemple concret : la construction des packages Chocolatey et leur publication automatique dans le repository Nexus Sonatype - une chaîne entièrement automatisée depuis la source jusqu'au déploiement.
Qu'est-ce que Jenkins ?
Jenkins est un serveur open source d'automatisation et d'intégration continue. Il orchestre la construction, les tests et le déploiement d'applications via des pipelines configurables.
Automatiser les tâches techniques sans intervention manuelle
Jenkins est un orchestrateur de tâches : il exécute des pipelines définis, déclenche des actions à des moments précis ou sur événement, et enchaîne des étapes complexes sans intervention humaine. Là où une opération manuelle dépend de la disponibilité et de la rigueur de l'opérateur, Jenkins l'exécute de façon identique à chaque fois.
Cas concret : construction et publication des packages Chocolatey
Un usage central de Jenkins dans notre stack est la gestion du cycle de vie des packages Chocolatey :
- Construction du package : Jenkins récupère les sources du package depuis GitLab, exécute le processus de build Chocolatey et génère le fichier
.nupkg. - Tests de validation : le package peut être soumis à des vérifications automatiques avant publication.
- Publication dans Nexus : une fois construit et validé, Jenkins envoie automatiquement le package dans le repository Nexus Sonatype. Il devient immédiatement disponible pour déploiement via
choco installouchoco upgradesur les postes.
Cette chaîne entièrement automatisée remplace une succession d'opérations manuelles : construire le package, se connecter à Nexus, uploader le fichier, vérifier la publication. Avec Jenkins, une modification du package dans GitLab déclenche automatiquement tout le reste.
De la modification du package dans GitLab à sa disponibilité dans Nexus pour déploiement sur les postes - sans aucune intervention manuelle entre les deux.
Un orchestrateur généraliste pour toutes les tâches automatisées
Au-delà des packages Chocolatey, Jenkins peut orchestrer n'importe quelle tâche technique récurrente : génération de rapports, vérifications planifiées, synchronisations entre systèmes, exécution de scripts de maintenance. Tout ce qui peut être décrit comme une suite d'étapes peut être automatisé dans Jenkins.
Déploiement conteneurisé, authentification centralisée et mises à jour maîtrisées
Cette application est déployée en conteneur Docker, orchestré et provisionné via Ansible. Cette approche garantit un déploiement reproductible, documenté et homogène d'un environnement à l'autre : la configuration est décrite sous forme de code, ce qui élimine les installations manuelles et fiabilise chaque mise en service.
Nous assurons les mises à jour de manière transparente pour les utilisateurs : les montées de version sont préparées, testées et appliquées de façon contrôlée, sans interruption perceptible du service. L'établissement bénéficie ainsi d'une application toujours à jour et sécurisée, sans avoir à gérer lui-même la complexité technique des mises à jour.
L'accès à cette application repose sur une authentification centralisée par OIDC avec Keycloak. Comme l'ensemble des applications que nous déployons, elle s'appuie sur un fournisseur d'identité unique : les utilisateurs se connectent avec les mêmes identifiants sur tout le parc applicatif, la gestion des accès est mutualisée et les règles de sécurité (mot de passe, second facteur, révocation) sont appliquées de façon homogène. Ce socle d'authentification unifié simplifie l'expérience utilisateur et renforce la maîtrise des accès à l'échelle du système d'information.
Notre déploiement
Jenkins est déployé en conteneur Docker, exposé via NGINX avec certificat Let's Encrypt, et authentifié via Keycloak. Les pipelines sont déclenchés depuis GitLab (webhooks sur les modifications de code) ou planifiés selon un calendrier. Les credentials nécessaires (accès Nexus, tokens GitLab) sont stockés dans le coffre-fort de Jenkins, jamais en clair dans les pipelines.
Intégration au système d'information
Jenkins est le liant technique entre les différents outils de la stack : il lit les sources depuis GitLab, construit les artefacts, les publie dans Nexus, et peut déclencher des actions complémentaires. Cette intégration crée une chaîne CI/CD cohérente où chaque outil joue son rôle : GitLab pour le code, Jenkins pour l'automatisation, Nexus pour le stockage des artefacts.
Bénéfices concrets
- Chaîne Chocolatey entièrement automatisée : de la modification du package à sa disponibilité dans Nexus, sans intervention manuelle.
- Fiabilité : chaque exécution est identique, sans risque d'erreur ou d'étape oubliée.
- Traçabilité : chaque build est enregistré avec ses logs, sa durée et son statut.
- Réutilisable : les pipelines définis pour Chocolatey/Nexus s'appliquent à d'autres packages ou workflows avec un minimum d'adaptation.
- Solution open source sans licence, intégrée aux autres outils de la stack (GitLab, Nexus, Keycloak).
Jenkins s'inscrit dans notre approche d'un système d'information hospitalier open source, souverain et maîtrisé, où chaque brique est déployée et documentée pour rester exploitable en autonomie par les équipes.
Un projet de déploiement open source ?
Nous déployons et intégrons des solutions open source souveraines pour les établissements de santé.
Demander un diagnostic de 30 min →