Pipeline jako kod wyjaśniony w najprostszy możliwy sposób

W tworzeniu oprogramowania potoki CI/CD lub ciągłej integracji/ciągłego dostarczania pomagają w budowaniu i wdrażaniu kodu w różnych środowiskach w ramach zautomatyzowanego procesu.

Jednak utworzenie i utrzymanie tego potoku samo w sobie może stać się trudnym zadaniem. Wprowadź potok jako kod — podejście, w którym tworzysz cały potok CI/CD w formacie kodu. Zamiast polegać na internetowych interfejsach użytkownika i narzędziach typu „przeciągnij i upuść”, używasz plików konfiguracyjnych do definiowania sposobu budowania, testowania i wdrażania kodu aplikacji.

Zanim jednak przejdziemy do szczegółów Pipeline jako kodu i tego, jak możesz zbudować swój własny, najpierw zrozummy, czym dokładnie jest potok.

Co to jest potok w rozwoju oprogramowania?

Potok w tworzeniu oprogramowania to seria zautomatyzowanych kroków, które pobierają najnowsze zmiany w kodzie, uruchamiają na nim określone procesy i wdrażają je w wybranym przez Ciebie środowisku. Rozumiemy to lepiej na przykładzie.

Wyobraź sobie, że masz trzy mikrousługi i do jednego z nich dodałeś nowe funkcje. Teraz chcesz uruchomić testy jednostkowe na poziomie kodu. Po ich przejściu warto także sprawdzić, czy nie występują problemy z formatowaniem kodu. Następnie chcesz zbudować swój kod. Następnie chcesz wdrożyć go w dwóch różnych środowiskach z wieloma maszynami w każdym środowisku. Na koniec warto przeprowadzić testy integracyjne, aby upewnić się, że zmiany są zsynchronizowane z innymi usługami.

Możesz wykonać wszystkie powyższe kroki ręcznie. Ale to zajmie dużo czasu i będziesz podatny na błędy. Czy istnieje zatem sposób na ich zautomatyzowanie? Tak! Można utworzyć potok i zdefiniować wszystkie kroki. Następnie za każdym razem, gdy wprowadzisz zmiany w kodzie, możesz uruchomić potok i nie martwić się o żadne ręczne kroki.

Korzyści z Pipeline jako kodu

Jeśli używasz narzędzi takich jak przeciąganie i upuszczanie, śledzenie zmian, utrzymywanie standaryzacji lub promowanie współpracy staje się trudne. Pipeline as Code to lepszy sposób na zdefiniowanie potoku rozwoju oprogramowania.

Pomaga zachować spójność. Promując automatyzację, zyskujesz powtarzalność i wykorzystanie tego samego potoku dla innych systemów. I podobnie jak kod aplikacji, kod używany do definiowania potoku promuje współpracę.

#1. Konsystencja

Zdefiniowanie w formacie tekstowym gwarantuje, że nic nie stanie się nie w porządku. Wymuszając standardowy przepływ pracy dla wszystkich kompilacji i wdrożeń aplikacji, uzyskujesz spójność i zmniejszasz ryzyko nieoczekiwanych problemów.

Dzięki spójności zyskujesz także kontrolę zgodności i bezpieczeństwo. Zapewnienie spójnego potoku umożliwia zdefiniowanie skanów bezpieczeństwa i kontroli podatności na ataki w taki sposób, że nic nie umknie Twojej uwadze.

#2. Powtarzalność

Stwórz swój potok i ustaw automatyzację. Oprócz spójności zautomatyzowany potok zapewnia, że ​​każdy kod aplikacji przechodzi przez te same etapy i kontrole.

Twój kod będzie przechodził przez ten sam proces kompilacji i wdrażania przy każdym uruchomieniu potoku. Utrzymujesz powtarzalność we wszystkich swoich seriach.

#3. Współpraca

Ponieważ kod jest medium, za pomocą którego tworzysz potok, promujesz współpracę. Wiele osób w Twoich zespołach może współtworzyć ten sam kod, tak jak w przypadku kodu aplikacji.

Pipeline as Code pozwala także zachować kontrolę wersji i umożliwia przeglądanie kodu. Gwarantuje to przestrzeganie najlepszych praktyk i wczesne wykrywanie potencjalnych problemów.

Przyjrzyjmy się teraz, jak utworzyć własny potok przy użyciu potoku jako kodu.

Pipeline jako kod w Jenkins

Jeśli chodzi o systemy ciągłej integracji i ciągłego wdrażania (CI/CD), Jenkinsa jest wiodącym serwerem automatyzacji typu open source. Dzięki Jenkins możesz bez wysiłku integrować zmiany w kodzie, automatyzować testowanie i budowanie oraz wdrażać oprogramowanie. A wszystko to możesz zrobić niezawodnie i efektywnie.

Niezależnie od tego, czy jesteś hobbystą, który chce dowiedzieć się więcej o potokach automatyzacji, czy też budujesz złożone systemy dla przedsiębiorstw, Jenkins spełnia wszystkie unikalne wymagania Twojego projektu. Bogactwo wtyczek i stale rosnąca społeczność mogą pomóc Ci w pełni wykorzystać automatyzację.

W Jenkins Pipeline to zestaw różnych wtyczek zdefiniowanych w określonej kolejności, które tworzą Twój system CI/CD. Niezależnie od tego, czy są to proste, czy złożone przypadki użycia, możesz utworzyć potok za pomocą kodu z rozszerzeniem Składnia języka specyficznego dla domeny (DSL) potoku. DSL jest zbudowany na górze Apache Groovy.

Podstawą Pipeline as Code w Jenkins jest Plik Jenkinsa – plik tekstowy zawierający kod opisujący wszystkie etapy i działania. Nauczmy się, jak utworzyć potok jako kod przy użyciu pliku Jenkinsfile.

Jak stworzyć swój potok jako kod?

Po zainstalowaniu i uruchomieniu Jenkinsa przejdź do interfejsu internetowego w przeglądarce. Być może będziesz musiał się zalogować. Następnie znajdziesz się na głównej stronie Panelu. Zaczniesz od tego miejsca i utworzysz potok.

  • Na lewym panelu znajdziesz przycisk Nowy element.
  • Kliknij na nią, aby przejść do następnej strony.
  • Gdy znajdziesz się na nowej stronie, pojawi się monit o utworzenie elementu.
  • Podaj nazwę w polu Wprowadź nazwę elementu. Jest to obowiązkowe.
  • Pamiętaj, że zostanie utworzony katalog o tej samej nazwie. Dlatego najlepiej unikać białych znaków, ponieważ może to prowadzić do niepożądanych skutków ubocznych.
  • Następnie wybierz opcję Pipeline i kliknij przycisk OK znajdujący się na dole ekranu.
  • Wyświetlone zostanie okno Konfiguracja.
  • Kliknij opcję Potok w lewym panelu lub przewiń w dół do sekcji Potok.
  • Zacznijmy od prostego potoku, który możesz skonfigurować bezpośrednio z interfejsu użytkownika.

    Utwórz potok jako kod bezpośrednio w Jenkins

    Gdy znajdziesz się w sekcji potok, możesz utworzyć swój pierwszy potok jako kod.

    Z menu rozwijanego Definicja wybierz opcję Skrypt potoku. Poniżej znajdziesz obszar Skrypt, w którym możesz zakodować swój potok. Jenkins utrzymuje utworzony tutaj skrypt.

    Jenkins umożliwia wybór pomiędzy dwoma stylami kodowania lub składniami – składnią deklaratywną i składnią skryptową. Chociaż deklaratywna jest łatwa w użyciu i idealna dla prostych potoków, składnia skryptowa jest przeznaczona dla zaawansowanych użytkowników i projektowania złożonych przepływów.

    Używając składni deklaratywnej, utwórz 3 proste etapy – zbuduj kod, przetestuj kod i wdróż kod, używając następującego fragmentu kodu:

    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...'
                }
            }
        }
    }

    Możesz także użyć składni skryptowej, jak pokazano poniżej:

    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...'
        }
    }

    Kliknij Zapisz. Teraz kliknij przycisk Buduj teraz znajdujący się w lewym panelu. Spowoduje to uruchomienie właśnie utworzonego potoku.

    Po zakończeniu potoku możesz to sprawdzić w Historii kompilacji. Jeśli jest to Twoje pierwsze uruchomienie, kliknij obecny numer kompilacji nr 1. Następnie kliknij Wyjście konsoli obecne w lewym panelu. Na każdym etapie znajdziesz 3 instrukcje echo, które masz w kodzie potoku.

    Utwórz potok jako kod, używając pliku zewnętrznego

    Utrzymanie rurociągu bezpośrednio w Jenkins staje się wyzwaniem, gdy zaczyna się to komplikować. W takim przypadku chciałbyś utworzyć plik zewnętrzny i użyć go.

    Zanim utworzysz potok Jenkins, potrzebujesz zewnętrznego repozytorium i systemu kontroli wersji. Stwórzmy repozytorium Git i hostujmy je zdalnie w GitHubie. Utworzysz plik Jenkinsfile i zapiszesz go tutaj.

  • Idź do swojego GitHub profil. Możesz założyć bezpłatne konto, jeśli go nie posiadasz.
  • Utwórz nowe repozytorium. Nazwij to niestandardoweJenkins.
  • Upewnij się, że na komputerze lokalnym masz zainstalowany Git.
  • Utwórz katalog w wybranej lokalizacji.
  • Przejdź do katalogu i otwórz terminal.
  • Zainicjuj puste repozytorium Git za pomocą polecenia git init.
  • Teraz utwórz nowy plik, który będzie Twoim Jenkinsfile. Nazwijmy to niestandardowym plikiem Jenkinsa.
  • Zapisz swój potok jako kod w tym pliku. Jako przykład użyj tego wymienionego poniżej:
  • 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...'
                }
            }
        }
    }
  • Dodaj nowo utworzony plik do Git za pomocą polecenia git add –all w swoim terminalu.
  • Zatwierdź plik w Git za pomocą polecenia git commit -m „Utworzono niestandardowy plik jenkinsfile”.
  • Połącz swoje lokalne repozytorium Git ze zdalnym repozytorium za pomocą git Remote Add Origin [email protected]:/customJenkins.git.
  • Następnie prześlij plik do zdalnego serwisu (GitHub) za pomocą polecenia git push –set-upstream Origin Master.
  • Utworzyłeś teraz zdalne repozytorium w GitHub, które zawiera niestandardowy plik Jenkinsfile. Skonfigurujmy Jenkinsa, aby z tego korzystał.

    Skonfiguruj Jenkinsa do korzystania z Jenkinsfile z GitHub

  • Otwórz pulpit nawigacyjny Jenkins.
  • Utwórz nowy potok lub kliknij opcję Konfiguruj w lewym panelu z istniejącego potoku.
  • Przewiń w dół do sekcji Potok.
  • Z listy rozwijanej Definicja wybierz opcję Skrypt potoku z SCM.
  • Wybierz Git w opcji SCM.
  • Podaj link do repozytorium GitHub w adresie URL repozytorium w obszarze Repozytoria.
  • Upewnij się, że specyfikator gałęzi jest ustawiony na */master w obszarze Branches to build.
  • Przewiń w dół do opcji Ścieżka skryptu. W tym miejscu podaj nazwę pliku Jenkins jako plik niestandardowyJenkinsfile. Kliknij Zapisz.
  • Następnie uruchom potok. Jenkins najpierw pobierze Twój kod ze zdalnego repozytorium. Następnie utworzy potok przy użyciu niestandardowego pliku Jenkinsfile i uruchomi wszystkie etapy.

    Udało Ci się teraz pomyślnie utworzyć własny potok tworzenia oprogramowania, używając Pipeline jako kodu. Ponadto w skrypcie potoku włączono kontrolę wersji. Wszelkie zmiany wprowadzone w kodzie potoku można teraz śledzić przy każdym zatwierdzeniu Git. Następnie przyszedł czas na przyjrzenie się najlepszym praktykom.

    Najlepsze praktyki dotyczące pisania skutecznego potoku w postaci kodu

    Przyjrzyjmy się najlepszym praktykom, których należy przestrzegać podczas pisania potoku jako kodu.

    • Utrzymuj rurociąg w czystości i unikaj pisania zbyt wielu skomplikowanych warunków.
    • Jeśli wykonujesz zbyt wiele poleceń w potoku, podziel je na różne kroki.
    • Używaj plików zewnętrznych z kontrolą wersji dla swojego potoku jako skryptów kodu.
    • Wykorzystaj funkcje języka kodowania, takie jak Groovy, aby zintegrować różne kroki.
    • Unikaj wywołań Jenkins.getInstance lub jego metod dostępu, aby złagodzić problemy z bezpieczeństwem i wydajnością.
    • Nie nadpisuj wbudowanych poleceń potoku, takich jak sh i timeout.
    • Twórz zewnętrzne narzędzia lub skrypty do złożonych zadań intensywnie obciążających procesor i podłączaj je do swojego potoku.
    • Wykorzystaj szeroką gamę istniejących wtyczek dostępnych dla Jenkins, aby rozwiązać swój przypadek użycia.
    • Upewnij się, że uwzględniłeś obsługę wyjątków i błędów, ponieważ coś może pójść nie tak.
    • Nie twórz potoku jako kodu ściśle powiązanego z dużą ilością logiki biznesowej w nim zawartej.
    • Jeśli to możliwe, używaj sparametryzowanych argumentów, aby umożliwić ponowne użycie potoku.

    Rurociąg jako kod: proste podejście do złożonych procesów

    Podsumowując, Pipeline as Code upraszcza automatyzację potoku CI/CD, przedstawiając cały proces jako kod. Podczas gdy potoki CI/CD automatyzują budowanie, testowanie i wdrażanie zmian w kodzie, wykorzystanie Pipeline as Code idzie o krok dalej. Pozwala zdefiniować przepływ pracy w tekście, zamiast polegać na interfejsach graficznych.

    Dzięki Pipeline as Code masz pewność, że każdy etap przepływu pracy przebiega we właściwej kolejności. Zmniejszasz ryzyko napotkania niepożądanych problemów. Dodatkowo zyskujesz kilka korzyści, w tym spójność, powtarzalność i promowanie współpracy.

    Korzystając z tego przewodnika, wiesz już, jak tworzyć własne potoki przy użyciu Jenkins, powszechnie używanego narzędzia CI/CD. Jenkins oferuje potężną i elastyczną platformę do wdrażania Pipeline jako kodu za pośrednictwem Jenkinsfile. Postępuj zgodnie z najlepszymi praktykami i twórz przepływy pracy uwzględniające wszystkie przypadki użycia potoku.

    Jeśli chcesz dowiedzieć się więcej o Jenkinsie, możesz sprawdzić, jak stworzyć własny potok Jenkinsa.