Automatické žádosti o code review s codeowners

1 Git, Tipy & triky

Testy, linter, build a mnoho dalšího. To vše je v CI/CD automatizováno. S code owners se dá jít ještě dále a automatizovat přiřazení vývojářů na code review. V případě velkých repozitářů je možné specifikovat code ownery jednotlivých částí. A to jak individuální vývojáře, tak celé týmy.

Automatické žádosti o code review s codeowners

Article in English can be found on dev.to/arxeiss/automated-code-review-requests-with-code-owners-2238

Code owners není žádná novinka. GitHub o ní na svém blogu informoval již v roce 2017. Jenže využití pro jednotlivce či malé týmy nemusí být tak užitečné. Proto jsem se i já s touto feature setkal až nyní. Gitlab nabízí code owners také, ale pouze v Premium nebo vyšším plánu.

Protože Gitlab podporuje code owners jen v placeném tieru, nemohl jsem code owners vyzkoušet. Podle dokumentace bude chování i konfigurace velmi podobná GitHubu.

Co jsou Code owners a proč je chci definovat?

Code owners definuje vývojáře či tým, který je za daný kód zodpovědný. V nastavení repozitáře je možné definovat pravidla pro větve a jedno pravidlo také říká, že Pull request musí být schválen code ownerem. Pokud PR obsahuje soubory více různých code ownerů, je potřeba získat Approve od všech. Zároveň při vytvoření PR jsou tito vývojáři automaticky přiřazeni jako Reviewers.

Pravidlo větve vyžadující PR Approve od Code ownera

Tým jako code owner

Code owner může být celý tým. V tomto případě je přiřazen na Code Review celý tým, ale není určen konkrétní člen, který má Code review provést. To je ale možné změnit v nastavení týmu. 

Lze vybrat člena, který nebude za tým přiřazen na Code Review. U nás to je hlavní architekt. Jako člen týmu je ale pořád Code owner. Jen nebude přiřazován na Code review.
Pokud ovšem nebude explicitně u některých souborů uveden. Pak na Code Review přiřazen bude. Ne jako člen týmu, ale jako konkrétní code owner některých souborů.

Nastavení Code review pro tým

Definování code owners

Konfigurace probíhá v souboru .github/CODEOWNERS, kde každý řádek definuje jedno pravidlo. Prvně se určí soubory či složky, podobně jako v souboru .gitignore, viz Pattern format v git dokumentaci. A následně seznam uživatelů či skupin, kdo je za dané soubory zodpovědný.

Pravidla se navzájem přepisují. Nejvyšší prioritu má tedy to poslední pravidlo, které je pro soubor splněno. Výsledný .github/CODEOWNERS soubor může vypadat třeba takto. A to včetně komentářů.

# Globální pravidlo pro všechny soubory. Výjimky jsou níže
* @mycompany/be-code-reviewers

# O pipeline se stará Octocat
.github/workflows/ @octocat

# Index a htaccess.
# Toto pravidlo přepíše výše uvedené. Proto je potřeba uvést opravdu všechny znovu.
/index.php @mycompany/be-code-reviewers @octocat
/.htaccess @mycompany/be-code-reviewers @octocat # Závislosti composer.json @arxeiss composer.lock @arxeiss /vendor/ @arxeiss # Soubory, které žádného code ownera nemají. /CHANGELOG.md /version.txt

Osobní zkušenosti s Code owners, případně další tipy můžete sdílet v komentářích.
Cover obrázek článku je přejat z GitHub Blogu.

K tomuto článku již není možné přidávat další komentáře

Komentáře

to je cool, to jsem neznal!