CI/CD - CO TO? PO CO? JAK?
JERZY WICKOWSKI PROGRAMUJĘ 10 LAT.NET I INNE CLEAN CODE REFAKTORING DEVOPS
CI/CD - CO TO? PO CO? JAK? AGENDA WPROWADZENIE POJĘĆ SPOSOBY KONFIGURACJI CI IMPLEMENTACJA CONTINOUS DEPLOYMENT PYTANIA
WPROWADZENIE POJĘĆ
WPROWADZENIE POJĘĆ INTEGRACJA Ręczna Build Test Automatyczna Build Scripts
BAT CAKE EXE PS1 BUILD SCRIPTS
WPROWADZENIE POJĘĆ - CONTINOUS INTEGRATION CONTINOUS INTEGRATION Jak? Commit do repo Trigger server CI Run integration Po co? Automatyczne tworzenie paczki
BINARKI OBRAZKI FILMY MUZYKA + DEPLOY SCRIPT PACZKA
PRZYGOTOWUJE KOPIUJE MIGRUJE INSTALUJE DEPLOY SCRIPT
DEPLOYMENT DELIVERY CONTINOUS
WPROWADZENIE POJĘĆ - CONTINOUS DELIVERY / DEPLOYMENT ŚRODOWISKA DEV TEST STAGING PROD PACZKA
WPROWADZENIE POJĘĆ - CONTINOUS DELIVERY / DEPLOYMENT ŚRODOWISKA A DEPLOY SCRIPTS DEV TEST STAGING PROD DEPLOY SCRIPTS A PACZKA DEPLOY SCRIPTS B
WPROWADZENIE POJĘĆ - CONTINOUS DELIVERY / DEPLOYMENT RÓŻNICA POMIĘDZY CONTINOUS DELIVERY A DEPLOYMENT DEV TEST STAGING MANUAL DELIVERY AUTOMATIC DEPLOYMENT PROD
WPROWADZENIE POJĘĆ - PODSUMOWANIE PODSUMOWANIE Continous Integration Continous Delivery Dontinous Deployment Build Scripts Deploy Scripts Package
SPOSOBY KONFIGURACJI
PROBLEM I REFAKTORING
SPOSOBY KONFIGURACJI - PROBLEM I REFAKTORING REPO CI SERVER BUILD FOO.CSPROJ FOO.CSPROJ TEST TEST.DLL TEST.DLL
SPOSOBY KONFIGURACJI - PROBLEM I REFAKTORING REPO ZMIANA! BAR.CSPROJ BUILD BAR.CSPROJ TEST UNITTEST.DLL CI SERVER ZMIANA! UNITTEST.DLL
SPOSOBY KONFIGURACJI - PROBLEM I REFAKTORING ROZWIĄZANIE REPO BAR.CSPROJ CI SERVER BEZ ZMIAN! UNITTEST.DLL RUN BUILD RUN TEST BUILD SCRIPTS
SPOSOBY KONFIGURACJI - PROBLEM I BUILD SCRIPTS Nie zmieniamy konfigracji CI Lokalne buildy Wersjonowanie Budowanie starszej wersji
PROBLEM II NOWE ŚRODOWISKO
SPOSOBY KONFIGURACJI - PROBLEM II NOWE ŚRODOWISKO PACZKA CD PLIKI RUN APP-DEV DEPLOY SCRIPT APP-DEV
SPOSOBY KONFIGURACJI - PROBLEM II NOWE ŚRODOWISKO PACZKA PLIKI ZMIANA! CD ZMIANA! DEPLOY SCRIPT APP-DEV RUN APP-DEV RUN APP-TEST DEPLOY SCRIPT APP-TEST
SPOSOBY KONFIGURACJI - PROBLEM II NOWE ŚRODOWISKO PACZKA PLIKI BEZ ZMIAN! RUN APP -DBNAME DEVDB CD DEPLOY SCRIPTS DEPLOY APP + PARAMETRY RUN APP -DBNAME TESTDB
SPOSOBY KONFIGURACJI - PROBLEM II DEPLOY SCRIPTS Nie zmieniamy kodu Lokalny deploy Wersjonowanie Budowanie starszej wersji Infrastructure as a code
PROBLEM III NOWE API
SPOSOBY KONFIGURACJI - PROBLEM III NOWE API Zmiany Kod źródłowy Build skrypty Deploy skrypty Server CI Rozwiązanie CI config as a code YAML
SPOSOBY KONFIGURACJI - PROBLEM III YAML Konfiguracja CI Ograniczamy Build scripts Deploy Scripty Wersjonowanie Budowanie starszej wersji
BUILD AS A CODE DEPLOY AS A CODE INFRASTRUCTURE AS A CODE CI CONFIG AS A CODE EVERYTHING AS CODE
SPOSOBY KONFIGURACJI - PODSUMOWANIE SRP DLA CI Build Script - wie o kodzie i wie jak budować Deploy Script - wie o paczce i wie jak deplojować CI - wie kiedy CD - wie gdzie deplojować
CONTINUOUS DEPLOYMENT
CONTINUOUS DEPLOYMENT CO TO? STAGING MANUAL DELIVERY AUTOMATIC DEPLOYMENT PROD
CONTINUOUS DEPLOYMENT ZALETY Szybkie dostarczanie Stabilne release Szybki feedback Wymusza dobre praktyki
ZMIANA SPOSOBU MYŚLENIA
KTÓRY DEPLOJOWAĆ? GIT FLOW? RELEASE BRANCH? TYLKO MASTER! BRANCZE
CONTINUOUS DEPLOYMENT - BRANCZE KOD W REPO NIE MUSI DZIAŁAĆ, ALE NIE MOŻE NIC PSUĆ! Człowiek mądry
CONTINUOUS DEPLOYMENT - BRANCZE ZMIANY BEZ PSUCIA Nowa funkcjonalność Zmiana istniejącego kodu if (false) { newcode(); } else { oldcode(); } A duży refaktoring?
CONTINUOUS DEPLOYMENT - BRANCZE REFAKTORING TO ZBIÓR MAŁYCH KROKÓW POPRAWIAJĄCYCH STRUKTURĘ KODU Martin Fowler
INTERFEJS IMPLEMENTACJA STRATEGIA IOC BRANCH PER ABSTRACTION
JSON XML CSV SWITCH CONFIG
CONTINUOUS DEPLOYMENT - FEATURE SWITCH FEATURE SWITCH - CYKL ŻYCIA DODAJ SWITCH PRACUJ USUŃ SWITCH
FEATURE SWITCH BIZNESOWY
CONTINUOUS DEPLOYMENT - FEATURE SWITCH FEATURE SWITCH DASHBOARD dev test prod feature1 V V V feature2 X V V Feature3 V V X
CONTINUOUS DEPLOYMENT - FEATURE SWITCH DODATKOWE ZALETY SWITCHY Wyłączanie bugów Optymalizacja świąteczna Deploy, a release Testy A/B
V1.0 V1.0 V1.1 V1.1 Rollback ASAP as possible V1.0 V1.2 V1.2 ROLLBACK
CONTINUOUS DEPLOYMENT BRAMKI CI - Unit testy, analiza statyczna Test - Testy integracyjne, UI testy, api test Staging - wydajność, deploy
ZERO DOWNTIME
RELEASE
RELEASE GREEN BLUE DEPLOYMENT
BŁĘDY SERWERA BŁĘDY KLIENTA WYDAJNOŚĆ ZGŁOSZENIA UŻYTKOWNIKÓW MONITORING
RELEASE CANARY DEPLOYMENT
RELEASE CANARY DEPLOYMENT
RELEASE CANARY DEPLOYMENT
RELEASE CANARY DEPLOYMENT
BACKLOG RELEASE NOTES
CI/CD - CO TO? PO CO? JAK? NIE CHODZI O TO BY ZŁAPAĆ KRÓLICZKA, ALE BY GONIĆ GO! Skaldowie
PROŚBA PROSZĘ O OPINIĘ Email: kontakt@jerzywickowski.pl Blog: jerzywickowski.pl Instagram: jerzywickowski_pl YouTube, Twitter, Facebook
DZIĘKUJĘ PYTANIA?