Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020
Pull-begäranden är ett bra verktyg för att underlätta kodgranskningar och hantera kodflytt på en lagringsplats. Branch-principer tillämpa kodkvalitet under pull request-processen genom att fastställa krav som måste uppfyllas för varje kodändring. Dessa principer gör det möjligt för team att tillämpa många metodtips för att granska kod och köra automatiserade versioner, men många team har ytterligare krav och valideringar att utföra på kod. För att täcka dessa enskilda och anpassade behov erbjuder Azure Repos status för pull-requests. Status för pull-begäranden integreras i PR-arbetsflödet och gör det möjligt för externa tjänster att programmatiskt signera en kodändring genom att associera enkel information av typen lyckad/misslyckad med en pull-begäran. Alternativt kan pull-begäranden blockeras tills den externa tjänsten godkänner ändringen.
Förutsättningar
| Kategori | Krav |
|---|---|
| Åtkomst till projekt | Medlem av ett -projekt. |
| behörigheter | Visa kod i privata projekt: Minst grundläggande åtkomst . – Klona eller bidra till kod i privata projekt: Medlem i Bidragsgivare säkerhetsgrupp eller projektets motsvarande behörigheter. – Ange behörigheter för gren eller lagringsplats: Hantera behörigheter behörigheter för grenen eller lagringsplatsen. – Ändra standardgren: Redigera principer behörigheter för lagringsplatsen. – Importera en lagringsplats: Medlem i Projektadministratörer säkerhetsgrupp eller Git-projektnivå Skapa lagringsplats behörighet inställd på Tillåt. Mer information finns i Ange Behörigheter för Git-lagringsplats. |
| Tjänster | Repos aktiverat. |
| Verktyg | Valfritt. Använd kommandona az repos: Azure DevOps CLI. |
Anmärkning
I offentliga projekt har användare med åtkomst på intressentnivå fullständig åtkomst till Azure Repos, inklusive att se, klona och bidra till kod.
| Kategori | Krav |
|---|---|
| Åtkomst till projekt | Medlem av ett -projekt. |
| behörigheter | – Visa kod: Minst Grundläggande åtkomst. – Klona eller bidra till kod: Medlem i Contributors säkerhetsgrupp eller motsvarande behörigheter i projektet. |
| Tjänster | Repos aktiverat. |
Integreringen i PR-arbetsflödet omfattar några olika begrepp:
- Pull-begärans status – är ett sätt för tjänster att associera information om lyckande/misslyckande med en pull-begäran.
- Statusprincip – tillhandahåller en mekanism för att blockera slutförande av pull-begäran tills statusen för pull-begäran indikerar att den har slutförts.
- Anpassade åtgärder – är ett sätt att utöka statusmenyn med hjälp av Azure DevOps Services-tillägg.
I det här avsnittet får du lära dig mer om status för pull-begäranden och hur de kan användas för att integrera i PR-arbetsflödet.
Status för pull-begäran
Status för pull-begäran är ett sätt för tjänster att associera enkel information av typen lyckad/misslyckad med en pull-begäran med hjälp av status-API:et. En status består av fyra viktiga datadelar:
- Tillstånd. Något av följande fördefinierade tillstånd:
succeeded,failed,pending,notSet,notApplicableellererror. - Beskrivning. En sträng som beskriver statusen för slutanvändaren.
- Kontext. Ett namn på statusen – som vanligtvis beskriver entiteten som publicerar statusen.
- URL. En länk där användarna kan få mer information som är specifik för statusen.
I huvudsak är status hur en användare eller tjänst publicerar sin utvärdering om en pull-begäran och ger svaret på frågor som:
- Uppfyllde ändringarna kraven?
- Var kan jag lära mig mer om vad jag behöver göra för att uppfylla kraven?
Nu ska vi titta på ett exempel. Överväg en CI-tjänst som krävs för att skapa alla kodändringar i ett projekt. När den tjänsten utvärderar ändringarna i en pull-begäran måste den publicera resultatet av bygget och testerna. För ändringar som klarar bygget kan en status som den här publiceras på pull requesten:
{
"state": "succeeded",
"description": "CI build succeeded",
"context": {
"name": "my-ci-system",
"genre": "continuous-integration"
},
"targetUrl": "http://contoso.com/CI/builds/1"
}
Den här statusen visas för slutanvändaren i vyn PR-information:
-
statevisas för användaren med hjälp av en ikon (grön kontroll försucceeded, rött X förfailed, en klocka förpendingoch en röd ! förerror). -
descriptionvisas bredvid ikonen ochcontextfinns i en knappbeskrivning. - När en
targetUrltillämpas återges beskrivningen som en länk till URL:en.
Uppdaterar status
En tjänst kan uppdatera en PR-status för en enskild PR genom att publicera ytterligare statusar, varav endast den senaste visas för varje unik context.
Genom att publicera flera statusar kan användarna hantera förväntningar.
Att till exempel publicera en pending status är ett bra sätt att bekräfta för användaren att ett system har tagit emot en händelse och börjar arbeta.
Om du använder en informativ description, till exempel följande exempel, kan du ytterligare hjälpa användaren att förstå hur systemet fungerar:
- "Skapa i kö"
- "Bygge pågår"
- "Bygget lyckades"
Iterationsstatus
När källgrenen i en PR ändras skapas en ny "iteration" för att spåra de senaste ändringarna. Tjänster som utvärderar kodändringar vill publicera ny status för varje iteration av en PR. Publiceringsstatus för en specifik iteration av en PR garanterar att status endast gäller för den kod som utvärderades och ingen av de framtida uppdateringarna.
Anmärkning
Om den PR som skapas innehåller mer än 100 000 ändrade filer, stöder den pr av prestanda- och stabilitetsskäl inte iterationer. Det innebär att eventuella ytterligare ändringar av en sådan PR inkluderas, men ingen ny iteration skapas för den ändringen. Dessutom returnerar alla försök att skapa en status för en obefintlig iteration ett fel.
Om statusen som publiceras gäller för hela PR:en, oberoende av koden, kan det vara onödigt att publicera till iterationen. Om du till exempel kontrollerar att författaren (en oföränderlig PR-egenskap) tillhör en viss grupp behöver den bara utvärderas en gång och iterationsstatusen behövs inte.
När du konfigurerar statusprincipen och iterationsstatus används, bör Återställ villkor ställas in till Återställ status när det finns nya ändringar.
Detta garanterar ytterligare att PR inte kan sammanfogas förrän den senaste iterationen har statusen succeeded.
Se REST API-exemplen för att publicera status på en iteration och på en pull request.
Statusprincip
Med enbart status kan information från en extern tjänst tillhandahållas till användare i PR-upplevelsen.
Ibland är delning av information om en pr allt som är nödvändigt, men i andra fall bör PR blockeras från att slås samman tills kraven uppfylls.
Precis som inkorgsprinciperna ger Status-principen ett sätt för externa tjänster att blockera pr-slutförande tills kraven uppfylls. Om policyn krävs måste den godkännas för att slutföra pull-begäran. Om principen är valfri är den endast informationsbaserad och statusen succeeded krävs inte för att slutföra pull-begäran.
Statusprinciper konfigureras precis som andra förgreningsprinciper. När du lägger till en ny statusprincip måste namn och genre för statusprincipen anges. Om statusen har publicerats tidigare kan du välja den från listan. om det är en ny princip kan du skriva in namnet på principen i formatet genre/namn.
När en statusprincip har angetts kräver den att statusen succeeded med context som matchar det valda namnet ska finnas för att den här principen ska kunna gå igenom.
Ett auktoriserat konto kan också väljas för att kräva att ett specifikt konto har behörighet att publicera status som godkänner principen.
Princip tillämplighet
Policy tillämpningsalternativ bestämmer om denna policy gäller så snart en pull-begäran har skapats eller om policyn gäller först efter att den första statusen har publicerats på pull-begäran.
Använd som standard – Principen gäller så snart pull-begäran har skapats. Med det här alternativet passerar inte principen efter att pull-begäran har skapats förrän en
succeeded-status har publicerats. En PR kan markeras som undantagen från principen genom att publicera statusennotApplicable, vilket tar bort principkravet.Villkorsstyrd – Principen gäller inte förrän den första statusen har publicerats i pull-begäran.
Tillsammans kan dessa alternativ användas för att skapa en uppsättning dynamiska principer.
En övergripande orkestreringspolicy kan ställas in som standard medan PR utvärderas för relevanta riktlinjer.
När ytterligare villkorsprinciper beslutas att tillämpas (kanske baserat på specifika byggutdata) kan statusen sedan publiceras för att kräva dem.
Den här orkestreringsprincipen kan markeras succeeded när den är klar med utvärderingen eller markeras notApplicable för att ange för PR att principen inte gäller.
Anpassade åtgärder
Förutom fördefinierade servicehook-händelser som kan få tjänsten att uppdatera PR-status, är det möjligt att utöka statusmenyn med hjälp av Azure DevOps Services-tillägg som ger slutanvändaren möjlighet att trigga åtgärder. Om statusen till exempel motsvarar en testkörning som kan startas om av slutanvändaren är det möjligt att ha ett Starta om menyalternativ till statusmenyn som utlöser tester som ska köras. Om du vill lägga till en statusmeny måste du använda bidragsmodellen. Mer information finns i Azure DevOps-tilläggsexempel.
Nästa steg
Läs mer om PR Status API och se guiderna: