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:
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ść.
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.
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.
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.