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:
- Un sistema Ubuntu – Questo tutorial utilizza Ubuntu 20.04 per le dimostrazioni
- A GitHub account
- OpenJDK versione 1.8.0_292
- Jenkins versione 2.303.1
- Node.js versione 14.17.6
- Fai un fork di questo repository GitHub – Dopo il fork, prendi nota dell’URL del repository GitHub, ne avrai bisogno in seguito.
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.
- 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.

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.

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.

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.

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.
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.

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.

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!

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.

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

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

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

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.

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.

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.

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.

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.

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.

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.

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.

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.

4. Ora, sul dashboard del tuo progetto, fai clic su Build Now per eseguire la 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.

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

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

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).

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.

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?