Potok CI/CD: ucz się na przykładzie

Co to jest potok CI/CD?

Potok CI/CD automatyzuje proces dostarczania oprogramowania. Tworzy kod, uruchamia testy i pomaga bezpiecznie wdrożyć nową wersję oprogramowania. Potok CI/CD redukuje błędy ręczne, zapewnia informacje zwrotne programistom i umożliwia szybkie iteracje produktu.

Potok CI/CD wprowadza automatyzację i ciągłe monitorowanie przez cały cykl życia oprogramowania. Obejmuje etap od integracji i testowania po dostawę i wdrożenie. Te połączone praktyki nazywane są potokiem CI/CD.

Co to jest ciągła integracja, ciągłe dostarczanie i ciągłe wdrażanie?

  • Ciągła integracja to metoda tworzenia oprogramowania, w której członkowie zespołu przynajmniej raz dziennie mogą integrować swoją pracę. W tej metodzie każda integracja jest sprawdzana przez automatyczną kompilację w celu wyszukania błędu.
  • Ciągła dostawa to metoda inżynierii oprogramowania, w której zespół opracowuje oprogramowanie w krótkim cyklu. Zapewnia to możliwość łatwego wydania oprogramowania w dowolnym momencie.
  • Ciągłe wdrażanie to proces inżynierii oprogramowania, w którym funkcjonalności produktu są dostarczane w drodze automatycznego wdrożenia. Pomaga testerom zweryfikować, czy zmiany w bazie kodu są prawidłowe i stabilne, czy nie.

Etapy rurociągu CI/CD

Potok CI/CD to możliwa do uruchomienia specyfikacja kroków, które każdy programista powinien wykonać, aby dostarczyć nową wersję dowolnego oprogramowania. Niepowodzenie na każdym etapie powoduje wysłanie powiadomienia e-mailem, Slacklub inne platformy komunikacyjne. Umożliwia odpowiedzialnym programistom zapoznanie się z ważnymi kwestiami.

Oto ważne etapy rurociągu CI/CD:

Etapy rurociągu CI/CD
Etapy rurociągu CI/CD

Etap źródłowy

Na etapie źródłowym potok CI/CD jest uruchamiany przez repozytorium kodu. Każda zmiana w programie powoduje powiadomienie narzędzia CI/CD, które uruchamia równoważny potok. Inne typowe wyzwalacze obejmują przepływy pracy inicjowane przez użytkownika, zautomatyzowane harmonogramy i wyniki innych potoków.

Etap budowy

Jest to drugi etap potoku CI/CD, w którym scalasz kod źródłowy i jego zależności. Odbywa się to głównie w celu zbudowania działającej instancji oprogramowania, które można potencjalnie dostarczyć użytkownikowi końcowemu.

Programy napisane w językach takich jak C++, JavaNależy skompilować języki , C lub Go. Z drugiej strony, JAVASCRIPT, Python, a programy Ruby mogą działać bez etapu kompilacji.

Niezaliczenie etapu kompilacji oznacza, że ​​doszło do zasadniczej błędnej konfiguracji projektu, dlatego lepiej jest natychmiast zająć się takim problemem.

Etap testowy

Etap Testów obejmuje wykonanie automatycznych testów sprawdzających poprawność kodu i zachowanie oprogramowania. Ten etap zapobiega przedostawaniu się łatwo powtarzalnych błędów do klientów. Za pisanie testów automatycznych odpowiadają programiści.

Wdróż etap

To ostatni etap, w którym Twój produkt zostaje uruchomiony. Gdy kompilacja pomyślnie przejdzie przez wszystkie wymagane scenariusze testowe, jest gotowa do wdrożenia na działającym serwerze.

Przykład rurociągu CI/CD

Oto przykład potoku CI/CD:

  • Kontrola kodu źródłowego: Hostuj kod w GitHubie jako prywatne repozytorium. Pomoże Ci to zintegrować aplikację z głównymi usługami i oprogramowaniem.
  • Ciągła integracja: Korzystaj z platformy ciągłej integracji i dostarczania CircleCI i zatwierdź każdy kod. Gdy zmiany zostaną zgłoszone, to narzędzie wyciągnie kod dostępny w GitHub i przetworzy go, aby zbudować i uruchomić test.
  • Wdróż kod w UAT: Konfigurowanie CircleCI aby wdrożyć swój kod na serwerze AWS UAT.
  • Wdróż w środowisku produkcyjnym: Aby wdrożyć kod w UAT, należy ponownie wykorzystać kroki ciągłej integracji.

Najlepsze praktyki dotyczące rurociągów CI/CD

Oto najlepsze praktyki dotyczące potoku CI/CD:

  • Zapisz bieżący proces rozwoju, dzięki czemu poznasz procedury wymagające zmian i takie, które można łatwo zautomatyzować.
  • Zacznij od małego dowodu projektu, zanim przejdziesz dalej i zakończ cały proces programowania na raz.
  • Skonfiguruj potok z więcej niż jednym etapem, w którym najpierw uruchamiane są szybkie testy podstawowe.
  • Rozpocznij każdy przepływ pracy z tego samego, czystego i odizolowanego środowiska.
  • Uruchamiaj narzędzia open source, które obejmują wszystko, od stylu kodu po skanowanie bezpieczeństwa.
  • Skonfiguruj lepsze centrum kodu, aby stale sprawdzać jakość kodu, uruchamiając standardowy zestaw testów w każdej gałęzi.
  • Przegląd kodu równorzędnego dla każdego żądania ściągnięcia w celu wspólnego rozwiązania problemu.
  • Zanim rozpoczniesz przejście na automatyzację CD, musisz zdefiniować wskaźniki sukcesu. Pomoże Ci to w konsekwentnej analizie oprogramowania, rozwijaniu postępów i udoskonalaniu tam, gdzie jest to konieczne.

Zalety rurociągów CI/CD

Oto zalety/korzyści CI/CD Pipeline:

  • Kompilacje i testowanie można łatwo przeprowadzić ręcznie.
  • Może poprawić spójność i jakość kodu.
  • Poprawia elastyczność i ma możliwość dostarczania nowych funkcjonalności.
  • Potok CI/CD może usprawnić komunikację.
  • Może zautomatyzować proces dostarczania oprogramowania.
  • Pomaga uzyskać szybsze uzyskanie opinii klientów.
  • Potok CI/CD pomaga zwiększyć widoczność produktu.
  • Umożliwia usuwanie błędów ręcznych.
  • Zmniejsza koszty i robociznę.
  • Potoki CI/CD mogą przyspieszyć cykl życia oprogramowania.
  • Ma zautomatyzowane wdrażanie rurociągów.
  • Potok CD zapewnia szybką pętlę informacji zwrotnej, począwszy od programisty do klienta.
  • Usprawnia komunikację pomiędzy pracownikami organizacji.
  • Pozwala programistom wiedzieć, jakie zmiany w kompilacji mogą zwrócić się do brokera i uniknąć ich w przyszłości.
  • Zautomatyzowane testy, wraz z kilkoma ręcznymi uruchomieniami testów, pomagają rozwiązać wszelkie mogące się pojawić problemy.

Ważne narzędzia CI/CD

Oto ważne narzędzia CI/CD:

1) Jenkinsa

Jenkins to serwer ciągłej integracji typu open source, który pomaga osiągnąć proces ciągłej integracji (i nie tylko) w sposób zautomatyzowany. Jenkins jest darmowy i w całości napisany JavaJenkins to powszechnie używana aplikacja na całym świecie, której zainstalowano około 300 tys. osób i która z dnia na dzień zyskuje coraz większą popularność.

Jenkins

Cechy:

  • Jenkin będzie budować i testować kod wiele razy w ciągu dnia.
  • Zautomatyzowany proces kompilacji i testowania, oszczędzający czas i redukujący defekty.
  • Kod jest wdrażany po każdym pomyślnym skompilowaniu i teście.
  • Cykl rozwoju jest szybki.

Połączyć: https://www.jenkins.io/download/


2) Bamboo

Bamboo to serwer ciągłej integracji kompilacji, który wykonuje – automatyczną kompilację, testowanie i wydania w jednym miejscu. Działa bezproblemowo z oprogramowaniem JIRA i Bitbucket.

Bamboo

Cechy:

  • Uruchom równoległe testy wsadowe
  • Konfigurowanie Bamboo jest całkiem proste
  • Funkcja uprawnień dla poszczególnych środowisk umożliwia programistom i kontroli jakości wdrażanie w ich środowiskach
  • Wbudowane rozgałęzienia i przepływy pracy w Git. Automatycznie łączy gałęzie.

Połączyć: https://www.atlassian.com/software/bamboo


3) OkrągCi

OkrągCi to elastyczne narzędzie CI, które działa w dowolnym środowisku, jak wieloplatformowa aplikacja mobilna, Python Serwer API lub klaster Docker. To narzędzie redukuje błędy i poprawia jakość aplikacji.

OkrągCi

Cechy:

  • Umożliwia wybranie środowiska kompilacji
  • Obsługuje wiele języków, w tym C++, JavaSkrypt, NET, PHP, Pythoni Rubin
  • Obsługa Dockera umożliwia skonfigurowanie dostosowanego środowiska.
  • Automatycznie anuluj wszystkie oczekujące w kolejce lub uruchomione kompilacje po uruchomieniu nowszej kompilacji.

Połączyć: https://circleci.com/

Dlaczego potok CI/CD ma znaczenie dla liderów IT?

  • Potok CI/CD może poprawić niezawodność.
  • Zwiększa to atrakcyjność zespołu IT w oczach programistów.
  • Potok CI/CD pomaga liderom IT w pobieraniu kodu z kontroli wersji i wykonywaniu kompilacji oprogramowania.
  • Pomaga przenieść kod do docelowego środowiska komputerowego.
  • Umożliwia liderom projektów łatwe zarządzanie zmiennymi środowiskowymi i konfigurowanie dla środowiska docelowego.
  • Menedżerowie projektów mogą publikować komponenty aplikacji push w usługach takich jak usługi internetowe, usługi baz danych, usługi API itp.
  • Udostępnianie danych dziennika i alertów o stanie dostawy.
  • Umożliwia programistom weryfikację zmian w kodzie przed ich kontynuowaniem, zmniejszając ryzyko pojawienia się defektów w produkcji.

KPI rurociągu Ci/CD

  • Czas cyklu lub wdrożenia: Czas cyklu to czas potrzebny na przejście od etapu budowy do produkcji. Średni czas cyklu życia można uzyskać, mierząc fazy procesu rozwoju. Ta metryka zapewni wgląd w wąskie gardła w procesie i ogólną szybkość rozwoju.
  • Częstotliwość rozwoju: Częstotliwość rozwoju pozwala analizować wąskie gardła, które można znaleźć podczas automatyzacji. Częstsze mniejsze wydania zmniejszają ryzyko wystąpienia defektów i naprawiają je w przypadku wykrycia. Taki wskaźnik jest ogólną miarą efektywności Twojego zespołu.
  • Zmień czas realizacji: Mierzy czas rozpoczęcia fazy rozwoju do wdrożenia. Wskaźnik ten jest wskaźnikiem całego procesu rozwoju i dobrej współpracy zespołu.
  • Zmień wskaźnik awaryjności: Koncentruje się na tym, ile razy program zakończył się sukcesem w porównaniu z liczbą niepowodzeń.
  • MTTR kontra MTTF: MTTR (Mean Time to Recovery) to czas potrzebny Twojemu zespołowi na odzyskanie sił po porażce. MTTF (średni czas do awarii) mierzy ilość czasu pomiędzy naprawami a przestojami. Wskaźniki te odzwierciedlają zdolność zespołu do reagowania i rozwiązywania problemów.

Podsumowanie

  • Potok CI/CD automatyzuje proces dostarczania oprogramowania.
  • Potok CI/CD wprowadza automatyzację i ciągłe monitorowanie przez cały cykl życia oprogramowania.
  • Integracja ciągła to metoda tworzenia oprogramowania, w której członkowie zespołu mogą integrować swoją pracę przynajmniej raz dziennie.
  • Ciągłe dostarczanie to metoda inżynierii oprogramowania, w której zespół opracowuje oprogramowanie w krótkim cyklu.
  • Ciągłe wdrażanie to proces inżynierii oprogramowania, w którym funkcjonalności produktu są dostarczane w drodze automatycznego wdrażania.
  • Istnieją cztery etapy potoku CI/CD: 1) etap źródłowy, 2) etap budowania, 3) etap testowania, 4) etap wdrażania.
  • Ważny Narzędzia CI/CD są Jenkins, Bambo i Circle CI.
  • Potok CI/CD może poprawić niezawodność.
  • Potok CI/CD zwiększa atrakcyjność zespołu IT w oczach programistów.
  • Czas cyklu to czas potrzebny na przejście od etapu budowy do produkcji.
  • Częstotliwość rozwoju pozwala analizować wąskie gardła, które można znaleźć podczas automatyzacji.
  • Czas realizacji zmiany mierzy czas rozpoczęcia fazy programowania do wdrożenia.
  • Współczynnik niepowodzeń zmian skupia się na liczbie udanych prac programistycznych w porównaniu z liczbą niepowodzeń.
  • MTTR (Mean Time to Recovery) to czas potrzebny Twojemu zespołowi na odzyskanie sił po porażce.
  • MTTF (średni czas do awarii) mierzy ilość czasu pomiędzy naprawami a przestojami.