GNU/Linux >> Linux Esercitazione >  >> Linux

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

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.

  1. Istanza EC2: L'istanza EC2 è una macchina virtuale (VM) nel cloud AWS. 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/origine. Avremo il nostro codice Java di esempio su Github.
  4. 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.
  5. 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.
  6. Maven : Maven è uno strumento di automazione della compilazione utilizzato principalmente per creare progetti Java.

Prerequisiti

  1. Account AWS (crea se non ne hai uno)
  2. Conoscenza di base di Github.
  3. Conoscenza di base di Jenkins.
  4. Conoscenza di base di Linux Server e Comandi

Cosa faremo?

  1. Crea un'istanza EC2
  2. Installa Java
  3. Installa Jenkins
  4. Imposta Apache Tomcat
  5. Fork mio Github Repo
  6. Accedi e configura Jenkins
  7. Imposta un lavoro Jenkins per l'implementazione .war
  8. Imposta Webhook su Github Repo
  9. 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.


Linux
  1. Ottieni podman attivo e funzionante su Windows usando Linux

  2. Come creare e aggiungere un volume EBS nell'istanza AWS (EC2)

  3. Come avviare un'istanza AWS EC2 utilizzando Terraform

  4. Crea un'istanza EC2 su AWS utilizzando Terraform

  5. Utilizzo di kbhit() e getch() su Linux

Sicurezza CI/CD - Come proteggere la pipeline CI/CD

Installazione e configurazione di Jenkins in Linux

Come installare Rocky Linux 8 sull'istanza Amazon AWS Ec2

Imposta il flusso di lavoro CI/CD con le azioni GitHub

Come installare Jenkins CI/CD in Ubuntu Linux

Come configurare il server e il client VPN Linux utilizzando OpenVPN