Ricerca nel sito web

Configura una semplice pipeline CI/CD utilizzando Github e Jenkins su un'istanza AWS EC2 Linux


In questo articolo vedremo i passaggi per implementare una semplice pipeline CI/CD utilizzando Jenkins. Useremo un codice Java di esempio e distribuiremo quel codice su Apache Tomcat Web-Server come file .war. Useremo Maven come strumento di compilazione. Puoi trovare il codice Java di esempio sul mio Github Repository (repo). Prima di procedere, comprendiamo le basi degli strumenti e delle tecnologie che utilizzeremo per configurare la pipeline CI/CD.

  1. Istanza EC2: l'istanza EC2 è una macchina virtuale (VM) in AWS Cloud. Distribuiremo Apache Tomcat e Jenkins su un'istanza EC2 .
  2. Apache Tomcat: Apache Tomcat è un server Web open-source. Distribuiremo la nostra applicazione Java di esempio in Apache Tomcat come file .war.
  3. GitHub: GitHub è una piattaforma di hosting di codice. È fondamentalmente un sistema di gestione del controllo della versione/sorgente. Avremo il nostro codice Java di esempio su Github.
  4. Github Webhook: Github Webhook viene utilizzato per creare e configurare le integrazioni. Creeremo un webhook che attiverà un Jenkins Job ogni volta che si verifica un nuovo commit sul repository Github.
  5. Jenkins: Jenkins è uno strumento di automazione open source gratuito. Scriveremo un lavoro su Jenkins che costruirà e distribuirà un file .war del codice dell'applicazione Java di esempio sul server Apache Tomcat.
  6. Maven: Maven è uno strumento di automazione della compilazione utilizzato principalmente per creare progetti Java.

Prerequisiti

  1. Account AWS (crealo se non ne hai uno)
  2. Comprensione di base di Github.
  3. Comprensione di base di Jenkins.
  4. Comprensione di base del server Linux e dei comandi

Che cosa faremo?

  1. Crea un'istanza EC2
  2. Installa Java
  3. Installa Jenkins
  4. Configura Apache Tomcat
  5. Forcella il mio repository Github
  6. Accedi e configura Jenkins
  7. Imposta un lavoro Jenkins per la distribuzione di .war
  8. Imposta Webhook su Github Repo
  9. Test Auto Build 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 esso.

Puoi vedere che l'istanza è attiva e in esecuzione. 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 seguente comando installerà Java 8. Una volta installato puoi anche 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

Una volta installato Jenkins, utilizzare il seguente comando per avviarlo e verificarne lo stato.


sudo systemctl start jenkins #Start Jenkins
service jenkins status #Check Jenkins Status

Nello screenshot seguente puoi vedere che il servizio Jenkins è stato avviato. Questo servizio Jenkins è stato avviato sulla porta 8080.

Configura Apache Tomcat

Installa ApacheTomcat

Prima di scaricare e installare Apache Tomcat, creiamo una directory in cui possiamo scaricare il pacchetto Apache Tomcat.

Utilizzare i seguenti comandi per creare una directory in /opt

cd /opt/
sudo mkdir Innovecture

Modificare la proprietà della directory utilizzando il seguente comando. 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 abbiamo bisogno di usare i privilegi di root o utente o sudo.


sudo chown -R ubuntu:ubuntu Innovecture
cd Innovecture/

Scarica ed estrai Apache Tomcat usando i seguenti comandi. Se desideri utilizzare qualsiasi altra versione di Apache Tomcat, puoi scaricare ed estrarre.


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/

Effettuare le configurazioni richieste in Apache Tomcat utilizzando il seguente comando. Fare riferimento agli screenshot seguenti per le configurazioni da eseguire. Nelle seguenti configurazioni stiamo assegnando un utente e una password che possono essere utilizzati per accedere all'applicazione gestore 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 file context.xml abbia la stessa configurazione.

vim webapps/manager/META-INF/context.xml

In server.xml nella directory conf cambia la porta su cui viene eseguito 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 che sia possibile accedere al tuo server da Internet.

Avvia Apache Tomcat

Utilizzare il seguente comando per avviare il servizio Apache Tomcat.

bin/startup.sh

Nello screenshot seguente puoi vedere che il servizio Apache Tomcat è in esecuzione sulla porta 8090 e sulla porta 8080 è in esecuzione il servizio Jenkins. 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à richiesta una schermata delle credenziali, inserisci semplicemente il nome utente tomcat-manager e la password che abbiamo configurato in conf/tomcat-users.xml.

Una volta effettuato l'accesso con successo, vedrai la schermata come segue

Forcella 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 disponi del 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

Una volta sbloccato Jenkin e installati i plugin suggeriti, vedrai la seguente schermata.

È necessario inserire il nome utente e la password che è necessario configurare e fare clic su Salva e continuare a procedere.

Installa il plug-in di autenticazione Github senza riavviare

Una volta effettuato l'accesso, vai a  Gestisci Jenkins > Gestisci plug-in. Nella scheda Disponibile Cerca git. Seleziona  il plug-in \GithubAuthentication\ e fai clic su Installa senza riavviare.

Installa il plug-in di integrazione Maven senza riavviare

Allo stesso modo, installa il plug-in di integrazione Maven e installalo senza riavviare

Installa il plug-in Deploy to container senza riavviare

Per automatizzare il deployment 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 i plug-in git e maven.

Imposta un job Jenkins per il deployment di .war

Ora è il momento di creare un'attività 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 del codice sorgente o l'URL del repository che hai scaricato dal mio repo.

Aggiungi l'URL di Github in Gestione del 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 ho bisogno di aggiungere credenziali.

Scegli Github hook trigger

Seleziona \GitHub hook trigger for GitSCM polling nella scheda Build Triggers

Aggiungi passaggi di costruzione

Nell'ambiente di compilazione, fai clic su Aggiungi fase di compilazione e seleziona \Richiama obiettivi Maven di primo livello\

Per gli obiettivi, specifica pulisci e impacchetta e salva il lavoro.

Prova di costruzione

Per testare il lavoro se è in grado di estrarre e compilare il nostro codice, fare clic su Crea ora.

Aggiungi azioni di distribuzione post-generazione

Ora che siamo sicuri che il nostro codice viene estratto e compilato, siamo pronti per aggiungere un'azione post-compilazione. Per aggiungere un'azione post-compilazione, fai clic sull'azione post-compilazione nell'ambiente di compilazione e seleziona \Distribuisci guerra a un contenitore\.

Quindi aggiungi l'URL del server Tomcat insieme alle credenziali. Per aggiungere le credenziali clicca su \Aggiungi\ e segui i passi che vedi e salva il Job.

Test di compilazione manuale

Ora verifica se il nostro lavoro è in grado di estrarre, creare e distribuire il codice sul server Apache Tomcat. Clicca su costruisci ora per testare il nostro lavoro.

Come nella schermata sopra, la build manuale ha avuto successo ed è stata distribuita sul server Apache Tomcat.

Per verificare se la guerra è stata davvero implementata, premi Apache Tomcat http://IP-of-Apache-Tomcat:8090/manager per accedere all'applicazione manager.

Qui puoi vedere che il file web_ex.war è stato distribuito correttamente sul server Apache Tomcat.

Prova l'applicazione Java di esempio

Per verificare se l'applicazione Java è in esecuzione, fai clic sull'URL http://IP-of-Apache-Tomcat:8090/web_ex.

Configura Webhook sul repository Github

Crea un webhook

Per creare un babe book nella scheda visita, accedi al suo sito web nel tuo account e segui i passaggi indicati di seguito.

Vai alle impostazioni del tuo repo, nel pannello di sinistra fai clic sui web hook e poi fai clic su \Aggiungi webhook\

Nell'URL del payload aggiungi http://Jenkins-URL:8080/github-webhook.

Puoi scegliere gli eventi che desideri attivare questo webhook oppure puoi selezionare \Inviami tutto\ se desideri attivare il job 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 costruzione 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 su di esso nel tuo sistema locale.

git clone https://github.com/shivalkarrahul/Innovecture.git
cd Innovecture/

Apporta alcune modifiche al repository in modo che possiamo inviarle. Qui ho aggiunto un nuovo file in locale che inserirò nel mio repository remoto

touch README.md

Per configurare il nome utente e l'ID email per git, utilizza i seguenti comandi.

git config user.name "Rahul Shivalkar"
git config user.email "[email "

Per eseguire il commit e il push delle modifiche utilizzare i seguenti comandi to

git commit -m "Test Commit"
git push

Non appena inviamo le nostre modifiche al repository su Github, attiverà il nostro job Jenkins che abbiamo aggiunto nel Github Webhook.

Puoi vederlo sotto \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.

Riprova

Ora modifica il codice per verificare se il codice più recente viene implementato o meno. Cambierò il messaggio che viene visualizzato sul browser.

Se stai utilizzando il tuo rapporto, apporta le modifiche richieste nel tuo codice, qui sto solo modificando 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.

Eseguire il commit delle modifiche apportate al codice utilizzando i seguenti comandi.

git add src/main/webapp/index.jsp
git commit -m "Changed Code to Hello World New!”
git push

Premi 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 che anche la pipeline è stata attivata correttamente.

Se hai notato che il mio codice precedente mostrava solo \Hello World!\ e ora quando ho apportato modifiche al mio index.jsp e ne 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 che può estrarre il tuo codice dal repo Github e distribuirlo sul server Apache Tomcat a ogni commit. Abbiamo anche visto i passaggi per l'installazione di Jenkins, Apache Tomcat, Java, plug-in in Jenkins.