Creare un lavoro di compilazione Jenkins per automatizzare le distribuzioni web

Costruire e distribuire un’applicazione può essere un compito difficile. Perché non utilizzare un Job di Build con Jenkins per automatizzare l’intero processo? Ti concentri sulla creazione, mentre Jenkins gestisce il deployment del codice.

In questo tutorial, imparerai come automatizzare il deployment del tuo codice usando Jenkins per risparmiare tempo, consentendoti di concentrarti contemporaneamente su altre attività.

Pronto? È ora di immergersi!

Prerequisiti

Questo tutorial include dimostrazioni pratiche. Se desideri seguirci, assicurati di avere quanto segue:

Anche se il repository mostrato negli screenshot sottostanti differisce leggermente da quello collegato sopra, una volta forkato, utilizzerai anche un URL del repository diverso.

Creazione di un Lavoro di Build Jenkins

Jenkins è un server di automazione open-source che aiuta nell’automazione del ciclo di vita dello sviluppo del software. Questo ciclo di vita include la compilazione, il testing e il rilascio, il che facilita l’integrazione continua e la distribuzione continua.

In questa demo, passerai attraverso come creare un lavoro di build Jenkins. Un lavoro di build è tipicamente una configurazione per eseguire autonomamente compiti per la compilazione/imballaggio del software.

  1. Avvia il tuo browser preferito, naviga su http://localhost:8080/ e accedi al tuo cruscotto Jenkins. La porta 8080 è la porta predefinita per accedere al cruscotto Jenkins.

2. Sul tuo Cruscotto di Jenkins, clicca sul pulsante Nuovo Elemento nel pannello di sinistra per iniziare a creare un lavoro di build. Facendo ciò reindirizzerai il browser a una nuova pagina di lavoro.

Creating a new Jenkins Job

3. Successivamente, inserisci un nome di progetto che preferisci per il lavoro di build nel campo di input mostrato di seguito. Per questo esempio, il nome del progetto è webDeploy.

Seleziona l’opzione Progetto Freestyle per abilitare la creazione di lavori, script delle azioni post-compilazione e configurare i trigger di build del progetto, quindi clicca su OK. Sarai reindirizzato alla pagina di configurazione del lavoro che vedrai nel passo successivo.

Creating a Jenkins project

4. Clicca sulla scheda Generale e seleziona la casella del progetto GitHub per collegare un gestore del codice sorgente in modo che Jenkins sappia da dove prelevare il tuo codice. In questa demo, utilizziamo Git come gestore del codice sorgente per il progetto di esempio ospitato su GitHub che hai precedentemente forkato. Incolla l’URL del repository GitHub dal tuo account GitHub nel campo URL del progetto qui sotto.

Linking Jenkins to a source code manager

5. Infine, clicca sulla scheda Gestione del codice sorgente, quindi seleziona Git, che è il tuo gestore del codice sorgente.

Copia e incolla questo URL del repository GitHub (https://github.com/Claradev32/webDeploy.git) nel campo di input. Clicca su Salva per salvare le tue configurazioni correnti.

Linking Jenkins to Source Code Manager (Git)

Creazione di credenziali per un progetto Jenkins

Forse preferisci mantenere il tuo repository privato, cosa comune per i progetti dei clienti. In tal caso, dovrai creare credenziali per autorizzare Jenkins a clonare il tuo progetto da GitHub.

Per creare credenziali per il tuo progetto Jenkins, devi prima generare e aggiungere una chiave SSH al tuo account GitHub.

1. Apri il terminale di Ubuntu e esegui il comando seguente per generare una chiave SSH con ed25519 come tipo di chiave. Sostituisci [email protected] con il tuo indirizzo email di GitHub per aggiungerlo come commento alla chiave SSH che genererai.

ssh-keygen -t ed25519 -C "[email protected]"

2. Salva la tua chiave pubblica SSH con il seguente:

  • Specifica una posizione di salvataggio per la chiave SSH e premi Invio. Se non lo fai, il comando salva la chiave SSH in una posizione predefinita, come mostrato di seguito.
  • Inserisci una passphrase sicura per la chiave SSH, premi Invio per confermare la passphrase e vedrai l’output della tua chiave pubblica SSH.
  • Nota la posizione della tua chiave SSH generata poiché la aggiungerai al tuo account GitHub nei passaggi successivi.
Adding a Passphrase to the SSH key

3. Accedi a GitHub sul tuo browser web e vai alla pagina delle impostazioni del tuo account.

4. Fai clic sul link Chiavi SSH e GPG nel pannello di sinistra e quindi fai clic su Nuova chiave SSH, come mostrato di seguito, per configurare la tua nuova chiave SSH.

Creating a Github SSH key

5. Infine, inserisci il titolo preferito per la chiave SSH. Il titolo è solo a scopo di documentazione interna. Incolla la tua chiave SSH, dal file salvato in precedenza, nel campo di input Chiave e fai clic su Aggiungi chiave SSH per salvare la chiave.

Ricorda che questa è la tua chiave pubblica e non quella privata!

Saving New SSH Key

Aggiunta della Chiave Privata SSH alle Credenziali di Jenkins

Ora che hai creato la tua coppia di chiavi SSH da utilizzare come credenziale di Jenkins, devi anche aggiungere la tua chiave privata SSH alle credenziali di Jenkins per autorizzare l’accesso di Jenkins al tuo repository GitHub. Ma prima, prendi nota dell’URL SSH del tuo repository GitHub.

1. Vai alla pagina del tuo repository GitHub, clicca su Code → SSH e clicca sull’icona di copia mostrata di seguito per copiare l’URL SSH negli appunti.

Noting Down GitHub SSH URL

2. Successivamente, vai alla tua dashboard di Jenkins, poi clicca su Gestisci Jenkins per accedere alla pagina delle impostazioni del tuo progetto.

Accessing Jenkins Settings

3. Scorri verso il basso, quindi clicca sull’opzione Gestisci Credenziali nella sezione Sicurezza per visualizzare l’elenco delle tue credenziali di Jenkins.

Accessing Jenkins Credentials

4. Clicca su Jenkins nella pagina Credenziali mostrata di seguito per accedere alla pagina “Sistema” dove puoi aggiungere nuove credenziali.

Accessing System Page to Add Credentials

5. Ora, nella pagina Sistema, posiziona il cursore del mouse sopra l’opzione Credenziali globali (non limitate) per visualizzare il menu a discesa e clicca sull’icona freccia in basso.

Fai clic su Aggiungi credenziali nel menu a discesa. La pagina viene reindirizzata a un modulo in cui configurerai le nuove credenziali mostrate nel prossimo passaggio.

System Page

6. Seleziona Nome utente SSH con chiave privata nel primo campo di input e inserisci un nome utente del progetto nel campo Nome utente. Per questo esempio, il nome utente è CI/CD.

In questo caso, il nome utente è puramente una documentazione interna e non viene utilizzato per l’autenticazione.

Setting a Username for Jenkins Global Credentials

7. Esegui il comando seguente per visualizzare la tua chiave privata SSH, modificando il percorso in base a dove è salvata la tua chiave, come mostrato di seguito (la chiave sottostante si trova nella directory home). Annota la tua chiave privata SSH poiché la aggiungerai alle credenziali di Jenkins nel prossimo passo.

cat ~/.ssh/id_ed25519
Viewing Secret Key

8. Una volta annotata la tua chiave privata SSH, torna alla pagina Credenziali globali (senza restrizioni).

Inserisci la passphrase impostata nella sezione “Creazione di credenziali per un progetto Jenkins” (passaggio due) nel campo di input Passphrase, e clicca su OK. In questo modo autorizzi l’accesso di Jenkins al tuo repository GitHub.

Se non hai incluso una password durante la creazione della chiave SSH, clicca su Inserisci direttamente e premi il pulsante Aggiungi. Inserisci la tua chiave privata SSH nel campo di input Chiave, come mostrato di seguito, e premi il pulsante OK per salvare le credenziali.

Adding GitHub SSH key to Jenkins Credentials

8. Torna alla tua bacheca di Jenkins, posiziona il mouse sul tuo progetto e clicca sull’icona freccia in giù, quindi scegli Configura, come mostrato di seguito. La pagina si reindirizza alla pagina di configurazione del tuo progetto.

Configuring Jenkins Project

10. Infine, seleziona il nome utente delle credenziali nel campo a discesa (dal passaggio sei della sezione “Aggiunta della chiave segreta alle credenziali di Jenkins”). Jenkins applica il principio CID per impostazione predefinita per garantire l’integrazione continua e il rilascio del tuo progetto.

Connecting Jenkins to GitHub

Configurazione dei trigger di build e delle azioni post-build

Hai ora creato con successo lo scheletro di un lavoro di build. Ma se apporti regolarmente modifiche al tuo progetto, dovrai rilasciarlo manualmente ogni volta? Perché non configurare i trigger di build? I trigger di build rilasciano automaticamente le modifiche del tuo progetto inviate a GitHub.

1. Nella pagina di configurazione dei tuoi progetti, fai clic sulla scheda Trigger di build e seleziona l’opzione Trigger del webhook GitHub per il polling GITScm. Questa opzione ti consente di rilasciare automaticamente le modifiche del tuo progetto.

Configuring build triggers

2. Fai clic sulla scheda Build, fai clic su Aggiungi passaggio di build e seleziona Esegui shell per creare uno script che verrà eseguito ogni volta che Jenkins scarica una nuova versione del tuo codice.

Creating a Build Script

Lo script shell che crei dipende dal tuo ambiente di sviluppo. Se sei su Windows, Windows eseguirà lo script; lo stesso vale per altri sistemi operativi.

3. Digita i seguenti comandi di shell e fai clic su Salva per salvare lo script di build. Dopo aver salvato le modifiche, la pagina viene reindirizzata alla dashboard del tuo progetto.

I comandi seguenti estraggono (pull) il tuo codice dalla tua posizione remota del codice sorgente (origin master) e con NodeJS NPM install (npm install) le dipendenze necessarie per eseguire il tuo progetto. I comandi vengono eseguiti ogni volta che fai una richiesta di push al tuo gestore di codice sorgente.

Questo progetto in particolare utilizza NodeJS per le dipendenze, ma il tuo progetto potrebbe non farlo.

git pull origin master
npm install
Adding Commands to the Automated Build Script

4. Ora, sul dashboard del tuo progetto, fai clic su Build Now per eseguire la build.

Running the Build

5. Scorri verso il basso nella cronologia delle build per vedere lo stato della build. Se la build è stata eseguita correttamente, vedrai un output simile allo screenshot qui sotto.

Viewing Successful Build

Se la build fallisce, vedrai l’output mostrato di seguito.

Failed build history

6. Successivamente, scorri verso l’alto e fai clic su Configure per configurare le azioni post-build del progetto.

Configuring Project’s Post Build Actions

7. Fai clic sulla scheda Post Build Actions, quindi fai clic su Add post-build action e scegli Git publisher. La pagina espande la sezione delle impostazioni Git Publisher (prossimo passaggio).

Accessing Git Publisher Post-Build Action

8. Infine, abilita l’opzione Push Only If Build Succeeds e fai clic sul pulsante Salva per salvare le modifiche. Abilitando questa opzione, Jenkins effettuerà il deploy del codice solo quando una build viene eseguita correttamente.

Adding Post-Build Actions

Conclusione

In questo tutorial, hai attraversato il processo di connessione di Jenkins al tuo sistema di gestione del codice sorgente. Hai anche creato uno script di compilazione che si esegue automaticamente quando Jenkins scarica una nuova versione del tuo codice e hai impostato trigger di compilazione per automatizzare le distribuzioni web.

Ora, perché non risparmiarti del tempo automatizzando la distribuzione dell’applicazione con un lavoro di compilazione Jenkins?

Source:
https://adamtheautomator.com/jenkins-build-job/