Git a Github
Pro vývoj používáme Git jako verzovací systém a Github jako platformu pro hostování repozitářů a spolupráci na kódu. Precujeme exkluzivně s naší organizací na Githubu. Repozitáře jsou rozděleny do jednotlivých týmů podle konkrétního projektu.
Repozitáře
Každý repozitář by respektovat základní pravidla:
Commit
Píšeme v angličtině.
Zprávy by měly být stručné, ale výstižné.
Práci radši rozdělit do více menších commitů než do jednoho velkého (commit může být klidně jen jeden řádek v jednom souboru).
Pokud je commit složitější, měl by mít i delší popis v těle zprávy.
Nevyžadujeme žádný striktní formát zpráv, ale snažte se nějaký styl mít a být konzistentní.
Super by bylo, kdyby se držela konzistentní struktura v rámci jednoho repozitáře, ale reálně si myslím, že to nebude vycházet, jelikož já mám zadefinovaný svůj formát a nechci do něj nikoho nutit.
Já celkem rád využívám Gitmoji pro lepší přehlednost commitů ve formátu:
<intention=emoji> [scope?][:?] <message>.Mám nainstalovaný plugin do IDE, díky kterému můžu hledat emoji podle klíčových slov, ale existuje i CLI tool.
Další možnost je Conventional Commits.
Příklad commit zprávy:
Push
Pushujeme jen do svých vývojových větví. (v repozitářích by mělo být nastaveno, že do hlavní větve nejde pushovat přímo)
Pushujte pravidelně, aby bylo vidět aspoň den zpětně, že se na něčem pracuje.
Větve
Hlavní větev
mainnebomaster, která odpovídá funkční, produkční verzi kódu.Několik vývojových větví, kdy každá větev odpovídá konkrétnímu úkolu na kterém se pracuje.
Pojmenování větví by mělo odpovídat názvu úkolu ve Freelu.
Větve se do hlavní větve slučují přes Pull Requesty.
Pull request by měl zkontrolovat minimálně jeden další člen týmu (většinou Tomáš Vojík, pokud není řečeno jinak).
Před sloučením musí vždy projít všechny automatické kontroly (CI/CD).
Pull Request
Každá změna musí projít přes pull request (PR), který se váže na konkrétní zadaný úkol.
Název PR by měl odpovídat názvu úkolu ve Freelu.
Popis PR by měl obsahovat stručný přehled změn, které PR přináší.
Do Assignees přidejte všechny, kteří se na PR podíleli (včetně vás).
Do Reviewers přidejte minimálně jednoho dalšího člena týmu (většinou Tomáš Vojík, nebo správce projektu, pokud není řečeno jinak).
CI/CD a Github akce
Více info: CI/CD.
Přecházíme z Github akcí na Jenkins hostovaný na našem serveru. Neznamená to, že se Github akce nesmí využívat na nějaké menší repozitáře, ale pro většinu projektů budeme využívat Jenkins.
S nastavením bude pomáhat Tomáš Vojík.
Struktura repozitáře
Každý repozitář by měl mít základní strukturu:
README.md- základní informace o projektu, jak ho nastavit, jak přispívat, atd.Jenkinsfile- pokud repozitář využívá Jenkins pro CI/CD, měl by mít tento soubor s definicí pipeline..gitignore- soubor s výčtem souborů a složek, které se nemají verzovat.
Licence projektů
package.json, composer.json a další soubory s metadaty by měly mít správně nastavenou licenci projektu. Pro všechny klientské projekty musí být lincence nastavena na proprietary (uzavřená licence). Pro open-source knihovny (public) můžeme využít i jiné licence (většinou GPL-3.0 nebo v některých případech i MIT).
Týmy a práva
Private repozitáře mají nastavený přístup podle jednotlivých týmů na Githubu. Pokud jste v týmu, máte automaticky WRITE přístup do všech repozitářů, které tým vlastní. Vyšší práva řešíme na individuální bázi.
Veřejné repozitáře
Některé repozitáře můžou být veřejné (public). Většinou se jedná o knihovny, které můžou být využity i jinde.