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.

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.

  Jak přidat titulky k fotografiím a videím na iPhone a iPad

#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.

  • Na levém panelu najdete tlačítko Nová položka.
  • Kliknutím na něj přejdete na další stránku.
  • Jakmile jste na nové stránce, zobrazí se výzva k vytvoření položky.
  • Zadejte název do pole Zadejte název položky. Toto je povinné.
  • Mějte na paměti, že bude vytvořen adresář se stejným názvem. Proto je nejlepší vyhnout se mezerám, protože to může vést k nežádoucím vedlejším účinkům.
  • Poté vyberte možnost Pipeline a klikněte na tlačítko OK v dolní části obrazovky.
  • Zobrazí se okno Konfigurace.
  • Klikněte na možnost Pipeline v levém panelu nebo přejděte dolů do sekce Pipeline.
  • 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.

      13 platforem pro vytvoření znalostní báze a nejčastějších dotazů pro vaši firmu

    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.

  • Jděte do svého GitHub profil. Můžete si vytvořit bezplatný účet, pokud jej nemáte.
  • Vytvořte nové úložiště. Pojmenujte to customJenkins.
  • Na místním počítači se ujistěte, že máte nainstalovaný Git.
  • Vytvořte adresář ve vámi zvoleném umístění.
  • Přejděte do adresáře a otevřete svůj terminál.
  • Inicializujte prázdné úložiště Git pomocí příkazu git init.
  • Nyní vytvořte nový soubor, který bude vaším Jenkinsfile. Pojmenujme to customJenkinsfile.
  • Napište svůj kanál jako kód do tohoto souboru. Jako příklad použijte níže uvedený:
  • 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...'
                }
            }
        }
    }
  • Přidejte nově vytvořený soubor do Gitu pomocí příkazu git add –all ve vašem terminálu.
  • Odešlete soubor do systému Git pomocí příkazu git commit -m “Vytvořen vlastní soubor jenkinsfile”.
  • Propojte své místní úložiště Git se vzdáleným úložištěm pomocí git remote add origin [email protected]:/customJenkins.git.
  •   Co je Markdown a jak jej používáte?
  • Dále nahrajte soubor na vzdálený (GitHub) pomocí git push –set-upstream origin master.
  • 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

  • Otevřete ovládací panel Jenkins.
  • Vytvořte nové potrubí nebo klikněte na Konfigurovat v levém panelu z existujícího potrubí.
  • Přejděte dolů do části Potrubí.
  • Z rozevíracího seznamu Definice vyberte možnost Pipeline script from SCM.
  • V možnosti SCM vyberte Git.
  • Uveďte odkaz na své úložiště GitHub v adrese URL úložiště v části Úložiště.
  • Ujistěte se, že je Specifikátor větve nastaven jako */master v části Větve k sestavení.
  • Přejděte dolů na Cesta skriptu. Zde zadejte název souboru Jenkins jako customJenkinsfile. Klikněte na Uložit.
  • 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.