Pipeline jako kód vysvětlený nejjednodušším možným způsobem
Při vývoji softwaru pomáhají kanály CI/CD nebo kontinuální integrace/průběžné doručování při vytváření a nasazení kódu do různých prostředí prostřednictvím automatizovaného procesu.
Vytvoření a údržba tohoto potrubí se však samo o sobě může stát náročným úkolem. Enter Pipeline as Code – přístup, při kterém vytvoříte celý kanál CI/CD ve formátu kódu. Spíše než se spoléhat na webová uživatelská rozhraní a nástroje pro přetahování pomocí konfiguračních souborů definujete, jak bude kód vaší aplikace sestaven, testován a nasazen.
Než se však pustíme do podrobností o Pipeline as Code a o tom, jak si můžete vytvořit svůj vlastní, nejprve si ujasněme, co to vlastně potrubí je.
Table of Contents
Co je to potrubí ve vývoji softwaru?
Potrubí ve vývoji softwaru je řada automatizovaných kroků, které provádějí vaše poslední změny kódu, spouštějí v něm specifické procesy a nasazují jej do vámi zvoleného prostředí. Pojďme to lépe pochopit na příkladu.
Představte si, že máte tři mikroslužby a do jedné z nich jste přidali nové funkce. Nyní chcete spustit testy jednotek na úrovni kódu. Jakmile projdou, chcete také zkontrolovat problémy s formátováním kódu. Dále chcete vytvořit svůj kód. Poté jej chcete nasadit do dvou různých prostředí s více počítači v každém prostředí. Nakonec byste chtěli spustit integrační testy, abyste zajistili, že vaše změny budou synchronizovány s ostatními službami.
Všechny výše uvedené kroky můžete provést ručně. Ale to vám zabere spoustu času a budete náchylní k chybám. Existuje tedy způsob, jak je automatizovat? Ano! Můžete vytvořit potrubí a definovat všechny kroky. Poté, pokaždé, když provedete změny v kódu, můžete spustit kanál a nemusíte se starat o žádné ruční kroky.
Výhody Pipeline jako kódu
Pokud používáte nástroje, jako je přetahování, pak je pro vás obtížné sledovat změny, udržovat standardizaci nebo podporovat spolupráci. Pipeline as Code je lepší způsob, jak definovat váš kanál vývoje softwaru.
Pomáhá udržovat věci konzistentní. Podporou automatizace získáte opakovatelnost a použijete stejné potrubí pro jiné systémy. A stejně jako kód aplikace i kód používaný k definování vašeho kanálu podporuje spolupráci.
#1. Konzistence
Být definován v textovém formátu zajišťuje, že se nic nestane mimo provoz. Prosazením standardního pracovního postupu pro všechna vaše sestavení a nasazení aplikací získáte konzistenci a snížíte riziko neočekávaných problémů.
A s konzistentností získáte také kontroly souladu a zabezpečení. Zajištění konzistentního kanálu vám umožní definovat bezpečnostní prověřování a kontroly zranitelnosti tak, aby vás nic neprošlo.
#2. Opakovatelnost
Vytvořte si svůj kanál a nastavte automatizaci. Kromě konzistence váš automatizovaný kanál zajišťuje, že každý aplikační kód prochází stejnými fázemi a kontrolami.
Váš kód projde stejným procesem sestavení a nasazení pokaždé, když spustíte kanál. Zachováte opakovatelnost ve všech vašich jízdách.
#3. Spolupráce
S kódem, který je médiem, pomocí kterého vytváříte kanál, podporujete spolupráci. Více lidí ve vašich týmech může přispívat ke stejnému kódu, stejně jako vy u kódu aplikace.
Pipeline as Code vám také umožňuje udržovat správu verzí a povolit kontroly kódu. To zajišťuje, že jsou dodržovány osvědčené postupy a potenciální problémy jsou včas zachyceny.
Nyní se pojďme ponořit do toho, jak můžete vytvořit svůj vlastní kanál pomocí Pipeline jako kódu.
Pipeline jako kód v Jenkinsovi
Pokud jde o systémy kontinuální integrace a kontinuálního zavádění (CI/CD), Jenkins je přední open-source automatizační server. S Jenkins můžete bez námahy integrovat změny kódu, automatizovat testování a sestavování a nasazovat software. A to vše dokážete spolehlivě a efektivně.
Ať už jste fanda a snažíte se dozvědět více o automatizačních kanálech nebo budujete složité podnikové systémy, Jenkins splňuje všechny jedinečné požadavky vašeho projektu. Jeho množství pluginů a stále rostoucí komunita vám mohou pomoci maximálně využít vaši automatizaci.
V Jenkins je Pipeline sada různých různých pluginů definovaných v určitém pořadí, které vytvářejí váš CI/CD systém. Ať už jde o jednoduché nebo složité případy použití, můžete vytvořit svůj kanál pomocí kódu s Syntaxe jazyka specifického pro doménu kanálu (DSL).. DSL je postaven na vrcholu Apache Groovy.
Základem Pipeline jako kódu v Jenkins je Jenkinsfile – textový soubor, který obsahuje kód popisující všechny různé fáze a akce. Pojďme se naučit, jak vytvořit svůj kanál jako kód pomocí Jenkinsfile.
Jak vytvořit svůj kanál jako kód?
Po instalaci a spuštění Jenkins přejděte do webového uživatelského rozhraní v prohlížeči. Možná se budete muset přihlásit. Dále skončíte na hlavní stránce Dashboard. Začnete odtud a vytvoříte svůj kanál.
Začněme jednoduchým kanálem, který můžete nakonfigurovat přímo z uživatelského rozhraní.
Vytvořte Pipeline jako kód přímo v Jenkins
Jakmile jste v sekci Pipeline, jste připraveni vytvořit svůj první Pipeline jako kód.
Z rozevírací nabídky Definice vyberte možnost Pipeline script. Pod ním najdete oblast Skript, kde můžete naprogramovat svůj kanál. Jenkins udržuje skript vytvořený zde.
Jenkins vám umožňuje vybrat si mezi dvěma styly kódování nebo syntaxí – deklarativní syntaxí a skriptovanou syntaxí. Zatímco Declarative se snadno používá a je ideální pro jednoduchá potrubí, skriptovaná syntaxe je určena pro pokročilé uživatele a navrhování složitých toků.
Pomocí deklarativní syntaxe vytvořte 3 jednoduché fáze – sestavení kódu, testovací kód a nasazení kódu pomocí následujícího fragmentu kódu:
pipeline { agent any stages { stage('Build Code') { steps { echo 'This is the step for build...' } } stage('Test Code') { steps { echo 'This is the step to test...' } } stage('Deploy Code') { steps { echo 'This step deploys the code...' } } } }
Můžete také použít skriptovanou syntaxi, jak je uvedeno níže:
node { stage('Build Code') { echo 'This is the step for build...' } stage('Test Code') { echo 'This is the step to test...' } stage('Deploy Code') { echo 'This step deploys the code...' } }
Klikněte na Uložit. Nyní klikněte na tlačítko Sestavit nyní v levém panelu. Tím se spustí kanál, který jste právě vytvořili.
Jakmile váš kanál skončí, můžete to zkontrolovat v Historii sestavení. Pokud je to vaše první spuštění, klikněte na přítomné číslo sestavení #1. Dále klikněte na Console Output v levém panelu. V každé fázi najdete 3 echo příkazy, které máte v kódu kanálu.
Vytvořte kanál jako kód pomocí externího souboru
Udržování potrubí přímo v Jenkins se stává náročné, když to začíná být složité. V tomto případě byste chtěli vytvořit externí soubor a použít jej.
Než vytvoříte svůj kanál Jenkins, potřebujete externí úložiště a systém správy verzí. Pojďme vytvořit úložiště Git a hostovat jej vzdáleně na GitHubu. Vytvoříte si svůj Jenkinsfile a uložíte jej zde.
pipeline { agent any stages { stage('Build Code') { steps { echo 'This is the step for build defined in custom file...' } } stage('Test Code') { steps { echo 'This is the step to test defined in custom file...' } } stage('Deploy Code') { steps { echo 'This step defined in custom file deploys the code...' } } } }
Nyní jste vytvořili vzdálené úložiště na GitHubu, které obsahuje vlastní Jenkinsfile. Pojďme nakonfigurovat Jenkinse, aby to používal.
Nakonfigurujte Jenkins tak, aby používal Jenkinsfile z GitHubu
Poté spusťte potrubí. Jenkins nejprve načte váš kód ze vzdáleného úložiště. Poté vytvoří potrubí pomocí vlastního Jenkinsfile a spustí všechny fáze.
Nyní jste úspěšně vytvořili svůj vlastní kanál vývoje softwaru pomocí Pipeline jako kódu. Kromě toho jste povolili správu verzí ve skriptu kanálu. Jakékoli změny, které provedete v kódu kanálu, lze nyní sledovat pomocí každého potvrzení Git. Dále je čas podívat se na osvědčené postupy.
Nejlepší postupy pro psaní efektivního kanálu jako kódu
Pojďme se podívat na osvědčené postupy, které byste měli dodržovat při psaní kanálu jako kódu.
- Udržujte své potrubí čisté a vyhněte se psaní příliš složitých podmínek.
- Pokud v kanálu děláte příliš mnoho příkazů, rozdělte je do různých kroků.
- Použijte externí soubory s řízením verzí pro váš kanál jako kódové skripty.
- Využijte funkce kódovacího jazyka, jako je Groovy, k integraci různých kroků.
- Vyhněte se voláním na Jenkins.getInstance nebo její přístupové prvky, abyste zmírnili problémy se zabezpečením a výkonem.
- Nepřepisujte vestavěné příkazy potrubí jako sh a timeout.
- Vytvářejte externí nástroje nebo skripty pro složité úlohy náročné na CPU a zapojte je do svého kanálu.
- Využijte širokou škálu existujících pluginů dostupných pro Jenkins k řešení vašeho případu použití.
- Ujistěte se, že jste začlenili zpracování výjimek a chyb, protože věci se mohou pokazit.
- Nevytvářejte svůj kanál jako kód pevně spojený se spoustou obchodní logiky uvnitř něj.
- Kdykoli je to možné, používejte parametrizované argumenty, aby byl kanál znovu použitelný.
Pipeline jako kód: Jednoduchý přístup pro složité procesy
Stručně řečeno, Pipeline as Code zjednodušuje automatizaci vašeho kanálu CI/CD tím, že celý proces představuje jako kód. Zatímco kanály CI/CD automatizují vytváření, testování a nasazení změn vašeho kódu, využití kanálu Pipeline as Code to posouvá o krok dále. Umožňuje vám definovat pracovní postup v textu, spíše než se spoléhat na grafická rozhraní.
S Pipeline as Code zajistíte, že každý krok vašeho pracovního postupu proběhne ve správném pořadí. Snížíte riziko, že narazíte na nežádoucí problémy. Navíc získáte několik výhod – včetně konzistence, opakovatelnosti a podpory spolupráce.
Pomocí této příručky nyní víte, jak vytvořit vlastní potrubí pomocí Jenkins, široce používaného nástroje CI/CD. Jenkins nabízí výkonnou a flexibilní platformu pro implementaci Pipeline jako kódu prostřednictvím svého Jenkinsfile. Dodržujte osvědčené postupy a vytvářejte pracovní postupy, které se vypořádají se všemi vašimi případy použití.
Pokud se chcete dozvědět více o Jenkins, můžete se podívat, jak vytvořit svůj vlastní Jenkins pipeline.