GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Cos'è Jenkins?

Introduzione

Jenkins è una piattaforma per la creazione di un ambiente di integrazione continua/consegna continua (CI/CD). Il sistema offre molti strumenti, linguaggi e attività di automazione diversi per facilitare la creazione della pipeline durante lo sviluppo e la distribuzione di programmi.

Sebbene Jenkins richieda lo scripting di alcuni passaggi di automazione, il programma fornisce un modo rapido e affidabile per sistematizzare il ciclo di vita dello sviluppo del software.

Continua a leggere per saperne di più su Jenkins e perché è uno degli strumenti DevOps leader oggi.

Definizione di Jenkins

Jenkins è un server di automazione scritto in Java che aiuta a creare, testare e distribuire continuamente il software. Il sistema open source è attualmente uno dei principali server di automazione.

In generale, Jenkins fornisce supporto per:

  • Vari strumenti di controllo della versione come Git.
  • Costruire progetti basati su Ant e Apache Maven.
  • Esecuzione di script Bash e file batch di Windows.

Una breve storia di Jenkins

Il progetto Jenkins è iniziato nel 2004 con il nome di Hudson. Lo sviluppatore Kohsuke Kawaguchi, che ha lavorato presso Sun Systems, ha voluto creare un metodo per eseguire l'integrazione continua. L'idea era di testare il codice prima di impegnarsi per evitare di interrompere le build.

L'idea ha avuto successo e si è rapidamente diffusa al resto della sua squadra. Di conseguenza, Kohsuke Kawaguch ha creato il progetto Jenkins e ha reso open source il programma. L'utilizzo si è diffuso in tutto il mondo con una stima attuale di 1,6 milioni di utenti .

A cosa serve Jenkins?

Sebbene Jenkins sia nato come strumento di integrazione continua, l'uso attuale copre l'intera pipeline di distribuzione del software, inclusa la distribuzione.

Il programma esegue contenitori Web e plug-in, come Apache Tomcat, e aiuta a gestire il ciclo di vita e le richieste di diritti di accesso. Oltre 1700 plug-in per Jenkins arricchiscono i processi di integrazione, automazione e distribuzione del software e forniscono un ambiente personalizzabile.

Terminologia principale di Jenkins

Jenkins comprende varie terminologie DevOps in diverse opzioni di creazione e gestione della pipeline. Di seguito è riportato un elenco con alcuni termini comuni e la loro definizione.

Condotto Jenkins

La Jenkins Pipeline è un modello creato dall'utente per la pipeline di consegna continua. La pipeline incorpora vari plugin che aiutano a definire i passaggi della procedura dal controllo della versione agli utenti.

Tutte le modifiche e i commit del software passano attraverso un processo complesso prima del rilascio. Il metodo include tre passaggi :

  • Costruzione automatica .
  • Test in più fasi .
  • Distribuzione in corso procedure.

In Jenkins, ci sono due modi per creare una pipeline :

  1. Definisci la pipeline direttamente tramite l'interfaccia utente.
  2. Utilizza la Pipeline come codice metodologia e creare un Jenkinsfile . Il file di testo utilizza la sintassi compatibile con Groovy per definire il processo della pipeline.

Il file Jenkins la sintassi è dichiarativa o con script .

Una dichiarativa di base Jenkinsfile pipeline è più semplice da capire. Un esempio è simile al seguente:

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

Il codice ha i seguenti elementi:

  • La pipeline obbligatoria pipeline { } block richiama il plug-in Jenkins Pipeline.
  • La parola chiave agent definisce dove viene eseguita la pipeline, dove any indica che la pipeline viene eseguita su qualsiasi agente disponibile.
  • Le stages { } block rappresenta la sequenza in cui viene eseguita la pipeline.
  • Il codice contiene tre fasi:Build , Test e Deploy , ciascuno con i rispettivi steps { } .
  • I steps { } di' a Jenkins cosa fare in un determinato momento.

Il sceneggiato equivalente di Jenkinsfile ha il seguente aspetto:

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

Il controllo di un file Jenkins in uno strumento di controllo del codice sorgente consente all'intero team di modificare, rivedere e adattare i passaggi nella pipeline di consegna.

Integrazione continua

L'integrazione continua è una procedura di sviluppo software in cui ogni modifica applicata richiama un test di build automatizzato. Il processo garantisce che il codice si integri in un modulo eseguibile funzionante senza bug.

L'integrazione continua è un aspetto essenziale negli ambienti con più sviluppatori. Ogni sviluppatore apporta modifiche al codice e ogni modifica presenta potenziali problemi.

Uno strumento di integrazione continua come Jenkins aiuta a testare, identificare e risolvere i problemi prima di applicare le modifiche alla produzione.

Test automatizzati

Il test automatico per Jenkins preimposta l'esecuzione del test e memorizza i risultati. L'idea è di garantire che il codice funzioni in vari scenari. La creazione di test automatizzati per ambienti distinti, come diverse versioni Java o sistemi operativi, aiuta a prevedere e prevenire i problemi nelle versioni successive.

Le fasi di test automatizzate si integrano perfettamente nella pipeline CI di Jenkins. Vari plug-in aiutano a eseguire test unitari, di integrazione, funzionali e di regressione e archiviano i risultati per la visualizzazione e l'analisi successive.

Titolare (ex Master)

L'architettura Jenkins si rivolge a build distribuite. Un nodo è l'unità di controllo centrale e l'organizzatore, noto come controller.

Il controller è il processo centrale in cui risiedono le configurazioni Jenkins. Precedentemente noto come Master, il controller Jenkins gestisce gli agenti e le loro connessioni, aiuta a caricare i plug-in e coordina il flusso del progetto.

Agente (ex schiavo)

Gli agenti si connettono al controller Jenkins per eseguire i progetti. Gli agenti richiedono un'installazione Java su una macchina fisica o virtuale, come istanze Bare Metal Cloud, immagini Docker o cluster Kubernetes.

Gli agenti in Jenkins aiutano a fornire prestazioni migliori bilanciando il carico delle build e creando un ambiente sicuro, separato dal controller.

Nodo

Un nodo è un termine generico per agenti e controller, indipendentemente dal loro ruolo effettivo. Qualsiasi macchina con la capacità di creare progetti e pipeline è un nodo Jenkins e il controller è noto come nodo integrato .

Il nodo integrato monitora lo stato di tutti i nodi collegati e li porta offline se i valori superano una soglia.

Progetto (ex lavoro)

Un progetto Jenkins, o un lavoro, è una procedura di automazione creata dall'utente con un obiettivo particolare. Jenkins offre vari lavori di compilazione per impostazione predefinita e altri sono disponibili tramite i plug-in.

Di seguito una tabella con una breve descrizione di alcuni tipi di progetto.

Progetto Descrizione
Stile libero Un'attività di compilazione illimitata con più operazioni.
Pipeline Un progetto in più fasi con diversi agenti di compilazione.
Configurazione multipla Un progetto con più ambienti di test e diverse configurazioni.
Pipeline multiramo Un progetto che crea una serie di progetti di pipeline in base ai rami in un sistema di gestione del controllo del codice sorgente.

Costruisci

In Jenkins, le build rappresentano l'esecuzione singola di un lavoro con la configurazione corrente. Una build crea software da diverse fonti definite nella procedura del progetto. A seconda del progetto, i meccanismi di compilazione includono:

  • Raccolta delle dipendenze.
  • Compilazione o trasformazione del codice.
  • Archiviazione dei materiali.
  • Test.
  • Distribuzione in ambienti diversi.

Pertanto, una build è un'esecuzione di un progetto definito con vari passaggi.

Come funziona Jenkins?

Jenkins segue le fasi di sviluppo dall'integrazione alla distribuzione , automatizzando ogni passaggio.

Ogni volta che uno sviluppatore pubblica un commit nel repository del codice sorgente, Jenkins attiva una build. In genere, i commit pubblicano in un ramo di sviluppo.

I passaggi di compilazione includono il test del codice, assicurandosi che la build non si interrompa. Se si verifica un errore, Jenkins informa lo sviluppatore di agire di conseguenza. Se tutti i test hanno esito positivo, la pipeline procede ai passaggi di integrazione.

L'integrazione richiede più tempo e richiede il test del codice rispetto a più configurazioni di sistema. Jenkins esegue test di integrazione parallela su nodi diversi, riducendo il tempo necessario per provare a integrare il codice.

Più avanti nella pipeline, Jenkins automatizza i test di accettazione degli utenti, un requisito prima della distribuzione. Se tutti i test vengono superati, il codice si fonde nel ramo principale, rendendo il codice disponibile agli utenti.

Caratteristiche Jenkins

Le caratteristiche principali di Jenkins sono:

  • Installazione semplice . Il programma basato su Java è autonomo e indipendente dalla piattaforma.
  • Semplice da configurare . L'intuitiva interfaccia web rende la configurazione un processo semplice. Per la prima configurazione, fai riferimento al nostro tutorial Jenkins.
  • Personalizzabile con un'enorme disponibilità di plug-in . Attualmente, ci sono oltre 1700 plugin disponibili per estendere la funzionalità di Jenkins. Per eventuali funzionalità mancanti, importa plug-in esterni o personalizzati aggiuntivi.
  • Open source . Jenkins è completamente open source e gratuito, il che lo rende una tecnologia economica da implementare.

Vantaggi e svantaggi di Jenkins

Jenkins ha alcuni vantaggi e svantaggi. Di seguito è riportata una panoramica dettagliata sia dei pro che dei contro di lavorare con Jenkins.

Vantaggi di Jenkins

Alcuni vantaggi offerti da Jenkins sono:

  • Ciclo di sviluppo più rapido . Build e test su ogni commit creano un ambiente frenetico per sbarazzarsi dei bug. Nuove funzionalità e versioni raggiungono l'utente finale più velocemente e con meno errori.
  • Meno tempo per integrare il codice . Prima di Jenkins, l'integrazione del codice era un processo manuale e il debug del codice era complesso. Raggiungere una versione funzionante richiederebbe l'esecuzione di vari commit e l'analisi dei problemi. Quando si utilizza Jenkins, l'integrazione dopo ogni commit assicura che la funzionalità del programma sia sempre disponibile e operativa.
  • Rapido feedback per gli sviluppatori . Ogni volta che una build si interrompe, gli sviluppatori rimangono informati. Il sistema di feedback aiuta il team di sviluppo a risolvere rapidamente i problemi invece di eseguire il debug di numerosi commit.
  • Flusso di lavoro automatizzato della pipeline . Il test automatizzato per ogni commit si integra direttamente nella pipeline.

Svantaggi di Jenkins

Di seguito sono riportati alcuni svantaggi quando si lavora con Jenkins:

  • Costoso . Sebbene Jenkins sia gratuito, il programma richiede un'infrastruttura stabile e robusta.
  • Manutenzione costante . La manutenzione di un server Jenkins richiede molto tempo. L'aggiunta di fasi a una pipeline, l'aggiornamento del server con nuove funzionalità e il monitoraggio degli aggiornamenti dei plug-in richiedono che un amministratore riavvii e gestisca il server manualmente.
  • Incentrato sullo sviluppatore . La piattaforma è basata sulle funzionalità e non molto intuitiva per i non sviluppatori. Una certa esperienza di sviluppatore è un must quando si lavora con Jenkins.

Come installare Jenkins

Jenkins funziona su vari sistemi operativi e ambienti. L'installazione è disponibile in molte forme, come ad esempio:

  • Pacchetti di installazione per i principali sistemi operativi, come Windows, Ubuntu, Debian, CentOS, ecc.
  • Un file di archivio di WAR.
  • Un'immagine Docker.
  • Su un cluster Kubernetes.
  • Costruzione del codice sorgente.

Jenkins viene eseguito come pacchetto autonomo o su un server di applicazioni Java. L'interfaccia utente è basata sul Web e viene fornita con un'API REST in entrambi i casi.


Ubuntu
  1. Cos'è la Nuvola di metallo nudo

  2. Che cos'è un DataFrame Spark?

  3. Che cos'è il Web 3.0?

  4. Cos'è JingOS Linux?

  5. Come utilizzare il comando source all'interno dello script della pipeline Jenkins

Che cos'è 127.0.0.1 Localhost?

Come installare Jenkins su Ubuntu 18.04

Come installare Jenkins su Ubuntu 20.04 / Ubuntu 18.04

Cos'è Localhost?

Che cos'è l'avvelenamento della cache DNS?

Come installare Jenkins su Ubuntu 14.04