Tento tutoriál je o nepřetržité integraci mezi GitLab, Jenkins a SonarQube. Na konci tohoto tutoriálu si budete moci prohlížet zprávy o kvalitě kódů úložiště GitLab na SonarQube pomocí Jenkinse jako kontinuálního integrátora a sonarového skeneru jako analyzátoru kódu.
Nastavení nepřetržité integrace s GitLab, Jenkins a SonarQube
Než se podíváme na to, jak nastavit kontinuální integraci (CI), podívejme se nejprve na zapojené komponenty a jakou roli hrají v našem nastavení zde.
GitLab
GitLab je platforma pro hostování kódu s otevřeným zdrojovým kódem pro spolupráci a správu verzí. Lze jej nainstalovat na vaše servery a hostovat vaše kódy soukromě. GitLab poskytuje funkci správy zdrojového kódu (SCM) podobnou GitHubu a BitBucketu.
Jenkins
Jenkins je open-source server pro nepřetržitou integraci. Jedná se o automatizační nástroj, který lze použít k testování a kompilaci vašich kódů a jejich nasazení do produkce, pokud se sestavení podaří.
Jenkins se zde používá k vytažení kódů z GitLabu (v reálném čase, když je kód vložen nebo sloučen), sestavení kódů projektu a odeslání výsledku do SonarQube pro vizuální interpretaci.
SonarQube
SonarQube je open-source server průběžné kontroly. Je to nástroj používaný jako brána kvality pro kontrolu kódu. Poskytuje automatické zprávy o analýze kódů, detekuje chyby, zranitelnosti zabezpečení, duplicitní kódy, komentáře, pachy kódu a mnoho dalších pro různé programovací jazyky.
Předpoklady
Tento tutoriál předpokládá, že GitLab, Jenkins a SonarQube již byly na vašem systému Linux nainstalovány. Instalace těchto nástrojů zde není naším cílem.
Nyní, když znáte příslušné nástroje a jejich role, pojďme se podívat, jak nastavit naši nepřetržitou integraci
Krok 1. Konfigurace na Sonarqube
Požadujeme ověřovací token serveru ze SonarQube, který později předáme Jenkinsovi. Tento token umožňuje přístup k Jenkinsovi, aby umožnil Jenkinsovi sestavení na SonarQube pro analýzu kódu.
- Přejděte na Můj účet> Zabezpečení
- Na stránce Tokeny blok, zadejte libovolný text pro vygenerování tokenu.
- Ponechte si kopii tokenu
Zde je recenze SonarQube generujícího uživatelský token:
Nyní vytvoříme projekt, kde budou publikovány všechny zprávy o analýze kódu.
- Přejděte na Administrace> Projekty> Správa
- Klikněte na Vytvořit projekt
- Vytvořte projekt pomocí svého Project_name a Project_key. Zkopírujte název a klíč projektu. Tyto přihlašovací údaje předáme později v konfiguraci Jenkins.
Náhled vytváření projektu:
Krok 2. Konfigurace na GitLab
Potřebujeme také přístupové tokeny uživatele GitLab, které později předáme v Jenkins. To se používá k ověření adresy URL úložiště uživatele GitLab, odkud Jenkins stahuje kódy.
- Přejděte na Uživatelská nastavení nabídka Nastavení formuláře.
- Přejděte na Přístupové tokeny
- Vytvořte osobní přístupový token přidáním libovolného jedinečného jména (Jméno ) a datum vypršení platnosti tokenu (Platnost vyprší v ). Nastavte také Rozsahy k api- Plný přístup.
Náhled generování přístupových tokenů uživatele:
Krok 3. Konfigurace u Jenkinse
Musíme nakonfigurovat GitLab a SonarQube na webovém panelu Jenkins. K tomu potřebujeme nainstalovat některé potřebné pluginy.
- Přihlaste se do Jenkins
- Přejděte na Správa Jenkinse> Spravovat pluginy
- Na stránce Dostupné kartu, vyhledejte GitLab a SonarQube a nainstalujte následující pluginy:
- Plugin GitLab Hook
- Plugin GitLab
- Git
- Skener SonarQube pro Jenkinse
Požadujeme Skener SonarQube k instalaci na “Jenkins server”, který ve skutečnosti zahájí analýzu kódu a publikuje zprávy pro projekt na SonarQube.
Chcete-li nainstalovat SonarQube Scanner, můžete použít následující příkazy:
$ wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.zip
$ unzip sonar-scanner-cli-3.3.0.1492-linux.zip
$ cd sonar-scanner-3.3.0.1492-linux $ pwd
Zkopírujte umístění. Budeme muset přidat toto umístění (jako domovskou složku instalace skeneru SonarQube) v konfiguraci Jenkins.
Nakonfigurujeme také soubor vlastností sonar-scanner na přidání serveru SonarQube:
$ cd conf
$ vi sonar-scanner.properties
Odkomentujte „sonar.host.url“ a přidejte adresu URL serveru SonarQube
Nyní nakonfigurujeme GitLab a SonarQube v Jenkins.
- Přejděte na Správa Jenkinse> Konfigurovat systém
- Na serverech SonarQube zadejte adresu URL serveru SonarQube a token ověření serveru vygenerované dříve na SonarQube.
Náhled přidání SonarQube na Jenkins:
Nyní přejděte na kartu GitLab a přidejte adresu URL svého serveru GitLab na Adresa URL hostitele GitLab
Na stránce Přihlašovací údaje , potřebujeme token GitLab API pro přístup do GitLabu. Klikněte na Přidat a vyberte Jenkins: Poskytovatel pověření Jenkins
U Kind , vyberte GitLab API Token z rozevíracího seznamu. Zadejte svůj API Token vygenerovaný dříve na GitLab. Přidejte token s jedinečným ID.
Také se ujistěte, že máte správné Jenkinsovo umístění na Jenkinsově místě kartu.
Po úspěšném přidání GitLab a SonarQube musíme přidat také konfigurace SonarQube Scanner.
- Přejděte na Správa Jenkinse> Globální konfigurace nástroje
- Na Skener SonarQube klikněte na Instalace skeneru SonarQube
- Zrušte zaškrtnutí možnosti Instalovat automaticky a přidejte domovskou složku instalace SonarQube.
Krok 4:Přidání projektu do Jenkins pro průběžnou integraci a průběžnou kontrolu
Po dokončení všech konfigurací nyní vytvoříme projekt na Jenkins.
Přejděte na Jenkins Dashboard -> Nová položka> Vyberte Projekt Freestyle . Vytvořte projekt s jedinečným názvem projektu
Na panelu Jenkins Dashboard vyberte svůj projekt a klikněte na Konfigurovat .
Přejděte na Obecné vyberte z rozevíracího seznamu připojení GitLab. Uvidíte název připojení GitLab, který jsme přidali dříve, v Manage Jenkins> Konfigurovat systém .
Přejděte na Správa zdrojového kódu vyberte Git . Přidejte http URL svého projektu GitLab (používá stejnou syntaxi jako příkaz git clone). Adresu URL můžete získat na své stránce projektu GitLab.
Zadejte také ověření pro adresu URL GitLab.
- Na stránce Credentials , klikněte na Přidat a vyberte Jenkins: Poskytovatel pověření Jenkins
- v Kind , vyberte Uživatelské jméno s heslem z rozbalovacího seznamu.
- Zadejte své přihlašovací uživatelské jméno a heslo GitLab.
- Přidejte klíč s jedinečným ID.
Musíte také určit větve, které chcete postavit. Pokud ponecháte prázdné, všechny větve budou prozkoumány z hlediska změn a sestaveny.
Přidání větví lze provést takto:*/
Nyní přejděte na Sestavení spouštěčů , zaškrtněte políčko URL webhooku GitLab.
- Zkopírujte adresu URL webhooku GitLab. Musíme nastavit webhook znovu na GitLabu pomocí této adresy URL.
- Klikněte na Upřesnit
- Generovat jako Tajný token . Zkopírujte tento token, později se použije k nastavení webhooku v GitLabu.
Náhled vytváření spouštěčů sestavení
Nakonec přejděte na Sestavení na kartě Spustit skener SonarQube , přidejte konfigurační parametry SonarQube, které používá skener SonarQube. Může zahrnovat SonarQube ProjectName, ProjectKey, umístění instalace SonarQube Scanner atd.
Po dokončení všech konfigurací musíme naposledy nastavit webhook v GitLabu.
Webhook je metoda, jak posílat data do jiných aplikací v reálném čase.
Webhook v GitLab používáme k automatizaci doručování kódů GitLab během událostí push nebo událostí sloučení, jak je uvedeno.
- Přihlaste se ke svému účtu Gilab.
- přejděte na Vaše projekty v Projektu menu.
- Vyberte svůj projekt
- přejděte do Nastavení> Integrace
- Přidejte adresu URL webhooku a tajný token, které jsme zkopírovali z karty Jenkins Build Triggers.
- Vyberte požadované spouštěče a zrušte zaškrtnutí políčka Ověření SSL .
- Vytvořit webhook
Náhled vytváření webhooku GitLab:
Otestujte webhook pomocí událostí Push .
Po úspěšném testu se Project začne stavět v Jenkins. Přihlaste se k Jenkinsovi a ověřte sestavení projektu. Kódy GitLab můžete vidět na Jenkins Workspaces .
Také můžete vidět zprávy o kódu projektu na SonarQube.
A je to! Úspěšně jsme integrovali GitLab, Jenkins a SonarQube. Nyní pro každou událost push nebo událost sloučení do našeho úložiště GitLab Jenkins sestaví projekt a ukáže kvalitu kódu na SonarQube.
Doufám, že pro vás bylo snadné sledovat tento tutoriál. Pokud máte nějaké dotazy nebo návrhy, dejte mi prosím vědět.
Autor :Rishi Raj Gautam je milovník Linuxu a aktivista open source.