Come creare una pipeline Jenkins CI CD

Sapevi che Jenkins ha un supporto integrato per la CI/CD (Continuous Integration/Continuous Delivery)? Implementare una pipeline Jenkins CI/CD nel tuo progetto può migliorare significativamente il processo di sviluppo software.

Jenkins è uno degli strumenti di automazione DevOps più popolari fino ad oggi. E se stai cercando di iniziare con la pipeline Jenkins CI/CD, sei nel posto giusto.

Continua a leggere e in questo tutorial imparerai come configurare una pipeline Jenkins CI/CD con GitHub.

Prerequisiti

Questo tutorial presuppone che tu abbia i seguenti requisiti per seguire gli esempi.

Devi già avere un’installazione di Jenkins. Gli esempi in questo tutorial utilizzeranno Jenkins v2.319.1 su un computer Windows 10 20H2.

  • La tua console web di Jenkins deve essere accessibile su Internet.
  • A Github account to which you’ll connect with the Jenkins CI CD pipeline.
  • Git SCM. Questo tutorial utilizza l’ultima versione (2.34.1) a 64 bit di Git per Windows.

Preparazione del repository GitHub

Questo tutorial prevede l’integrazione di un pipeline CI CD di Jenkins con un repository GitHub. Al posto di creare un progetto vuoto, forca un repository esistente per avviare più rapidamente.

1. Per prima cosa, apri un browser e effettua l’accesso al tuo account GitHub.

2. Successivamente, vai all’URL del repository di esempio (applicazione MyShuttle2 da Microsoft Connect 2016). Una volta sulla pagina del repository, clicca il pulsante Fork nella parte in alto a destra della pagina.

Forking a repo

Attendi il completamento del processo di forking. Alla fine, avrai il repository denominato “nomeutente/MyShuttle2” sul tuo account GitHub a cui hai pieno accesso.

3. Ora, aggiungi un nuovo file al repository denominato Jenkinsfile. Un Jenkinsfile è un file di testo che contiene la definizione di una pipeline di Jenkins. Questo file dovrebbe essere all’interno del repository del codice sorgente.

Sulla pagina del tuo repository, clicca su Aggiungi file —> Crea nuovo file.

Adding a new file

4. Digita Jenkinsfile come nome del nuovo file. Successivamente, copia il codice qui sotto e incollalo nel tuo Jenkinsfile.

  • Il termine pipeline è un insieme di istruzioni scritte in codice per la consegna continua.
  • A stage block contains a series of steps in a pipeline, visualizing the Jenkins pipeline process.
  • A step is a single task that executes a specific process at a defined time. A pipeline contains a series of steps.

Questo Jenkinsfile è solo un esempio base di uno script di pipeline. In produzione, gli script di pipeline saranno più complessi e includeranno azioni multiple su una o tutte le fasi.

pipeline {
    agent any

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

Dopo aver scritto il codice, il tuo file apparirà come nello screenshot qui sotto.

Jenkinsfile pipeline script

5. Scorri fino in fondo alla pagina e clicca Commit new file.

Committing the new file

Ora hai un Jenkinsfile nel tuo repository.

New Jenkinsfile on the GitHub repo

6. Infine, copia l’URL del repository. Per farlo, clicca Code e poi il pulsante Copia. Avrai bisogno dell’URL risultante durante la creazione della pipeline CI CD di Jenkins.

Copying the repository URL

Creazione di una Pipeline CI CD con Jenkins

Sviluppare una funzionalità comporta molti cambiamenti del codice. Tra ogni cambiamento di codice, ci sono una serie di compiti da eseguire. Questi compiti possono includere il commit dei cambiamenti, la compilazione, il test e il packaging.

I servizi di automazione come Jenkins aiutano a rendere questi passaggi rapidi e privi di errori.

1. Apri un browser, naviga all’URL di Jenkins e accedi.

2. Nella Dashboard di Jenkins, clicca l’opzione New Item sul menu laterale sinistro.

Creating a new item in Jenkins

3. Inserisci il nome della nuova pipeline. Per questo tutorial, la chiamerai demoPipeline e selezionerai il template Pipeline. Clicca OK per finire.

Creating a Pipeline project

4. Seleziona la casella del progetto GitHub nella scheda “Generale” nella pagina di configurazione. Successivamente, incolla l’URL del repository che hai copiato in precedenza nella casella “URL del progetto”.

Specifying the GitHub repository URL

5. Scorri verso il basso fino alla sezione “Trigger di build” e seleziona la casella “Trigger di hook GitHub per il polling di GITScm”, come mostrato nell’immagine seguente.

Specifying the build trigger

6. Successivamente, scorri ulteriormente verso il basso fino alla sezione “Pipeline” e seleziona/specifica i seguenti valori:

  • Definizione: Script di pipeline da SCM
  • SCM: Git
  • URL del repository: Il tuo URL del repository
Specifying the pipeline values

7. Scorri fino alla fine della pagina e verifica che il valore “Percorso dello script” sia “Jenkinsfile”. Questo valore fa riferimento al Jenkinsfile che hai creato in precedenza durante la preparazione del tuo repository Github. Infine, clicca su “Salva”.

Saving the pipeline configuration

Configurazione di un Webhook in GitHub

Per far sì che Jenkins esegua un nuovo job, devi prima creare un webhook nel repository GitHub. Questo webhook notifierà Jenkins non appena viene effettuato un nuovo push nel repository.

Segui i passaggi di seguito per creare un Webhook.

1. Vai alla pagina “Impostazioni” e clicca sulla scheda “Webhooks” del tuo repository GitHub. Nella pagina “Webhooks”, clicca su “Aggiungi webhook”.

Adding a webhook

2. Specifica il tuo URL di Jenkins e aggiungi /github-webhook/ nel campo URL Payload. Per esempio, HTTP://jenkinsURLqui/github-webhook/.

Cambia anche il valore del tipo di contenuto in application/json.

Setting the webhook URL and content type

3. Nella selezione Quali eventi vuoi attivare questo webhook, clicca sull’opzione Lasciami selezionare singoli eventi.

Selecting individual events

4. Scorri verso il basso e seleziona le caselle di controllo Push e Pull requests. Queste opzioni garantiranno che GitHub invii un payload a Jenkins durante questi eventi specifici.

Enabling Pushes and Pull requests events

5. Convalida il webhook cliccando sul pulsante Aggiungi webhook in fondo. Se la convalida del webhook è andata bene, vedrai una notifica nella parte superiore della pagina simile alla schermata seguente.

Webhook creation notification

Esecuzione e attivazione del lavoro Jenkins CI CD Pipeline

Ora che hai creato e configurato la tua pipeline, come puoi sapere che la pipeline funziona? Jenkins fornisce un plugin Visualizzazione dello Stage della Pipeline per aiutarti a visualizzare lo stato della pipeline.

1. Per aprire lo stato della pipeline, apri la pipeline in Jenkins e clicca su Stato. Come puoi vedere di seguito, lo stato della Visualizzazione dello Stage mostra Nessun dato disponibile perché non c’è stato un evento che avrebbe attivato la pipeline.

Jenkins pipeline stage view

2. Per generare i dati iniziali della build, clicca su Build Now e attendi il completamento del processo di build. Come puoi vedere di seguito, la vista Stage ora ha una voce, che indica che non ci sono cambiamenti in questa build.

To generate initial build data, click Build Now

3. Ora, testa il pipeline commettendo un nuovo file fittizio nel repository. Per farlo, torna al tuo repository GitHub e clicca su Add File —> Create new file.

Inserisci dummy come nome del nuovo file e assicurati di aggiungere del contenuto.

Creating a new file

Infine, clicca su Commit new file in fondo alla pagina.

4. Torna alla pagina di stato del tuo pipeline Jenkins e dovresti vedere una nuova voce di build con un commit, come mostrato di seguito.

Jenkins pipeline build status

Conclusion

Attraverso questo tutorial, hai imparato come configurare un pipeline Jenkins CI CD per automatizzare il ciclo di vita dello sviluppo software. Hai anche imparato come utilizzare Jenkins per mantenere una catena di azioni per CI in un progetto software.

Pensi che il pipeline Jenkins CI CD sia una strategia che applicheresti ai tuoi progetti? O ne hai già uno in atto che ritieni essere una soluzione migliore per CI/CD?

Source:
https://adamtheautomator.com/jenkins-ci-cd/