GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Qu'est-ce que Jenkins ?

Présentation

Jenkins est une plate-forme permettant de créer un environnement d'intégration continue/livraison continue (CI/CD). Le système propose de nombreux outils, langages et tâches d'automatisation différents pour faciliter la création de pipelines lors du développement et du déploiement de programmes.

Bien que Jenkins nécessite de scripter certaines étapes d'automatisation, le programme fournit un moyen rapide et robuste de systématiser le cycle de vie du développement logiciel.

Poursuivez votre lecture pour en savoir plus sur Jenkins et pourquoi il s'agit de l'un des principaux outils DevOps actuels.

Définition de Jenkins

Jenkins est un serveur d'automatisation écrit en Java qui aide à créer, tester et déployer continuellement des logiciels. Le système open source est actuellement l'un des principaux serveurs d'automatisation.

En général, Jenkins prend en charge :

  • Divers outils de contrôle de version tels que Git.
  • Création de projets basés sur Ant et Apache Maven
  • Exécuter des scripts Bash et des fichiers batch Windows.

Une brève histoire de Jenkins

Le projet Jenkins a débuté en 2004 sous le nom de Hudson. Le développeur Kohsuke Kawaguchi, qui travaillait chez Sun Systems, voulait créer une méthode pour effectuer une intégration continue. L'idée était de tester le code avant de s'engager pour éviter de casser les builds.

L'idée s'est avérée fructueuse et s'est rapidement propagée au reste de son équipe. En conséquence, Kohsuke Kawaguch a créé le projet Jenkins et a ouvert le programme. L'utilisation s'est répandue dans le monde entier avec une estimation actuelle de 1,6 million d'utilisateurs .

À quoi sert Jenkins ?

Bien que Jenkins ait commencé comme un outil d'intégration continue, l'utilisation actuelle couvre l'ensemble du pipeline de livraison de logiciels, y compris le déploiement.

Le programme exécute des conteneurs Web et des plug-ins, tels qu'Apache Tomcat, et aide à gérer le cycle de vie et les demandes de droits d'accès. Plus de 1700 plugins pour Jenkins enrichissent les processus d'intégration, d'automatisation et de livraison de logiciels et fournissent un environnement personnalisable.

Terminologie de base Jenkins

Jenkins englobe diverses terminologies DevOps dans différentes options de création et de gestion de pipeline. Vous trouverez ci-dessous une liste de quelques termes courants et leur définition.

Pipeline Jenkins

Le pipeline Jenkins est un modèle créé par l'utilisateur pour le pipeline de livraison continue. Le Pipeline intègre divers plugins qui aident à définir les étapes de la procédure, du contrôle de version aux utilisateurs.

Toutes les modifications logicielles et les validations passent par un processus complexe avant la publication. La méthode comprend trois étapes :

  • Bâtiment automatisé .
  • Tests en plusieurs étapes .
  • Déploiement procédures.

Dans Jenkins, il existe deux façons de créer un pipeline :

  1. Définissez le pipeline directement via l'interface utilisateur.
  2. Utiliser le pipeline comme code méthodologie et créer un Jenkinsfile . Le fichier texte utilise une syntaxe compatible Groovy pour définir le processus de pipeline.

Le Jenkinsfile la syntaxe est soit déclarative ou scripté .

Un déclaratif de base Fichier Jenkins pipeline est plus simple à comprendre. Un exemple ressemble à ce qui suit :

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Building…'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing…'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying...'
            }
        }
    }
}

Le code contient les éléments suivants :

  • Le pipeline pipeline { } block invoque le plug-in Jenkins Pipeline.
  • Le mot-clé agent définit où le Pipeline s'exécute, où any indique que le Pipeline s'exécute sur n'importe quel agent disponible.
  • Les stages { } bloc représente la séquence dans laquelle le Pipeline s'exécute.
  • Le code contient trois étapes :Build , Test et Deploy , chacun avec ses stages { } respectives .
  • Les stages { } dire à Jenkins quoi faire à un moment donné.

Le scénarisé équivalent du Jenkinsfile ressemble à ceci :

node {  
    stage('Build') { 
        echo 'Building…'
    }
    stage('Test') { 
        echo 'Testing…'
    }
    stage('Deploy') { 
        echo 'Deploying…'
    }
}

L'archivage d'un fichier Jenkins dans un outil de contrôle de source permet à toute l'équipe de modifier, de réviser et d'adapter les étapes du pipeline de livraison.

Intégration continue

L'intégration continue est une procédure de développement logiciel dans laquelle chaque modification appliquée appelle un test de construction automatisé. Le processus garantit que le code s'intègre dans un formulaire exécutable fonctionnel sans bogues.

L'intégration continue est un aspect essentiel dans les environnements avec plusieurs développeurs. Chaque développeur apporte des modifications au code, et chaque modification présente des problèmes potentiels.

Un outil d'intégration continue tel que Jenkins permet de tester, d'identifier et de résoudre les problèmes avant d'appliquer les modifications à la production.

Tests automatisés

Les tests automatisés pour Jenkins prédéfinissent l'exécution des tests et stockent les résultats. L'idée est de s'assurer que le code fonctionne dans divers scénarios. La création de tests automatisés pour des environnements distincts, tels que plusieurs versions de Java ou systèmes d'exploitation, aide à prévoir et à prévenir les problèmes dans les versions ultérieures.

Les phases de test automatisées s'intègrent de manière transparente dans le pipeline CI de Jenkins. Divers plugins permettent d'exécuter des tests unitaires, d'intégration, fonctionnels et de régression et de stocker les résultats pour une visualisation et une analyse ultérieures.

Contrôleur (anciennement maître)

L'architecture Jenkins s'adresse aux versions distribuées. Un nœud est l'unité de contrôle centrale et l'organisateur, connu sous le nom de contrôleur.

Le contrôleur est le processus central où résident les configurations Jenkins. Anciennement connu sous le nom de Master, le contrôleur Jenkins gère les agents et leurs connexions, aide à charger les plugins et coordonne le flux du projet.

Agent (anciennement esclave)

Les agents se connectent au contrôleur Jenkins pour exécuter des projets. Les agents nécessitent une installation Java sur une machine physique ou virtuelle, telle que des instances Bare Metal Cloud, des images Docker ou des clusters Kubernetes.

Les agents de Jenkins aident à fournir de meilleures performances en équilibrant la charge des builds et en créant un environnement sécurisé, séparé du contrôleur.

Nœud

Un nœud est un terme général désignant les agents et les contrôleurs, quel que soit leur rôle réel. Toute machine capable de créer des projets et des pipelines est un nœud Jenkins, et le contrôleur est connu sous le nom de nœud intégré .

Le nœud intégré surveille la santé de tous les nœuds connectés et les met hors ligne si des valeurs dépassent un seuil.

Projet (anciennement Job)

Un projet Jenkins, ou un travail, est une procédure d'automatisation créée par l'utilisateur avec un objectif particulier. Jenkins propose différentes tâches de build par défaut, et d'autres sont disponibles via des plugins.

Vous trouverez ci-dessous un tableau avec une brève description de certains types de projets.

Projet Description
Style libre Une tâche de construction sans restriction avec plusieurs opérations.
Pipeline Un projet en plusieurs étapes avec plusieurs agents de build.
Multi-configuration Un projet avec plusieurs environnements de test et différentes configurations.
Pipeline multi-branches Un projet qui crée un ensemble de projets de pipeline en fonction des branches dans un système de gestion de contrôle de code source.

Construire

Dans Jenkins, les builds représentent l'exécution unique d'un travail avec la configuration actuelle. Un build crée un logiciel à partir de différentes sources définies dans la procédure du projet. Selon le projet, les mécanismes de génération incluent :

  • Regrouper les dépendances.
  • Compiler ou transformer du code.
  • Archivage des documents.
  • Test.
  • Déploiement dans différents environnements

Par conséquent, une génération est une exécution d'un projet défini avec différentes étapes.

Comment fonctionne Jenkins ?

Jenkins suit les étapes de développement de l'intégration au déploiement , automatisant chaque étape du processus.

Chaque fois qu'un développeur publie un commit dans le référentiel de code source, Jenkins déclenche un build. En règle générale, les commits sont publiés dans une branche de développement.

Les étapes de construction incluent le test du code, en s'assurant que la construction ne se casse pas. Si une erreur se produit, Jenkins informe le développeur d'agir en conséquence. Si tous les tests réussissent, le Pipeline passe aux étapes d'intégration.

L'intégration prend plus de temps et nécessite de tester le code sur plusieurs configurations système. Jenkins effectue des tests d'intégration parallèles sur différents nœuds, réduisant ainsi le temps nécessaire pour essayer d'intégrer le code.

Plus loin dans le pipeline, Jenkins automatise les tests d'acceptation des utilisateurs, ce qui est une exigence avant le déploiement. Si tous les tests réussissent, le code fusionne dans la branche principale, mettant le code à la disposition des utilisateurs.

Fonctionnalités Jenkins

Les principales fonctionnalités de Jenkins sont :

  • Installation facile . Le programme basé sur Java est autonome et indépendant de la plate-forme.
  • Simple à configurer . L'interface Web conviviale facilite la configuration. Pour la première configuration, reportez-vous à notre didacticiel Jenkins.
  • Personnalisable avec une disponibilité massive de plug-ins . Actuellement, il existe plus de 1700 plugins disponibles pour étendre les fonctionnalités de Jenkins. Pour toute fonctionnalité manquante, importez des plug-ins externes ou personnalisés supplémentaires.
  • Open source . Jenkins est entièrement open source et gratuit, ce qui en fait une technologie peu coûteuse à mettre en œuvre.

Avantages et inconvénients de Jenkins

Jenkins présente certains avantages et inconvénients. Vous trouverez ci-dessous un aperçu détaillé des avantages et des inconvénients de travailler avec Jenkins.

Avantages de Jenkins

Certains avantages de Jenkins sont :

  • Cycle de développement plus rapide . Les builds et les tests sur chaque commit créent un environnement rapide pour se débarrasser des bogues. Les nouvelles fonctionnalités et versions parviennent à l'utilisateur final plus rapidement et avec moins d'erreurs.
  • Moins de temps pour intégrer le code . Avant Jenkins, l'intégration du code était un processus manuel et le débogage du code était complexe. Atteindre une version de travail nécessiterait de passer par divers commits et d'analyser les problèmes. Lorsque vous utilisez Jenkins, l'intégration après chaque validation garantit que la fonctionnalité du programme est toujours disponible et opérationnelle.
  • Commentaires rapides pour les développeurs . Chaque fois qu'une version est interrompue, les développeurs restent informés. Le système de commentaires aide l'équipe de développement à résoudre rapidement les problèmes au lieu de déboguer de nombreux commits.
  • Flux de travail de pipeline automatisé . Les tests automatisés pour chaque validation s'intègrent directement dans le pipeline.

Inconvénients de Jenkins

Voici quelques inconvénients lorsque vous travaillez avec Jenkins :

  • Coûteux . Bien que Jenkins soit gratuit, le programme nécessite une infrastructure stable et robuste.
  • Entretien constant . La maintenance d'un serveur Jenkins prend du temps. L'ajout d'étapes à un pipeline, la mise à niveau du serveur avec de nouvelles fonctionnalités et le suivi des mises à jour du plug-in nécessitent qu'un administrateur redémarre et gère le serveur manuellement.
  • Centré sur les développeurs . La plate-forme est axée sur les fonctionnalités et n'est pas très conviviale pour les non-développeurs. Une certaine expérience de développeur est indispensable lorsque vous travaillez avec Jenkins.

Comment installer Jenkins

Jenkins travaille sur divers systèmes d'exploitation et environnements. L'installation est disponible sous plusieurs formes, telles que :

  • Packages d'installation pour les principaux systèmes d'exploitation, tels que Windows, Ubuntu, Debian, CentOS, etc.
  • Un fichier d'archive WAR.
  • Une image Docker.
  • Sur un cluster Kubernetes.
  • Création du code source.

Jenkins s'exécute en tant que package autonome ou sur un serveur d'applications Java. L'interface utilisateur est basée sur le Web et est livrée avec une API REST dans les deux cas.


Ubuntu
  1. Qu'est-ce que le cloud bare metal

  2. Qu'est-ce qu'un DataFrame Spark ?

  3. Qu'est-ce que le Web 3.0 ?

  4. Qu'est-ce que JingOS Linux ?

  5. Comment utiliser la commande source dans le script de pipeline Jenkins

Qu'est-ce que l'hôte local 127.0.0.1 ?

Comment installer Jenkins sur Ubuntu 18.04

Comment installer Jenkins sur Ubuntu 20.04 / Ubuntu 18.04

Qu'est-ce que Localhost ?

Qu'est-ce que l'empoisonnement du cache DNS ?

Comment installer Jenkins sur Ubuntu 14.04