GitHub Repozitář

V jakém jazyce komunikovat?

V anglickém jazyce:

  • Kód
  • Komentáře
  • Commit zprávy

V českém jazyce:

  • README a jakákoliv jiná dokumentace
  • Issues a pull requesty

README

README projektu by mělo obsahovat: 

  • Krátký popis projektu (jednou větou)
  • Primární technická osoba (tech lead) a primární projektová (koordinátor)
  • Odkaz na Slack kanál projektu
  • Kroky pro lokální vývoj a kroky pro produkční instalaci
  • Pravidla pro přispívání

Nebojte se využit dalších Markdown souborů (např. CONTRIBUTING, INSTALLATION atd.) a v README na ně odkazovat, tak aby README si zachovalo přehlednost. 

Issues

Každé issue by mělo obsahovat dobrý popis zadání, návrh řešení v případě požádání dobrovolníkem.

Labely

Podle velikosti: small (jeden večer), medium (3 večery), large (víkend)

Zaměření: frontend a backend

Ostatní: good first issue

Vývojové větve

Hlavní master main větev by měla být zamčená pro direct push a PR by měl vyžadovat schválení jednou osobou. 

Snažit se obejít bez develop větve.

Pro zapojení dobrovolník vytváří fork a následně vlastní branch, v případě dlouhodobé spolupráce lze dobrovolníka přidat do vývojového týmu a založit branch přímo v repozitáři.

Pull Requesty

Vytvářet pull request pouze tehdy, když je opravdu připraven na review. Při vrácení k vývoji lze využít draft PR.

Pull request by měl být zaměřený pouze na jedno issue a neměnit nesouvisející část kódu. 

Continuous Integration

Snažit se mít automatické spouštění testů pro pull requesty a také dostatečné pokrytí testů pro funkcionalitu, formátování a další aspekty související s kódem. 

Vývojář by měl být schopen provést a pushnout commit s jakýmkoliv kódem a kontrola by měla být provedena až v rámci pull requestu. Repozitář by měl obsahovat nástroje pro vyřešení případných problémů, ale tyto nástroje by neměly být spouštěny automaticky. 

Příklad jak CI může vypadat (JS/TS repozitář): 

  • Na projektu jsou definovaná ESLint pravidla a Prettier pro definici formátování. Projekt obsahuje také také testy funkčnosti např. Jest. 
  • Repozitář nemá nastavenou žádný commit-hook blokující commit nebo upravující commit (např. formátování změn). 
  • ESLint je nakonfigurován tak, že nepoužívá varování, ale pouze errory. 
  • CI pak spouští prvně ESLint kontrolující i formátování a poté testy funkčnosti. 

Continuous Deployment

Každý projekt by měl mít nastavené automatické nasazování na master větev. Někdy se mohou hodit i deploy previews pro další větve/PRs. 

Česko Digital má k dispozici vlastní Vercel organizaci nebo AWS.


Jak opečovat otevřené issue v Githubu