Implementace omezení slučování větví

Dokončeno

Omezení slučování větví v systémech správy verzí hostovaných v Azure DevOps a GitHubu jsou nezbytná pro řízení kvality kódu, usnadnění spolupráce a zvýšení stability v projektech pro vývoj softwaru. Pomáhají organizacím vynucovat kontroly kódu, ověřit úspěšné dokončení automatizovaných testů a zabránit nuceným zápisům do určených větví. Tato omezení pomáhají zachovat integritu základu kódu, zabránit náhodným změnám a zajistit sloučení pouze ověřených a schválených změn do produkčních větví.

Obecné koncepty omezení slučování větví jsou nezávislé na platformě. I když se jejich implementace mírně liší mezi Azure DevOps a GitHubem, existuje také spousta podobností, které poskytují paritu funkcí mezi nimi.

Azure DevOps

Ve službě Azure DevOps můžete implementovat omezení slučování větví pomocí zásad založených na ochraně větví.

Pokud chcete implementovat ochranu větví, přejděte do úložiště na portálu Azure DevOps a vyberte větev, na kterou chcete použít omezení sloučení. Případně můžete nastavit obor ochrany na aktuální a budoucí větve, které odpovídají zadanému vzoru. V rámci konfigurace ochrany můžete použít následující zásady větve:

  • Vyžadovat minimální počet revidujících: zajistí, že změny nelze sloučit bez požadovaného počtu schválení.
  • Kontrola propojených pracovních položek: podporuje dohledatelnost kontrolou propojených položek v pull requestech.
  • Kontrola vyřešení komentářů: ověřuje, že všechny komentáře byly vyřešeny na pull requests.
  • Omezit typy slučování: řídí historii větví omezením dostupných typů slučování při dokončení pull requestů. To zahrnuje možnost selektivního povolení nebo zakázání následujících typů sloučení:
    • základní sloučení (bez rychlého přeposlání): zachovává historii přesně tak, jak se to stalo během vývoje.
    • Rebase a rychlé přesměrování: vytvoří lineární historii tím, že přehraje commity zdrojové větve do cílové větve bez commitu sloučení.
    • squash merge: Vytvoří lineární historii tím, že zkondenzuje commity zdrojové větve do jednoho nového commitu v cílové větvi.
    • Rebasování s potvrzením sloučení: Vytvoří pololineární historii tím, že přehraje commity ze zdrojové větve na cílovou a pak vytvoří potvrzení sloučení.

Volitelně můžete nakonfigurovat následující omezení:

  • ověření sestavení : ověřuje kód před sloučením a sestavením změn v pull requestech.
  • kontroly stavu : požadují, aby ostatní služby zveřejnily úspěšný stav k dokončení pull requestů. Kontroly stavu jsou automatizované úlohy, které se aktivují během procesu žádosti o přijetí změn a ověřují určitá kritéria před povolením sloučení žádosti o přijetí změn do cílové větve. V Azure DevOps jsou kontroly stavu přidružené ke kanálům buildu a kanálům verze.
  • cs-CZ: Automaticky zahrnout recenzenty: určit recenzenty kódu, které automaticky zahrnout, když pull requesty změní určité oblasti kódu.

Máte také možnost uzamknout větev, čímž ji efektivně změníte na režim pouze pro čtení.

Všimněte si, že Azure DevOps nabízí dvě možnosti, jak obejít požadavky zásad pro úložiště. Pokud je chcete implementovat, musíte změnit výchozí konfiguraci zabezpečení úložiště nastavením oprávnění k provedení následujících akcí, které chcete povolit:

  • Zásady obejití při dokončování žádostí o přijetí změn.
  • Vynechat zásady při nabízení

Je nezbytné zajistit, aby tato oprávnění byla udělena pouze určeným jednotlivcům, kteří chápou důsledky těchto akcí v souladu s organizačními standardy a mohou vykonávat řádné úsudek ohledně jejich použití.

GitHub

Na GitHubu můžete implementovat omezení slučování větví pomocí pravidel ochrany větví. Pravidla ochrany větví definují, jestli spolupracovníci mohou odstranit nebo nuceně odeslat do větve, a stanovují požadavky na jakékoli odeslání do větve, například stavové kontroly nebo lineární historii potvrzení. Stejně jako u Azure DevOps je můžete použít na konkrétní větve na základě shody vzorů názvů.

Pokud chcete implementovat pravidla ochrany větví, přejděte do úložiště ve webovém rozhraní GitHubu, na kartě Nastavení a v navigační nabídce vyberte položku nabídky Větve. To vám umožní přístup ke konfiguraci pravidel služby Branch Protection. V rámci konfigurace ochrany můžete použít následující pravidla:

  • Před sloučením vyžadovat žádost o přijetí změn: vyžaduje, aby přispěvatelé před sloučením změn odesílali žádosti o přijetí změn ke kontrole a schválení.
  • Vyžadovat, aby kontroly stavu prošly před sloučením: určí kontroly stavu, které musí proběhnout před povolením sloučení. Pokud je tato možnost povolená, musí se potvrzení nejprve odeslat do jiné větve a potom je sloučit nebo odeslat přímo do větve, která odpovídá tomuto pravidlu po uplynutí kontrol stavu.
  • Před sloučením vyžadovat řešení konverzací: zajistí, že se před sloučením žádostí o přijetí změn vyřeší všechny diskuze a komentáře související se změnami kódu.
  • Vyžadovat podepsané commity: vyžaduje, aby commity vložené do chráněných větví byly podepsány ověřenými podpisy, čímž se zvýší zabezpečení a zajistí pravost kódu.
  • Vyžadovat lineární historii: zabraňuje slučovacím commitům v chráněných větvích, vynucuje lineární historii, což usnadňuje sledování a v případě potřeby vrátit změny. To efektivně znamená, že všechny pull requesty musí používat squash merge nebo rebase merge.
  • Před sloučením vyžadovat úspěšné nasazení: určuje, že změny navržené v žádostech o přijetí změn se před integrací do základu kódu důkladně testují a ověřují.
  • Zamknout větev: jako její ekvivalent v Azure Devops omezuje přístup k zápisu do větve a činí ji pouze pro čtení.
  • Nepovolit obejití výše uvedených nastavení: eliminuje možnost obejití ostatních pravidel správci a uživateli, kterým bylo uděleno oprávnění k ochraně větví.
  • cs-CZ: Povolit vynucené odesílání: povolit uživatelům s oprávněními k odesílání vynucení změn. Stejně jako u Azure DevOps se jedná pouze o nouzové opatření.
  • Povolit odstranění: umožňuje uživatelům s oprávněními pro push smazat chráněné větve. I když tato flexibilita může zjednodušit správu větví, představuje také riziko náhodného nebo škodlivého odstranění větví a mělo by být pečlivě řízeno, aby se zabránilo ztrátě dat a zachování integrity úložiště.