GNU/Linux >> Znalost Linux >  >> Linux

Nastavte jednoduchý kanál CI/CD pomocí Github a Jenkins na instanci AWS EC2 Linux

V tomto článku se podíváme na kroky k implementaci jednoduchého kanálu CI/CD pomocí  Jenkinse. Použijeme vzorový kód Java a tento kód nasadíme na webový server Apache Tomcat jako soubor .war. Jako nástroj pro sestavení budeme používat Maven. Ukázkový kód Java najdete na mém Github Repository (repo). Než budeme pokračovat, pochopme základy nástrojů a technologií, které budeme používat při nastavování kanálu CI/CD.

  1. Instance EC2: Instance EC2 je virtuální stroj (VM) v cloudu AWS. Apache Tomcat a Jenkins nasadíme na instanci EC2.
  2. Apache Tomcat: Apache Tomcat je webový server s otevřeným zdrojovým kódem. Naši ukázkovou aplikaci Java nasadíme do Apache Tomcat jako soubor .war.
  3. Github: Github je platforma pro hostování kódu. Je to v podstatě systém správy verzí/zdrojů. Náš ukázkový kód Java budeme mít na Github.
  4. Webhook Github: Github Webhook se používá k vytváření a nastavování integrací. Vytvoříme webhook, který spustí Jenkins Job vždy, když dojde k novému odevzdání na Github repo.
  5. Jenkins: Jenkins je bezplatný open-source automatizační nástroj. Budeme psát úlohu na Jenkins, která vytvoří a nasadí soubor .war s ukázkovým kódem Java aplikace na server Apache Tomcat.
  6. Maven : Maven je nástroj pro automatizaci sestavování používaný především k vytváření projektů Java.

Předpoklady

  1. Účet AWS (vytvořte si jej, pokud jej nemáte)
  2. Základní pochopení Githubu.
  3. Základní pochopení Jenkinse.
  4. Základní znalost linuxového serveru a příkazů

Co budeme dělat?

  1. Vytvořte instanci EC2
  2. Nainstalujte Javu
  3. Nainstalujte Jenkins
  4. Nastavte Apache Tomcat
  5. Rozvětvení mého úložiště Github
  6. Přístup k Jenkinsovi a jeho konfigurace
  7. Nastavení úlohy Jenkins pro nasazení .war
  8. Nastavte Webhook na Github Repo
  9. Otestujte automatické sestavení při každém závazku

Vytvořte virtuální počítač nebo instanci EC2

Chcete-li vytvořit instanci EC2, můžete se podívat na dokument dostupný zde.

Zde jsem na svém účtu AWS vytvořil novou instanci EC2. Tato instance má OS Ubuntu 18.

Můžete vidět, že instance je v provozu. Tuto instanci použiji k instalaci Javy nebo závislostí a také Apache Tomcat a Jenkins.

Instalovat Javu

K instalaci Javy do systému Ubuntu 18 můžete použít následující příkazy. Následující příkaz nainstaluje Javu 8. Po instalaci můžete dokonce zkontrolovat její verzi.

sudo apt-get update
sudo apt install openjdk-8-jdk
java -verze

Instalovat Jenkins

K instalaci Jenkins do vaší instance použijte následující příkazy.

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'
aktualizace sudo apt-get
instalace sudo apt-get jenkins

Jakmile nainstalujete Jenkins, spusťte jej pomocí následujícího příkazu a zkontrolujte jeho stav.


sudo systemctl start jenkins #Start Jenkins
stav služby jenkins #Check Jenkins Status

Na následujícím snímku obrazovky můžete vidět, že služba Jenkins byla spuštěna. Tato služba Jenkins byla spuštěna na portu 8080.

Nastavení Apache Tomcat

Instalovat Apache Tomcat

Než si stáhneme a nainstalujeme Apache Tomcat, vytvořme si adresář, do kterého si můžeme stáhnout balíček Apache Tomcat.

Použijte následující příkazy k vytvoření adresáře v /opt

cd /opt/
sudo mkdir Innovecture

Změňte vlastnictví adresáře pomocí následujícího příkazu. Měníme vlastnictví na uživatele Ubuntu a skupinu Ubuntu, aby uživatel Ubuntu mohl spouštět službu Apache Tomcat a my nemuseli používat oprávnění root, uživatele nebo sudo.


sudo chown -R ubuntu:ubuntu Innovecture
cd Innovecture/

Stáhněte a extrahujte Apache Tomcat pomocí následujících příkazů. Pokud chcete použít jakoukoli jinou verzi Apache Tomcat, můžete si ji stáhnout a extrahovat.


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/

Proveďte požadované konfigurace v Apache Tomcat pomocí následujícího příkazu. Konfigurace, které je třeba provést, naleznete na následujících snímcích obrazovky. V následujících konfiguracích přiřazujeme uživatele a heslo, které lze použít k přihlášení do manažerské aplikace Apache Tomcat. Poznamenejte si toto uživatelské jméno a heslo, protože tyto přihlašovací údaje budeme potřebovat později.

Konfigurovat Apache Tomcat

vim conf/tomcat-users.xml

Podívejte se na následující snímek obrazovky a ujistěte se, že váš kontext.xml má stejnou konfiguraci.

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

V server.xml v adresáři conf změňte port, na kterém běží Apache Tomcat, tj. změňte port 8080 na 8090, protože naše služba Jenkins již běží na portu 8080.

vim conf/server.xml

Také změňte konfiguraci localhost v souboru server.xml pomocí IP serveru, aby byl váš server přístupný z internetu.

Spustit Apache Tomcat

Pro spuštění služby Apache Tomcat použijte následující příkaz.

bin/startup.sh

Na následujícím snímku obrazovky můžete vidět, že služba Apache Tomcat běží na portu 8090 a na portu 8080 běží služba Jenkins. Chcete-li zkontrolovat svůj systém, použijte následující příkaz.

netstat -tulpn 

Přihlaste se do aplikace Tomcat Manager

Chcete-li zjistit, zda se můžeme přihlásit do manažerské aplikace Apache Tomcat pomocí přihlašovacích údajů, které jsme zadali dříve, klikněte na adresu URL Apache Tomcat http://IP-of -Apache-Tomcat:8090/manager. Zobrazí se výzva s přihlašovacími údaji, stačí zadat uživatelské jméno 'tomcat-manager' a heslo, které jsme nakonfigurovali v conf/tomcat-users.xml.

Jakmile se úspěšně přihlásíte, zobrazí se následující obrazovka

Fork Github Repo

Můj repo uvedený níže můžete forkovat nebo klonovat. Toto úložiště obsahuje ukázkový kód Java, můžete buď použít tento kód, nebo pokud máte vlastní úložiště, můžete jej použít také.

Adresa URL úložiště: https://github.com/shivalkarrahul/Innovecture.git

Přístup a konfigurace Jenkins 

Pro přístup k Jenkinsovi klikněte na URL http://IP-of-Jenkins:8080.

Postupujte podle obrazovek, které se zobrazí k odemknutí Jenkina a instalaci navrhovaných pluginů

Jakmile odemknete Jenkina a nainstalujete navrhované pluginy, zobrazí se následující obrazovka.

Musíte zadat uživatelské jméno a heslo, které potřebujete nakonfigurovat, a kliknout na uložit a pokračovat.

Instalovat plugin Github Authentication Plugin bez restartu

Jakmile se úspěšně přihlásíte, přejděte na  Manage Jenkins> Spravovat pluginy. V části Dostupné karta Vyhledejte git . Vyberte zásuvný modul  „GithubAuthentication“ a klikněte na nainstalovat bez restartu.

Instalovat Maven Integration Plugin bez restartu

Stejným způsobem nainstalujte integrační zásuvný modul maven a nainstalujte jej bez restartu

Instalovat Nasadit plugin do kontejneru bez restartu

K automatizaci nasazení souboru .war na Apache Tomcat bychom potřebovali zásuvný modul „Deploy to container“. Nainstalujte plugin „Deploy to container“ stejným způsobem, jakým jsme nainstalovali pluginy git a maven.



Nastavení úlohy Jenkins pro nasazení .war

Nyní je čas vytvořit volnou práci. Přejděte na hlavní panel a klikněte na vytvořit úlohu. Vyberte práci ve volném stylu a pokračujte dále.

Přidat Github Repo na kartu Obecné

Na kartě Obecné zaškrtněte políčko „Projekt Github“ a přidejte adresu URL svého úložiště zdrojového kódu nebo adresu URL úložiště, které jste vytvořili z mého úložiště.

Přidat adresu URL Github do sekce Správa zdrojového kódu

Na kartě Správa zdrojového kódu klikněte na přepínač „Git“ a přidejte adresu URL úložiště, jak je uvedeno níže. Protože můj repozitář není soukromý a je veřejný, nemusel jsem přidávat přihlašovací údaje.

Vyberte Githubhákový trigger

Na kartě Build Triggers (Spouštěče sestavení) vyberte možnost „GitHub hook trigger for GitSCM polling“

Přidat kroky sestavení

V prostředí sestavení klikněte na přidat krok sestavení a vyberte „Vyvolat cíle Maven nejvyšší úrovně“

Pro cíle zadejte čisté a zabalené a uložte úlohu.

Test sestavení

Chcete-li otestovat, zda je úloha schopna stáhnout a sestavit náš kód, klikněte na Vytvořit nyní.

Přidat implementaci Akce po sestavení

Nyní, když jsme si jisti, že se náš kód stahuje a sestavuje, jsme připraveni přidat akci po sestavení. Chcete-li přidat akci po sestavení, klikněte na akci po sestavení v prostředí sestavení a vyberte „Nasadit válku do kontejneru“.

Poté přidejte adresu URL serveru tomcat spolu s přihlašovacími údaji. Chcete-li přidat přihlašovací údaje, klikněte na „Přidat“ a postupujte podle zobrazených kroků a uložte úlohu.

Test ruční sestavení

Nyní otestujte, zda je naše úloha schopna stáhnout, sestavit a nasadit kód na serveru Apache Tomcat. Klikněte na sestavit a otestujte naši práci.

Jak vidíte na výše uvedeném snímku obrazovky, ruční sestavení bylo úspěšné a bylo nasazeno na serveru Apache Tomcat.

Chcete-li otestovat, zda byla válka skutečně rozmístěna, klepněte na Apache Tomcat http://IP-of-Apache-Tomcat:8090/manager pro přístup k aplikaci správce.

Zde vidíte, že web_ex.war soubor byl úspěšně nasazen na server Apache Tomcat.

Test Ukázka jazyka Java Aplikace

Chcete-li otestovat, zda je aplikace Java spuštěna, přejděte na adresu URL http://IP-of-Apache-Tomcat:8090/web_ex .

Nastavení Webhooku na Github Repo

Vytvořit webhook

Chcete-li vytvořit knížku pro miminko na kartě, přejděte na její webovou stránku a přihlaste se ke svému účtu a postupujte podle níže uvedených kroků.

Přejděte do nastavení svého repo, v levém panelu klikněte na webové háčky a poté klikněte na „Přidat webhook“

Do adresy URL Payload přidejte http://Jenkins-URL:8080/github-webhook.

Můžete si vybrat události, které chcete spustit tento webhook, nebo můžete vybrat „Pošli mi vše“, pokud si přejete spustit Jenkinsovu úlohu při každé události, klikněte na aktualizaci Webhook k uložení.

Testovat automatické sestavení při závazku

Nyní jsme připraveni otestovat naši úlohu automatického sestavení.

Chcete-li otestovat, zda naše Jenkinsova úloha stahuje kód z našeho úložiště github při každém potvrzení, použijte následující příkazy.

K místnímu klonování úložiště jsem použil následující příkaz. Pokud máte vlastní zprávu, přejděte na ni do místního systému.

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

Proveďte nějaké změny v úložišti, abychom je mohli odeslat. Zde jsem místně přidal nový soubor, který vložím do svého vzdáleného úložiště

klepněte na README.md

Chcete-li nakonfigurovat uživatelské jméno a e-mailové ID pro git, použijte následující příkazy.

git config user.name "Rahul Shivalkar"
git config user.email "[e-mail chráněný]"

Pro potvrzení a odeslání změn použijte následující příkazy

git commit -m "Test Commit"
git push

Jakmile doručíme změny do úložiště na Github, spustí se naši Jenkinsova úloha, kterou jsme přidali do Github Webhooku.

Můžete to vidět pod "Protokolem dotazování" úlohy, viz následující snímek obrazovky.

Pokud přejdete na výstup konzoly úlohy, můžete vidět, že úloha byla úspěšně provedena a válka byla nasazena na Apache Tomcat.

Znovu otestovat

Nyní změňte kód a otestujte, zda bude nasazen nejnovější kód či nikoli. Změním zprávu, která se zobrazí v prohlížeči.

Pokud používáte svůj vlastní přehled, proveďte požadované změny v kódu,  zde pouze měním ukázkový soubor index.jsp, který zprávu vytiskne v prohlížeči.

vim src/main/webapp/index.jsp

Nyní se podíváme, zda se změněný kód projeví nebo ne.

Potvrďte změny, které jste ve svém kódu provedli, pomocí následujících příkazů.

git add src/main/webapp/index.jsp
git commit -m "Kód změněn na Hello World New!"
git push

Hit Apache Tomcat URL http://IP-of-Apache-Tomcat:8090/web_ex pro přístup k naší ukázkové aplikaci.

Můžete vidět, že nejnovější kód byl vytvořen a nasazen na Apache Tomcat, což znamená, že aplikace byla úspěšně nasazena a kanál byl také úspěšně spuštěn.

Pokud jste si všimli, že můj předchozí kód zobrazoval pouze „Hello World!“ a teď, když jsem provedl změny ve svém index.jsp a potvrdil je, nejnovější aplikace zobrazuje „Hello World New!“.

Závěr

V tomto článku jsme viděli kroky k vytvoření jednoduchého kanálu CI/CD, který dokáže stáhnout váš kód z úložiště Github a nasadit jej na server Apache Tomcat při každém potvrzení. Také jsme viděli kroky instalace Jenkins, Apache Tomcat, Java, plug-inů v Jenkins.


Linux
  1. Zprovozněte a zprovozněte podman na Windows pomocí Linuxu

  2. Vytvořte instanci EC2 na AWS pomocí Terraform

  3. Použití kbhit() a getch() v Linuxu

  1. Jak vytvořit a přidat svazek EBS v instanci AWS (EC2)

  2. Jak spustit instanci AWS EC2 pomocí Terraform

  3. Jak nastavit server Linux na Amazon AWS

  1. Nastavení clusteru Kubernetes na instanci AWS EC2 s Ubuntu pomocí kubeadm

  2. Jak nainstalovat Jenkins pomocí souboru .war na instanci AWS EC2 Ubuntu 20.04

  3. Jak přidat a odebrat Cronjobs z instancí Linux EC2 na AWS pomocí skriptů prostředí