GNU/Linux >> Znalost Linux >  >> Ubuntu

Co je Jenkins?

Úvod

Jenkins je platforma pro vytváření prostředí Continuous Integration/Continuous Delivery (CI/CD). Systém nabízí mnoho různých nástrojů, jazyků a automatizačních úloh, které pomáhají při vytváření kanálů při vývoji a nasazování programů.

Přestože Jenkins vyžaduje skriptování některých kroků automatizace, program poskytuje rychlý a robustní způsob, jak systematizovat životní cyklus vývoje softwaru.

Pokračujte ve čtení, abyste se dozvěděli více o Jenkins a proč je dnes jedním z předních nástrojů DevOps.

Jenkinsova definice

Jenkins je automatizační server napsaný v Javě, který pomáhá vytvářet, testovat a neustále nasazovat software. Open source systém je v současnosti jedním z předních automatizačních serverů.

Jenkins obecně poskytuje podporu pro:

  • Různé nástroje pro správu verzí, jako je Git.
  • Vytváření projektů založených na Ant a Apache Maven.
  • Spouštění skriptů Bash a dávkových souborů systému Windows.

Krátká historie Jenkinse

Projekt Jenkins začal v roce 2004 pod názvem Hudson. Vývojář Kohsuke Kawaguchi, který pracoval ve společnosti Sun systems, chtěl vytvořit metodu pro provádění nepřetržité integrace. Cílem bylo otestovat kód před potvrzením, aby nedošlo k porušení sestavení.

Nápad se ukázal jako úspěšný a rychle se rozšířil i na zbytek jeho týmu. Výsledkem bylo, že Kohsuke Kawaguch vytvořil projekt Jenkins a získal program jako open source. Používání se rozšířilo po celém světě s aktuálním odhadem 1,6 milionu uživatelů .

K čemu se Jenkins používá?

Přestože Jenkins začínal jako kontinuální integrační nástroj, současné použití pokrývá celý kanál poskytování softwaru, včetně nasazení.

Program spouští webové kontejnery a pluginy, jako je Apache Tomcat, a pomáhá spravovat požadavky na životní cyklus a přístupová práva. Více než 1700 pluginů pro Jenkins obohacuje softwarovou integraci, automatizaci a doručovací procesy a poskytuje přizpůsobitelné prostředí.

Jenkins Core Terminologie

Jenkins zahrnuje různou terminologii DevOps v různých možnostech vytváření a správy potrubí. Níže je uveden seznam některých běžných termínů a jejich definice.

Jenkins Pipeline

Jenkins Pipeline je uživatelsky vytvořený model pro potrubí s kontinuální dopravou. Pipeline obsahuje různé zásuvné moduly, které pomáhají definovat kroky postupu od správy verzí až po uživatele.

Všechny změny a potvrzení softwaru procházejí před vydáním složitým procesem. Metoda zahrnuje tři kroky :

  • Automatické budování .
  • Vícefázové testování .
  • Implementace postupy.

V Jenkins existují dva způsoby, jak vytvořit potrubí :

  1. Definujte kanál přímo prostřednictvím uživatelského rozhraní.
  2. Použijte Potrubí jako kód metodologii a vytvořte Jenkinsfile . Textový soubor používá k definování procesu potrubí syntaxi kompatibilní s Groovy.

Jenkinsfile syntaxe je buďdeklarativní nebo skriptováno .

Základní deklarativní Jenkinsfile potrubí je srozumitelnější. Příklad vypadá takto:

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Building…'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing…'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying...'
            }
        }
    }
}

Kód má následující prvky:

  • Povinné pipeline { } block vyvolá plugin Jenkins Pipeline.
  • Klíčové slovo agent definuje, kde potrubí běží, kde any označuje, že kanál běží na libovolném dostupném agentovi.
  • Fáze stages { } blok představuje sekvenci, ve které běží potrubí.
  • Kód obsahuje tři fáze:Build , Test a Deploy , každý s příslušnými steps { } .
  • steps { } řekněte Jenkinsovi, co má dělat v konkrétním bodě.

Skriptovaný ekvivalent Jenkinsfile vypadá následovně:

node {  
    stage('Build') { 
        echo 'Building…'
    }
    stage('Test') { 
        echo 'Testing…'
    }
    stage('Deploy') { 
        echo 'Deploying…'
    }
}

Zařazení Jenkinsfile do nástroje pro kontrolu zdroje umožňuje celému týmu upravovat, kontrolovat a přizpůsobovat kroky v procesu doručování.

Nepřetržitá integrace

Nepřetržitá integrace je postup vývoje softwaru, kde každá aplikovaná změna vyvolá automatický test sestavení. Proces zajišťuje integraci kódu do funkčního spustitelného formuláře bez chyb.

Nepřetržitá integrace je nezbytným aspektem v prostředích s více vývojáři. Každý vývojář provádí změny v kódu a každá změna má potenciální problémy.

Nástroj pro nepřetržitou integraci, jako je Jenkins, pomáhá testovat, identifikovat a řešit problémy před použitím změn v produkci.

Automatické testování

Automatizované testování pro Jenkins předvolí provádění testu a ukládá výsledky. Cílem je zajistit, aby kód fungoval v různých scénářích. Vytváření automatických testů pro různá prostředí, jako je několik verzí Java nebo operačních systémů, pomáhá předvídat a předcházet problémům v pozdějších verzích.

Fáze automatického testování se hladce začlení do potrubí CI v Jenkins. Různé pluginy pomáhají spouštět jednotkové, integrační, funkční a regresní testy a ukládají výsledky pro pozdější prohlížení a analýzu.

Controller (dříve Master)

Architektura Jenkins se stará o distribuovaná sestavení. Jeden uzel je centrální řídicí jednotka a organizér, známý jako ovladač.

Řadič je ústředním procesem, kde sídlí konfigurace Jenkins. Řadič Jenkins, dříve známý jako Master, spravuje agenty a jejich připojení, pomáhá načítat pluginy a koordinuje tok projektu.

Agent (dříve Slave)

Agenti se připojují k ovladači Jenkins a spouštějí projekty. Agenti vyžadují instalaci Java na fyzický nebo virtuální počítač, jako jsou instance Bare Metal Cloud, obrazy Docker nebo clustery Kubernetes.

Agenti v Jenkins pomáhají poskytovat lepší výkon tím, že vyvažují zátěž a vytvářejí bezpečné prostředí, oddělené od řadiče.

Uzel

Uzel je obecný termín pro agenty a kontroléry, bez ohledu na jejich skutečnou roli. Každý stroj se schopností vytvářet projekty a potrubí je uzel Jenkins a ovladač je známý jako vestavěný uzel .

Vestavěný uzel monitoruje stav všech připojených uzlů a přepne je do režimu offline, pokud nějaké hodnoty překročí prahovou hodnotu.

Projekt (dříve Job)

Jenkinsův projekt nebo zakázka je uživatelsky vytvořený automatizační postup s konkrétním cílem. Jenkins ve výchozím nastavení nabízí různé úlohy sestavení a další jsou k dispozici prostřednictvím pluginů.

Níže je tabulka s krátkým popisem některých typů projektů.

Projekt Popis
Volný styl Neomezená úloha sestavení s více operacemi.
Potrubí Projekt o více krocích s několika agenty sestavení.
Vícenásobná konfigurace Projekt s více testovacími prostředími a různými konfiguracemi.
Vícevětví potrubí Projekt, který vytváří sadu projektů potrubí podle větví v systému správy řízení zdroje.

Sestavit

V Jenkins představují sestavení jediné provedení úlohy s aktuální konfigurací. Sestavení vytváří software z různých zdrojů definovaných v postupu projektu. V závislosti na projektu zahrnují mechanismy sestavení:

  • Shromažďování závislostí.
  • Kompilace nebo transformace kódu.
  • Archivace materiálů.
  • Testování.
  • Nasazení do různých prostředí.

Sestavení je tedy jeden běh definovaného projektu s různými kroky.

Jak Jenkins funguje?

Jenkins provádí vývojové kroky od integrace po nasazení , automatizuje každý krok na cestě.

Pokaždé, když vývojář publikuje potvrzení do úložiště zdrojového kódu, Jenkins spustí sestavení. Potvrzení se obvykle odešle do vývojové větve.

Kroky sestavení zahrnují testování kódu, aby se zajistilo, že se sestavení nerozbije. Pokud dojde k nějaké chybě, Jenkins upozorní vývojáře, aby podle toho jednal. Pokud všechny testy projdou, potrubí pokračuje k integračním krokům.

Integrace trvá déle a vyžaduje testování kódu proti více konfiguracím systému. Jenkins provádí paralelní integrační testy na různých uzlech, čímž zkracuje čas potřebný k pokusu o integraci kódu.

Jenkins dále v kanálu automatizuje testování přijetí uživatelů, což je požadavek před nasazením. Pokud všechny testy projdou, kód se sloučí do hlavní větve a zpřístupní kód uživatelům.

Jenkinsovy funkce

Hlavní rysy Jenkins jsou:

  • Snadná instalace . Program založený na java je autonomní a agnostický pro platformu.
  • Přímá konfigurace . Uživatelsky přívětivé webové rozhraní usnadňuje konfiguraci. Informace o prvním nastavení naleznete v našem výukovém programu Jenkins.
  • Přizpůsobitelné díky masivní dostupnosti pluginů . V současné době je k dispozici více než 1700 pluginů pro rozšíření Jenkinsových funkcí. V případě chybějících funkcí importujte další externí nebo vlastní pluginy.
  • Open-source . Jenkins je zcela open-source a zdarma k použití, což z něj dělá levnou technologii na implementaci.

Výhody a nevýhody Jenkinse

Jenkins přichází s určitými výhodami a nevýhodami. Níže je uveden podrobný přehled výhod a nevýhod práce s Jenkinsem.

Výhody Jenkinse

Některé výhody, které přináší Jenkins, jsou:

  • Rychlejší vývojový cyklus . Sestavy a testy na každém odevzdání vytvářejí rychle se měnící prostředí pro odstraňování chyb. Nové funkce a verze se ke koncovému uživateli dostanou rychleji a s menším počtem chyb.
  • Méně času na integraci kódu . Před Jenkinsem byla integrace kódu ručním procesem a ladění kódu bylo složité. Dosažení pracovní verze by vyžadovalo projít různými potvrzeními a analyzovat problémy. Při používání Jenkins integrace po každém potvrzení zajišťuje, že funkce programu budou vždy dostupné a funkční.
  • Rychlá zpětná vazba pro vývojáře . Kdykoli se sestava přeruší, vývojáři zůstávají informováni. Systém zpětné vazby pomáhá vývojářskému týmu rychle řešit problémy namísto ladění četných revizí.
  • Automatizovaný pracovní postup . Automatické testování pro každý odevzdání se integruje přímo do kanálu.

Nevýhody Jenkinse

Níže jsou uvedeny některé nevýhody při práci s Jenkinsem:

  • Nákladné . Přestože je Jenkins zdarma, program vyžaduje stabilní a robustní infrastrukturu.
  • Neustálá údržba . Údržba serveru Jenkins je časově náročná. Přidávání fází do kanálu, upgrade serveru o nové funkce a sledování aktualizací zásuvných modulů vyžadují, aby správce restartoval a spravoval server ručně.
  • Zaměřeno na vývojáře . Platforma je řízena funkcemi a není příliš uživatelsky přívětivá pro nevývojáře. Některé vývojářské zkušenosti jsou při práci s Jenkinsem nutností.

Jak nainstalovat Jenkins

Jenkins pracuje na různých operačních systémech a prostředích. Instalace je k dispozici v mnoha formách, například:

  • Instalační balíčky pro hlavní operační systémy, jako jsou Windows, Ubuntu, Debian, CentOS atd.
  • Archivní soubor WAR.
  • Obrázek Docker.
  • Na clusteru Kubernetes.
  • Sestavení zdrojového kódu.

Jenkins běží jako samostatný balíček nebo na aplikačním serveru Java. Uživatelské rozhraní je webové a v obou případech je dodáváno s REST API.


Ubuntu
  1. Co je Web 3.0?

  2. Co je JingOS Linux?

  3. Jak používat zdrojový příkaz ve skriptu potrubí Jenkins

  1. Co je Bare Metal Cloud

  2. Co je Spark DataFrame?

  3. Co je relační databáze?

  1. Co je Git?

  2. Co je úložiště Git?

  3. Co je Cloud-Init?