CI/CD
Také známo jako Continuous Integration, Continuous Delivery, Průběžná integrace
Stručně
Pipeline, která otestuje každý commit a drží main nasaditelné — malé změny místo jednoho velkého riskantního nasazení.
Průběžná integrace znamená, že každý push projde testy a buildem a do mainu se sloučí do minut. Průběžné dodávání znamená, že main je vždy ve stavu, který můžete vydat, a ve vyspělé verzi je vydání tlačítko nebo automatický krok. Smysl není automatizace sama sobě, ale to, že rozbitý main zablokuje celý tým a hned se opravuje.
Červený main je přestávka, ne detail
Když main padne, každá otevřená větev stojí na rozbitém základu a každý merge je sázka do loterie. Pravidlo, které dělá z CI něco funkčního, je sociální: kdo vidí červený main, opraví ho nebo revertuje, než udělá cokoli dalšího. Když čeká zákazník, revert je levnější než oprava vpřed.
Snažte se o pipeline pod 10 minut. Když build trvá 45 minut, lidé přestanou čekat, pushnou další tři commity a v review vidí hromadu místo změny. Oddělte unit testy od pomalých integračních a pomalé pouštějte na merge queue.
Dodávání není jen zelený build
Skutečná pipeline také postaví artefakt jednou a stejný image povyšuje přes prostředí, spouští migrace databáze jako součást deploye a má rollback na jeden příkaz. Nasadit změnu, která se nedá vzít zpět do dvou minut, se bude dít méně často a s větším strachem.
U produktu velikosti portfolia může CI/CD být soubor GitHub Actions o třiceti řádcích: instalace, lint, typecheck, testy, build. To není přeinženýrství — je to rozdíl mezi nasazováním v neděli ráno a nasazováním ve chvíli, kdy to oprava potřebuje.
Zdroje
Související pojmy
Docker
Aplikace se svými přesnými závislostmi v jednom image, takže stejná věc běží na notebooku i v produkci.
Observability
Logy, metriky, tracey a sledování chyb dohromady — dost na to, abyste bez hádání zjistili, proč byl požadavek pomalý.
Incident
Produkce je pro uživatele rozbitá: jeden člověk vede, ostatní opravují a celá časová osa se zapisuje.