Beperkingen voor het samenvoegen van vertakkingen implementeren

Voltooid

Beperkingen voor het samenvoegen van vertakkingen in versiebeheersystemen die worden gehost door Azure DevOps en GitHub zijn essentieel voor het beheren van codekwaliteit, het faciliteren van samenwerking en het verbeteren van de stabiliteit in softwareontwikkelingsprojecten. Ze helpen organisaties bij het afdwingen van codebeoordelingen, het valideren van geslaagde voltooiing van geautomatiseerde tests en het voorkomen van geforceerde pushes naar aangewezen vertakkingen. Deze beperkingen helpen de integriteit van de codebasis te behouden, onbedoelde wijzigingen te voorkomen en ervoor te zorgen dat alleen geverifieerde en goedgekeurde wijzigingen worden samengevoegd in productiebranches.

De algemene concepten van beperkingen voor het samenvoegen van vertakkingen zijn platformneutraal. Hoewel hun implementatie enigszins verschilt tussen Azure DevOps en GitHub, zijn er ook tal van overeenkomsten, wat voor het grootste deel functiepariteit tussen hen biedt.

Azure DevOps

In Azure DevOps kunt u vertakkingsvervoegingsbeperkingen implementeren met behulp van beleidsregels op basis van vertakkingsbeveiliging.

Als u vertakkingsbeveiliging wilt implementeren, gaat u naar uw opslagplaats in de Azure DevOps-portal en selecteert u de vertakking waarop u samenvoegingsbeperkingen wilt toepassen. U kunt ook beveiliging instellen voor de huidige en toekomstige vertakkingen die overeenkomen met een opgegeven patroon. Als onderdeel van de beveiligingsconfiguratie kunt u het volgende vertakkingsbeleid toepassen:

  • Vereist een minimum aantal revisoren: zorgt ervoor dat wijzigingen niet kunnen worden samengevoegd zonder het vereiste aantal goedkeuringen.
  • Controleren op gekoppelde werkitems: moedigt traceerbaarheid aan door te controleren op gekoppelde items in pull-aanvragen
  • Controleren op oplossing van opmerkingen: controleert of alle opmerkingen zijn opgelost bij pull-aanvragen
  • Samenvoegtypen beperken: hiermee bepaalt u de vertakkingsgeschiedenis door de beschikbare typen samenvoeging te beperken wanneer pull-aanvragen zijn voltooid. Dit omvat de optie om de volgende samenvoegtypen selectief in of uit te schakelen:
    • Eenvoudige samenvoeging (niet snel vooruit): behoudt de geschiedenis precies zoals tijdens de ontwikkeling is gebeurd.
    • Rebase en fast-forward: maakt een lineaire geschiedenis door de bronvertakkingdoorvoeringen opnieuw af te spelen op het doel zonder een samenvoegdoorvoering.
    • Squash samenvoegen: Hiermee maakt u een lineaire geschiedenis door de bronvertakkingsdoorvoeringen te verkorten tot één nieuwe doorvoering op de doelvertakking.
    • Rebase met samenvoegdoorvoering: Hiermee maakt u een semi-lineaire geschiedenis door de bronvertakkingsdoorvoeringen opnieuw af te spelen op het doel en vervolgens een samenvoegdoorvoering te maken.

U kunt desgewenst de volgende beperkingen configureren:

  • Buildvalidatie: valideert code door wijzigingen in pull-aanvragen vooraf samen te voegen en te bouwen.
  • Statuscontroles: andere services vereisen dat de status is voltooid om pull-aanvragen te voltooien. Statuscontroles zijn geautomatiseerde taken die worden geactiveerd tijdens het pull-aanvraagproces om bepaalde criteria te controleren voordat de pull-aanvraag kan worden samengevoegd in de doelbranch. In Azure DevOps worden statuscontroles gekoppeld aan build-pijplijnen en release-pijplijnen.
  • Automatisch revisoren opnemen: coderevisoren aanwijzen die automatisch moeten worden opgenomen wanneer pull-aanvragen bepaalde codegebieden wijzigen.

U hebt ook de mogelijkheid om een vertakking te vergrendelen, waardoor deze alleen-lezen is.

Houd er rekening mee dat Azure DevOps twee opties biedt om beleidsvereisten voor een opslagplaats te omzeilen. Als u deze wilt implementeren, moet u de standaardbeveiligingsconfiguratie van de opslagplaats wijzigen door de machtigingen in te stellen om de volgende acties uit te voeren op Toestaan:

  • Sla beleidsregels over bij het voltooien van pull-aanvragen.
  • Beleidsregels overslaan tijdens het pushen.

Het is essentieel om ervoor te zorgen dat deze machtigingen alleen worden verleend aan aangewezen personen die inzicht hebben in de gevolgen van deze acties op de naleving van de organisatiestandaarden en gedegen beoordelingsvermogen kunnen uitoefenen met betrekking tot hun gebruik.

GitHub

In GitHub kunt u beperkingen voor het samenvoegen van vertakkingen implementeren met behulp van regels voor vertakkingsbeveiliging. Regels voor vertakkingsbeveiliging bepalen of samenwerkers pushen naar de vertakking kunnen verwijderen of forceren en vereisten kunnen instellen voor pushes naar de vertakking, zoals het doorgeven van statuscontroles of een lineaire doorvoergeschiedenis. Net als bij Azure DevOps kunt u deze toepassen op specifieke vertakkingen op basis van een overeenkomst met het naampatroon.

Als u vertakkingsbeveiligingsregels wilt implementeren, gaat u naar uw opslagplaats in de GitHub-webinterface, gaat u naar het tabblad Instellingen en selecteert u in het navigatiemenu de menuopdracht Branches. Hiermee hebt u toegang tot de configuratie van de Branch Protection-regels. Als onderdeel van de beveiligingsconfiguratie kunt u de volgende regels toepassen:

  • Een pull-aanvraag vereisen voordat ze worden samengevoegd: vereist dat inzenders pull-aanvragen indienen voor beoordeling en goedkeuring voordat ze hun wijzigingen samenvoegen.
  • Statuscontroles vereisen die moeten worden doorgegeven voordat samenvoegen wordt uitgevoerd: geeft statuscontroles aan die moeten worden doorgegeven voordat samenvoegingen worden toegestaan. Wanneer deze optie is ingeschakeld, moeten doorvoeringen eerst naar een andere vertakking worden gepusht en vervolgens rechtstreeks worden samengevoegd of gepusht naar een vertakking die overeenkomt met deze regel nadat de statuscontroles zijn geslaagd.
  • Gespreksresolutie vereisen voordat u samenvoegt: zorgt ervoor dat alle discussies en opmerkingen met betrekking tot codewijzigingen worden opgelost voordat pull-aanvragen worden samengevoegd.
  • Ondertekende doorvoeringen vereisen: mandaten die worden gepusht naar beveiligde vertakkingen, worden ondertekend met geverifieerde handtekeningen, verbeteren van de beveiliging en zorgen voor de echtheid van codebijdragen.
  • Lineaire geschiedenis vereisen: voorkomt samenvoegingen in beveiligde vertakkingen, waarbij een lineaire geschiedenis wordt afgedwongen, waardoor het eenvoudiger wordt om wijzigingen bij te houden en, indien nodig, om te draaien. Dit betekent effectief dat alle pull-aanvragen een squash-samenvoeging of een herbase-samenvoeging moeten gebruiken.
  • Vereisen dat implementaties slagen voordat ze worden samengevoegd: bepaalt dat wijzigingen die in pull-aanvragen worden voorgesteld, grondig worden getest en gevalideerd voordat ze worden geïntegreerd in de codebasis.
  • Vergrendelingsvertakking: als azure Devops-equivalent beperkt u schrijftoegang tot de vertakking, waardoor deze alleen-lezen is.
  • Sta het omzeilen van de bovenstaande instellingen niet toe: elimineert de mogelijkheid dat de andere regels worden overgeslagen door beheerders en gebruikers die de machtigingen voor vertakkingsbeveiliging overslaan hebben verleend.
  • Geforceerde pushes toestaan: gebruikers met de pushbevoegdheden toestaan om pushwijzigingen af te dwingen. Net als bij Azure DevOps is dit alleen bedoeld als noodmaatregel.
  • Verwijderingen toestaan: staat gebruikers met pushbevoegdheden toe om beveiligde vertakkingen te verwijderen. Hoewel deze flexibiliteit vertakkingsbeheer kan stroomlijnen, vormt het ook een risico op onbedoelde of schadelijke vertakkingsverwijderingen en moet deze zorgvuldig worden beheerd om gegevensverlies te voorkomen en de integriteit van de opslagplaats te behouden.