In questo articolo vedremo i passaggi per implementare una semplice pipeline CI/CD utilizzando Jenkins. Utilizzeremo un codice Java di esempio e implementeremo tale codice sul server Web Apache Tomcat come file .war. Useremo Maven come strumento di costruzione. Puoi trovare il codice Java di esempio sul mio Github Repository (repo). Prima di procedere, apprendiamo le basi degli strumenti e delle tecnologie che utilizzeremo per configurare la pipeline CI/CD.
- Istanza EC2: L'istanza EC2 è una macchina virtuale (VM) nel cloud AWS. Distribuiremo Apache Tomcat e Jenkins su un'istanza EC2.
- Apache Tomcat: Apache Tomcat è un server Web open source. Distribuiremo la nostra applicazione Java di esempio in Apache Tomcat come file .war.
- Github: Github è una piattaforma di hosting di codice. È fondamentalmente un sistema di gestione del controllo della versione/origine. Avremo il nostro codice Java di esempio su Github.
- Github Webhook: Github Webhook viene utilizzato per creare e configurare integrazioni. Creeremo un webhook che attiverà un lavoro Jenkins ogni volta che si verifica un nuovo commit sul repository Github.
- Jenkins: Jenkins è uno strumento di automazione open source gratuito. Scriveremo un lavoro su Jenkins che creerà e distribuirà un file .war del codice dell'applicazione Java di esempio sul server Apache Tomcat.
- Maven : Maven è uno strumento di automazione della compilazione utilizzato principalmente per creare progetti Java.
Prerequisiti
- Account AWS (crea se non ne hai uno)
- Conoscenza di base di Github.
- Conoscenza di base di Jenkins.
- Conoscenza di base di Linux Server e Comandi
Cosa faremo?
- Crea un'istanza EC2
- Installa Java
- Installa Jenkins
- Imposta Apache Tomcat
- Fork mio Github Repo
- Accedi e configura Jenkins
- Imposta un lavoro Jenkins per l'implementazione .war
- Imposta Webhook su Github Repo
- Testa la build automatica su ogni commit
Crea una VM o un'istanza EC2
Per creare un'istanza EC2 puoi fare riferimento al documento disponibile qui.
Qui ho creato una nuova istanza EC2 sul mio account AWS. Questa istanza ha il sistema operativo Ubuntu 18 su di essa.
Puoi vedere che l' istanza è attivo e funzionante. Userò questa istanza per installare Java o le dipendenze e anche Apache Tomcat e Jenkins.
Installa Java
Per installare Java sul tuo sistema Ubuntu 18 puoi usare i seguenti comandi. Il comando seguente installerà Java 8. Una volta installato, puoi persino verificarne la versione.
sudo apt-get update
sudo apt install openjdk-8-jdk
java -version
Installa Jenkins
Utilizza i seguenti comandi per installare Jenkins sulla tua istanza.
sudo apt-get update
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/> /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins
Dopo aver installato Jenkins, utilizza il seguente comando per avviarlo e verificarne lo stato.
sudo systemctl start jenkins #Start Jenkins
service jenkins status #Check Jenkins Status
Nella schermata seguente puoi vedere che il servizio Jenkins è stato avviato. Questo servizio Jenkins è stato avviato sulla porta 8080.
Imposta Apache Tomcat
Installa Apache Tomcat
Prima di scaricare e installare Apache Tomcat, creiamo una directory in cui scaricare il pacchetto Apache Tomcat.
Usa i seguenti comandi per creare una directory in /opt
cd /opt/
sudo mkdir Innovecture
Cambia la proprietà della directory usando il comando seguente. Stiamo cambiando la proprietà all'utente Ubuntu e al gruppo Ubuntu in modo che l'utente Ubuntu possa avviare il servizio Apache Tomcat e non è necessario utilizzare i privilegi di root o utente o sudo.
sudo chown -R ubuntu:ubuntu Innovecture
cd Innovecture/
Scarica ed estrai Apache Tomcat utilizzando i seguenti comandi. Se vuoi usare qualsiasi altra versione di Apache Tomcat puoi scaricarla ed estrarla.
wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.31/bin/apache-tomcat-9.0.31.tar.gz
tar -zxvf apache-tomcat-9.0 .31.tar.gz
cd apache-tomcat-9.0.31/
Esegui le configurazioni richieste in Apache Tomcat usando il comando seguente. Fare riferimento alle schermate seguenti per le configurazioni che devono essere eseguite. Nelle seguenti configurazioni assegniamo un utente e una password che possono essere utilizzati per accedere all'applicazione manager di Apache Tomcat. Prendi nota di questo nome utente e password poiché avremo bisogno di queste credenziali in seguito.
Configura Apache Tomcat
vim conf/tomcat-users.xml
Fai riferimento allo screenshot seguente e assicurati che il tuo context.xml abbia la stessa configurazione.
vim webapps/manager/META-INF/context.xml
In server.xml nella directory conf cambia la porta su cui gira Apache Tomcat, ad es. cambia la porta 8080 in 8090 poiché il nostro servizio Jenkins è già in esecuzione sulla porta 8080.
vim conf/server.xml
Modifica anche la configurazione localhost nel file server.xml con l'IP del server in modo da poter accedere al tuo server da Internet.
Avvia Apache Tomcat
Utilizzare il seguente comando per avviare il servizio Apache Tomcat.
bin/startup.sh
Nella schermata seguente puoi vedere che il servizio Apache Tomcat è in esecuzione sulla porta 8090 e sulla porta 8080 il servizio Jenkins è in esecuzione. Per controllare il tuo sistema, usa il seguente comando.
netstat -tulpn
Accedi all'app Tomcat Manager
Per vedere se siamo in grado di accedere all'applicazione manager di Apache Tomcat utilizzando le credenziali che abbiamo specificato in precedenza, premi l'URL di Apache Tomcat http://IP-of -Apache-Tomcat:8090/manager. Ti verrà chiesto con una schermata delle credenziali, inserisci il nome utente "tomcat-manager" e la password che abbiamo configurato in conf/tomcat-users.xml.
Una volta effettuato l'accesso, vedrai la schermata come segue
Fork Github Repo
Puoi eseguire il fork o clonare il mio repository menzionato di seguito. Questo repo contiene il codice Java di esempio, puoi utilizzare questo codice oppure, se hai il tuo repository, puoi utilizzare anche quello.
URL del repository: https://github.com/shivalkarrahul/Innovecture.git
Accedi e configura Jenkins
Per accedere a Jenkins, premi l'URL http://IP-of-Jenkins:8080.
Segui le schermate che ottieni per sbloccare Jenkin e installare i plug-in suggeriti
Dopo aver sbloccato Jenkin e aver installato i plug-in suggeriti, vedrai la seguente schermata.
Devi inserire il nome utente e la password che devi configurare e fare clic su salva e continua a procedere.
Installa Github Authentication Plugin senza riavviare
Una volta effettuato l'accesso, vai a Gestisci Jenkins> Gestisci i plugin. Sotto Disponibile tab Cerca git . Seleziona il plug-in "GithubAuthentication" e fai clic su Installa senza riavviare.
InstallaMaven Integration Plugin senza riavviare
Allo stesso modo, installa il plug-in di integrazione Maven e installalo senza riavviare
Installa Esegui il deployment nel plug-in container senza riavviare
Per automatizzare la distribuzione di un file .war su Apache Tomcat avremmo bisogno di un plug-in "Deploy to container". Installa il plug-in "Deploy to container" nello stesso modo in cui abbiamo installato git e maven plug-in.
Imposta un lavoro Jenkins per il dispiegamento .war
Ora è il momento di creare un lavoro freestyle. Vai alla dashboard principale e fai clic su Crea lavoro. Seleziona il lavoro freestyle e procedi oltre.
Aggiungi Github Repo nella scheda Generale
Nella scheda Generale, seleziona la casella di controllo "Progetto Github" e aggiungi l'URL del tuo repository di codice sorgente o l'URL del repository che hai effettuato il fork dal mio repository.
Aggiungi URL Github in Gestione codice sorgente
Nella scheda di gestione del codice sorgente, fai clic sul pulsante di opzione "Git" e aggiungi l'URL del repository come mostrato di seguito. Poiché il mio repository non è privato ed è pubblico, non è stato necessario aggiungere credenziali.
Scegli Github hook trigger
Seleziona "GitHub hook trigger for GitSCM polling" nella scheda Build Trigger
Aggiungi passaggi di costruzione
Nell'ambiente di costruzione, fai clic su aggiungi passaggio di costruzione e seleziona "Richiama obiettivi Maven di livello superiore"
Per gli obiettivi, specifica clean and package e salva il lavoro.
Test build
Per testare il lavoro se è in grado di estrarre e costruire il nostro codice, fai clic su Crea ora.
Aggiungi implementazione Azioni post build
Ora, poiché siamo sicuri che il nostro codice sia stato estratto e compilato, siamo pronti per aggiungere un'azione post-compilazione. Per aggiungere un'azione post-compilazione, fai clic su Azione post-compilazione nell'ambiente di compilazione e seleziona "Distribuisci guerra in un contenitore".
Quindi aggiungi l'URL del server Tomcat insieme alle credenziali. Per aggiungere le credenziali clicca su "Aggiungi" e segui i passaggi che vedi e salva il Lavoro.
Verifica build manuale
Ora verifica se il nostro lavoro è in grado di estrarre, compilare e distribuire il codice sul server Apache Tomcat. Clicca su build now per testare il nostro lavoro.
Come nella schermata precedente, la compilazione manuale ha avuto successo ed è stata distribuita sul server Apache Tomcat.
Per verificare se la guerra è stata davvero schierata, colpisci l'Apache Tomcat http://IP-of-Apache-Tomcat:8090/manager per accedere all'applicazione di gestione.
Qui puoi vedere che il web_ex.war il file è stato distribuito correttamente sul server Apache Tomcat.
Test Java di esempio Applicazione
Per verificare se l'applicazione Java è in esecuzione, premi l'URL http://IP-of-Apache-Tomcat:8090/web_ex .
Imposta Webhook su Github Repo
Crea un webhook
Per creare un libro per ragazze nella scheda visita il suo sito Web accedi al tuo account e segui i passaggi indicati di seguito.
Vai alle impostazioni del tuo repo, nel pannello di sinistra fai clic su web hook e quindi fai clic su "Aggiungi webhook"
Nell'URL del payload aggiungi http://Jenkins-URL:8080/github-webhook.
Puoi scegliere gli eventi per i quali desideri attivare questo webhook oppure puoi selezionare "Inviami tutto" se desideri attivare il processo Jenkins su ogni evento, fai clic su Aggiorna Webhook per salvarlo.
Prova la compilazione automatica su commit
Ora siamo pronti per testare il nostro lavoro di compilazione automatica.
Per verificare se il nostro lavoro Jenkins estrae il codice dal nostro repository github su ogni commit, usa i seguenti comandi.
Per clonare il repository in locale ho usato il seguente comando. Se hai il tuo rapporto, vai sul tuo sistema locale.
git clone https://github.com/shivalkarrahul/Innovecture.git
cd Innovecture/
Apporta alcune modifiche al repository in modo da poterle inviare. Qui ho aggiunto un nuovo file in locale che inserirò nel mio repository remoto
tocca LEGGIMI.md
Per configurare il nome utente e l'ID e-mail per git, utilizza i seguenti comandi.
git config user.name "Rahul Shivalkar"
git config user.email "[email protected]"
Per eseguire il commit e il push delle modifiche, usa quanto segue per i comandi
git commit -m "Test commit"
git push
Non appena inseriamo le nostre modifiche nel repository su Github, verrà attivato il nostro lavoro Jenkins che abbiamo aggiunto nel Webhook di Github.
Puoi vederlo in "Registro polling" del lavoro, fai riferimento allo screenshot seguente per lo stesso.
Se vai all'output della console del lavoro puoi vedere che il lavoro è stato eseguito con successo e la guerra è stata distribuita su Apache Tomcat.
Re-test
Ora modifica il codice per verificare se il codice più recente viene distribuito o meno. Modificherò il messaggio che viene visualizzato sul browser.
Se stai utilizzando il tuo rapporto, apporta le modifiche richieste nel tuo codice, qui sto solo cambiando un file index.jsp di esempio che stampa il messaggio sul browser.
vim src/main/webapp/index.jsp
Ora vediamo se il codice modificato viene riflesso o meno.
Imposta le modifiche apportate al codice utilizzando i seguenti comandi.
git add src/main/webapp/index.jsp
git commit -m "Codice modificato in Hello World New!"
git push
Colpisci l'URL di Apache Tomcat http://IP-of-Apache-Tomcat:8090/web_ex per accedere alla nostra applicazione di esempio.
Puoi vedere che il codice più recente è stato creato e distribuito su Apache Tomcat, il che significa che l'applicazione è stata distribuita correttamente e anche la pipeline è stata attivata con successo.
Se hai notato il mio codice precedente mostrava solo "Hello World!" e ora, quando ho apportato modifiche al mio index.jsp e l'ho eseguito il commit, l'ultima applicazione mostra "Hello World New!".
Conclusione
In questo articolo abbiamo visto i passaggi per creare una semplice pipeline CI/CD in grado di estrarre il codice dal repository Github e distribuirlo sul server Apache Tomcat su ogni commit. Abbiamo anche visto i passaggi per l'installazione di Jenkins, Apache Tomcat, Java, plug-in in Jenkins.