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