Přeskočit na obsah

A608 — CI

Co dělá automatizace po pushi, proč volá tentýž příkaz jako vy lokálně a jak se hlídá, aby se ta dvě prostředí nerozešla.

A608Inženýrství 9 minVývojářMaintainer

Po téhle lekci

  • Popíšete, co se stane po pushi do hlavní větve.
  • Vysvětlíte, proč CI nesmí mít vlastní seznam kroků.
  • Poznáte, kdy je červené CI problém prostředí a kdy kódu.

Co běží

Po pushi do hlavní větve: instalace závislostí, nastavení generátoru, kontrola šablon a vnitřních odkazů, kanonická brána, prohlížečové testy, a při úspěchu nahrání vydaného webu k publikaci.

CI nemá vlastní seznam kroků

Automatizace volá tentýž npm run build, jaký spouštíte lokálně. Nemá vlastní výčet.

Není to elegance — je to oprava po skutečném incidentu. Když si CI drželo vlastní seznam, kroky přidané do brány se do něj nedostaly, a část výstupů tak v produkci chyběla, přestože lokálně všechno procházelo. Samostatná kontrola dnes hlídá, aby se ty dvě definice nemohly rozejít znovu.

Červené CI: prostředí, nebo kód?

Kód — chyba se reprodukuje lokálně týmž příkazem. To je většina případů a je to ta lepší varianta.

Prostředí — lokálně zeleno, v CI ne. Typicky: jiná verze nástroje, citlivost na velikost písmen v názvech souborů, časový limit úlohy, nebo externí zdroj blokující automatizovaný přístup.

Diagnostika začíná stejně: pustit lokálně přesně ten příkaz, který selhal v CI. Když projde, hledá se rozdíl prostředí, ne v kódu.

Ověř si, že to sedí

CI hlásí chybu v kroku, který u vás lokálně prošel. Co uděláte první?

Zobrazit odpověď

Pustíte lokálně přesně ten příkaz, který v CI spadl — ne celou bránu, ale ten konkrétní krok, a se stejnými parametry.

Pak jsou tři možnosti:

  1. Spadne stejně → je to chyba kódu nebo dat, ladí se lokálně.
  2. Projde → rozdíl je v prostředí. Ověřte verze nástrojů, zda nejde o soubor, který u vás existuje jen lokálně (typicky odvozený výstup mimo verzování), a zda krok nesahá na síť.
  3. Spadne jinak → nejspíš pracujete nad jiným stavem generovaných souborů. Přegenerujte a zkuste znovu.

Nejčastější příčina v tomhle repozitáři je varianta 2 s odvozeným souborem: lokálně existuje z předchozího běhu, v čerstvém klonu ne.

Kanonické znění pojmů

Lekce pojem vysvětluje. Závazná definice je tady — když se rozejdou, platí tahle stránka.