CS ▾
Nederlands
Přihlásit seZačít zdarma
Domů › Průvodci › GitHub Actions: spolehlivé CI/CD workflow

GitHub Actions: spolehlivé CI/CD workflow

Publikováno · Aktualizováno

GitHub actions umožňuje automatizovat validaci, testy, build, packaging, plánované úlohy a deployment z událostí repozitáře. Tento průvodce vysvětluje, jak navrhnout spolehlivé CI/CD, chránit secrets, oddělit prostředí, optimalizovat běh, nasazovat otestované artifacts a řešit chyby i obnovu.

Navrhněte workflow před YAML

Před psaním YAML popište cestu od změny k otestované a nasazené verzi. Určete branches, pull request checks, instalaci, lint, type checking, testy, build, packaging, cíle deploymentu a approvals. Tato mapa odhalí závislosti dříve, než se skryjí v mnoha jobs. Rozhodněte, co běží na každém PR, co až po merge a co zůstává manuální nebo plánované.

Oddělte CI a CD konceptuálně. CI ověřuje, zda lze změnu bezpečně sloučit. CD řeší další kroky: vytvoření package, deployment, migrace, health check a promotion mezi prostředími. Díky tomu je jasné, zda selhal test nebo samotné nasazení.

Definujte vstupy a výstupy každého jobu. Build používá source a lockfile a vytváří artifact. Deployment spotřebuje tento artifact a credentials prostředí. Jasné kontrakty usnadňují cache, reuse a diagnostiku.

Vyberte vhodné triggery

Používejte eventy odpovídající reálnému procesu. pull_request je vhodný před merge, push po merge, schedule pro periodické úlohy a workflow_dispatch pro řízené ruční spuštění. Path filtry mohou šetřit čas, ale nesmí vynechat důležitý test.

Production nemá být nasazována z libovolné feature branch. Určete, které branches nebo tags mohou vytvořit release a co tag znamená. Nejasná pravidla vedou k duplicitním runům nebo nesprávné verzi.

Concurrency navrhujte společně s triggery. Nový commit může učinit starý CI run zbytečným, zatímco deployment často potřebuje jen jeden aktivní run na prostředí.

Vybudujte reprodukovatelné CI

Spolehlivé CI potřebuje reprodukovatelné prostředí. Pinujte runtime verze, instalujte z lockfile a nespoléhejte na náhodné nástroje runneru. Lokální a CI příkazy by měly být podobné, aby bylo možné chybu zopakovat.

Rychlé kontroly spouštějte dříve. Format, lint a statická analýza mohou selhat během sekund, zatímco integration testy nebo velký build trvají déle. Paralelizujte tam, kde to má měřitelný přínos.

Kritéria úspěchu musí být jasná. Zelený build, který přeskočil důležité testy, není důkaz kvality. Artifacts musí být ověřené a migrace testované před produkcí.

Chraňte secrets a prostředí

Secrets nepatří do YAML, kódu ani logů. Používejte šifrované repository, organization nebo environment secrets s minimálním scope. Production credentials nemají být dostupné každému pull-request jobu. Krátkodobá identita je často bezpečnější.

Environments oddělují staging a production pomocí vlastních proměnných, approvals a ochranných pravidel. Testovací job tak automaticky nezíská produkční oprávnění. Endpointy, regiony a project ID pojmenovávejte jednoznačně.

Logy mohou citlivá data odhalit. Debug, echo nebo externí action může vytisknout tajnou hodnotu. Kontrolujte výstup, credentials po podezření rotujte a nepoužívané secrets odstraňujte.

Optimalizujte cache, artifacts a matrix

Cache zrychluje instalaci dependencies, ale není zdrojem pravdy. Cache key musí odpovídat lockfile nebo jiným skutečným definicím. Při podivné chybě musí být snadné job spustit bez cache.

Artifacts předávají výstupy mezi jobs a uchovávají package, test report, coverage nebo screenshoty. Nastavte retention a neukládejte secrets. Deployment má používat přesně artifact, který prošel CI.

Matrix jobs testují runtime, systémy nebo konfigurace. Jsou užitečné, pokud skutečně podporujete více kombinací, ale násobí čas i náklady. Začněte hlavními podporovanými variantami.

Automatizujte deployment s kontrolou

Deployment má promotovat známý otestovaný artifact, ne vše znovu buildovat jiným způsobem. Ukládejte commit SHA, verzi, environment a čas, aby bylo možné incident spojit s konkrétní release.

Ochranu přizpůsobte riziku. Staging může být automatický, production může vyžadovat approval nebo release tag. Databázové migrace potřebují zvláštní péči, protože rollback dat je složitější než rollback kódu.

Po deploymentu spusťte smoke test nebo health check proti skutečnému prostředí. Předem určete, zda chyba znamená rollback, ruční zastavení nebo fix forward. Recovery je součást CD návrhu.

Zviditelněte příčiny chyb

Jobs a steps pojmenovávejte výstižně. Test API je jasnější než Run command. Publikujte reporty nebo annotations a u flaky chyb zaznamenejte runtime, dependencies a externí službu.

Rozlišujte chyby kódu a infrastruktury. Assertion, výpadek registry, expirované credentials, rate limit nebo runner problém vyžadují jiný postup. Retry používejte jen u skutečně dočasných chyb.

Sledujte dobu workflow, queue time, failure rate a nejpomalejší jobs. Tato data ukazují čekání a nestabilitu. U deploymentu udržujte historii a spojení s incidenty.

Pipeline průběžně udržujte

Workflow soubory udržujte čitelné. Opakovanou logiku přesuňte do reusable workflows, composite actions nebo scripts, pokud to omezuje duplicitu. Externí actions pinujte na důvěryhodné verze a aktualizace kontrolujte jako bezpečnostní dependency.

Pipeline revidujte při změně architektury. Nové služby, monorepo, environments nebo deployment targets mohou vyžadovat jiné jobs. Staré jobs a secrets odstraňte až po ověření závislostí.

Pravidelně testujte recovery. Selhání deploymentu musí být diagnostikovatelné, předchozí artifact obnovitelný, pokud je to vhodné, a credentials musí jít rotovat. Zralé github actions workflow zůstává srozumitelné, reprodukovatelné a pozorovatelné.

Kontrolujte také oprávnění workflow tokenu. Job, který nepotřebuje zapisovat releases, packages nebo obsah repozitáře, nemá tato práva dostat. Explicitní permissions omezují dopad kompromitované externí action. Pull requesty z forků vyžadují zvláštní pozornost, protože secrets jsou tam záměrně omezené.

V monorepu nemusí vždy běžet celá pipeline, pokud se změnil jen nezávislý package, ale detekce ovlivněných částí musí být opatrná. Změna lockfile, root konfigurace nebo sdíleného kódu může vyžadovat širší testy.

Ukládejte release metadata jako verzi, artifact digest, commit, environment a případně migration ID. Incident analýza je pak mnohem přesnější než podle času deploymentu.

Kontrolujte také oprávnění workflow tokenu. Job, který nepotřebuje zapisovat releases, packages nebo obsah repozitáře, nemá tato práva dostat. Explicitní permissions omezují dopad kompromitované externí action. Pull requesty z forků vyžadují zvláštní pozornost, protože secrets jsou tam záměrně omezené.

V monorepu nemusí vždy běžet celá pipeline, pokud se změnil jen nezávislý package, ale detekce ovlivněných částí musí být opatrná. Změna lockfile, root konfigurace nebo sdíleného kódu může vyžadovat širší testy.

Otázky

K čemu slouží github actions?

K automatizaci checks, testů, buildů, plánovaných úloh a deploymentu z událostí repozitáře.

Deploy production při každém push?

Obvykle ne. Používejte řízené branches, tags, environments nebo approvals.

Kam patří secrets?

Do šifrovaných secrets nebo krátkodobé identity s minimálním scope.

Co má spolehlivá pipeline zachovat?

Ověřený commit nebo artifact, jasné logy, historii deploymentu, oddělená prostředí a recovery postup.

Začít zdarma Šablony

Chcete svůj nápad uskutečnit?

Začněte hned zdarma — vaše první aplikace může být hotová za pár minut.

Začít zdarma