Kommentar
Å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-tjänster
Statuskontroller framtvingar kvalitetsstandarder genom att blockera sammanslagningar tills testerna har godkänts, säkerhetsgenomsökningarna är klara eller andra villkor uppfylls. Azure DevOps Services och externa verktyg efter statuskontroller med hjälp av API:et för PR-status.
Om du vill kräva en statuskontroll som en grenprincip skapar du en princip i avsnittet Status för att kontrollera och anger kontrollens Genre och Namn i formatet genre/name. Pull-begäran blockerar sedan sammanslagningar tills kontrollen rapporterar succeeded.
Statusvärden och sammanslagningsbeteende
När en statuskontroll publicerar ett resultat i en pull-begäran rapporterar den något av följande värden:
| Value | Beteende med nödvändig princip | Beteende med valfri princip |
|---|---|---|
succeeded |
√ Avblockera policyn | Informational |
failed |
✗ Blocksammanslagning | Informational |
error |
✗ Blocksammanslagning | Informational |
pending |
⏳ Blocksammanslagning (väntar på resultat) | Informational |
notApplicable |
√ Kringgår principkrav | Informational |
notSet |
⏳ Behandlas som väntande | Informational |
Anmärkning
När en obligatorisk princip är inställd på Använd som standard kan du publicera notApplicable för att ta bort principkravet för en specifik PR utan att ändra principkonfigurationen. Detta är användbart när en kontroll inte gäller för en viss ändring.
Allmänna anvisningar om hur du lägger till en statuskontrollprincip finns i Konfigurera en grenprincip för en extern tjänst. Avancerade principalternativ, inklusive auktoriserade identitetsbegränsningar och inställningar för principtillämpbarhet, finns i Anpassa och utöka arbetsflöden för pull-begäranden med status för pull-begäranden.
Statuskontroller för första part Azure DevOps
Följande är de enda statuskontrollerna som har publicerats internt av Azure DevOps Services. Varje kontroll använder ett fast Genre-värde , så att du kan konfigurera grenprincipen före eller efter att tjänsten publicerar sin första status. Alla andra statuskontroller kommer från externa tjänster via API:et för PR-status.
GitHub Avancerad säkerhet för Azure DevOps
Dessa statuskontroller kräver GitHub Advanced Security för att Azure DevOps ska aktiveras på lagringsplatsen. Kontrollerna utvärderar säkerhetsrisker som identifierats i kodgenomsökning (CodeQL), beroendegenomsökning och hemlig genomsökning.
| Genre | Name | Status att kontrollera | Description |
|---|---|---|---|
AdvancedSecurity |
AllHighAndCritical |
AdvancedSecurity/AllHighAndCritical |
Blocksammanslagningar när det finns en ouppklarad säkerhetsrisk eller hög allvarlighetsgrad på lagringsplatsen från alla genomsökningstyper (kod, beroende eller hemlighet). Kräver en byggverifieringsprincip med pipelineuppgifter för Avancerad säkerhet aktiverade. |
AdvancedSecurity |
NewHighAndCritical |
AdvancedSecurity/NewHighAndCritical |
Blocksammanslagningar när pull-begäran introducerar nya kritiska eller allvarliga säkerhetsrisker från alla genomsökningstyper. Befintliga sårbarheter på lagringsplatsen blockerar inte sammanfogningen. Kräver en byggverifieringsprincip med pipelineuppgifter för avancerad säkerhet för att genomsöka PR-grenen. |
Anmärkning
Båda AdvancedSecurity statuskontrollerna kräver en byggverifieringsprincip och avancerade säkerhetsgenomsökningsuppgifter som konfigurerats med Wait for Processing: true för att säkerställa att statusen återspeglar de senaste genomsökningsresultaten. För genomsökning av beroenden eller kodgenomsökning (CodeQL) aktiverar du Wait for Processing uppgiften AdvancedSecurity-Publish . För kodgenomsökning aktiverar du den också för AdvancedSecurity-CodeQL-Analyze uppgiften. Båda kontrollerna visas i listrutan Status för att kontrollera efter den första lyckade pipelinekörningen med avancerad säkerhetsgenomsökning.
Tip
Om lagringsplatsen har befintliga olösta aviseringar börjar du med AdvancedSecurity/NewHighAndCritical för att undvika att blockera alla pull-begäranden omedelbart. Migrera till AdvancedSecurity/AllHighAndCritical när aviseringsloggen har lösts.
Installationsinstruktioner finns i Konfigurera statuskontroller för pull-begäranden.
Important
Lämna Avancerade alternativ som standard när du konfigurerar statuskontrollprincipen. Om du ändrar den auktoriserade identiteten eller kräver ett iterations-ID förhindrar du att statuskontrollerna bokförs korrekt.
Azure-pipelines kodtäckning
Azure-pipelines publicerar automatiskt en statuskontroll för kodtäckning när en pipeline publicerar kodtäckningsresultat för en pull-begäran. Genren är pipelinenamnet, så det exakta genre/name värdet beror på hur du namngav din pipeline.
| Genre | Name | Status att kontrollera | Description |
|---|---|---|---|
{pipeline-name} |
codecoverage |
{pipeline-name}/codecoverage |
Rapporterar diff-täckningsprocenten för rader som ändrats i pull-begäran. Rådgivning som standard; blockerar inte sammanslagningar om de inte har konfigurerats som en obligatorisk grenprincip med ett tröskelvärde för minsta täckning. |
Standardtröskelvärdet för passering är 70% diff-täckning. Om du vill justera tröskelvärdet och andra inställningar lägger du till en azurepipelines-coverage.yml fil i roten på lagringsplatsen:
coverage:
status:
comments: on
diff:
target: 80
Ersätt 80 med önskad minsta diff-täckningsprocent.
Installationsinstruktioner finns i Framtvinga grenskydd med en kodtäckningsprincip.
Tip
Genren härleds från pipelinens visningsnamn i Azure-pipelines. Det är inte ett separat konfigurerbart värde. En pipeline med namnet CI – Main använder CI - Main/codecoverage till exempel som status för att kontrollera värdet. Statuskontroller visas endast i listrutan efter att tjänsten har publicerat minst en status till en pull-begäran. För nya integreringar som inte har körts ännu skriver du genre/name värdet direkt i fältet.
Anpassade och externa statuskontroller
Alla tjänster som använder PR-status-API :et kan skicka en statuskontroll till dina pull-begäranden. Om du vill publicera en statuskontroll via REST-API:et behöver den anropande identiteten behörigheten Bidra för att hämta begäranden på lagringsplatsen.
När en tjänst publicerar en status visas den genre/name i listrutan Status för att kontrollera när du lägger till en princip. För nya tjänster som inte har bokförts ännu skriver du värdet genre/name direkt.
Vanliga integrationsmönster
| Integrationstyp | Description | Examples |
|---|---|---|
| Skapa och testa servrar | Externa CI-verktyg som publicerar pass- eller fail-resultat efter att ha kört tester mot PR-grenen. | Jenkins, GitLab CI, CircleCI, Travis CI |
| Kodkvalitetsanalys | Statiska analysverktyg som söker igenom kod efter buggar, sårbarheter och kodlukt. | SonarQube, SonarCloud |
| Säkerhetsskannrar | Icke-Microsoft sårbarhetsskannrar som publicerar resultat efter genomsökning av PR-ändringar. Stöder även SARIF-formatresultat. | Snyk, Checkmarx, WhiteSource (Mend), Microsoft Security DevOps |
| Efterlevnad och princip | Verktyg för principframtvingande som verifierar licensiering, kodstandarder, regelkrav eller distributionsberedskap. | Anpassade efterlevnadskontroller, distributionsportar, licensskannrar |
| GitHub Actions | Kontroller från GitHub Actions arbetsflöden visas i Azure DevOps pr när lagringsplatsen är ansluten till GitHub. Se Azure DevOps GitHub integrering för konfigurationsinformation. | Alla GitHub Actions arbetsflöden kan publicera status |
| Godkännanden och grindar | Tjänster som kräver manuellt eller automatiserat godkännande innan sammanslagningar tillåts. | ServiceNow, anpassade godkännandetjänster via REST API |
Konfigurationsalternativ för principer
När du lägger till en statuskontrollprincip kan du konfigurera:
- Principkrav: Ställ in principen efter behov (blockerar sammanslagningar om inte kontrollen godkänns) eller valfritt (endast information).
- Auktoriserad identitet: Begränsa vilka konton som kan publicera statusvärden som uppfyller principen. Lämna tomt för att tillåta alla konton.
- Återställningsvillkor: Ange om statusen återställs när en ny incheckning skickas. Som standard återställer push-överföring av en ny incheckning nödvändiga statuskontroller till väntande, vilket tvingar dem att utvärdera din senaste kod. Om du vill tillåta att en status bevaras mellan incheckningar inaktiverar du Återställningsstatus när nya ändringar görs.
-
Princip tillämplighet: Välj om principen ska tillämpas omedelbart (Tillämpa som standard) eller först efter att den första statusen har publicerats (villkorsstyrd).
-
Använd som standard: Principblocken sammanfogas tills en
succeededstatus har bokförts. Du kan publiceranotApplicableför att kringgå kravet på en specifik PR. - Villkorsstyrd: Principen blir bara aktiv efter att kontrollen har bokfört sin första status.
-
Använd som standard: Principblocken sammanfogas tills en
- Sökvägsfilter: Begränsa principen till PR:ar som ändrar filer i specifika sökvägar (valfritt).
Information om hur du implementerar en anpassad statuskontroll finns i:
- Anpassa och utöka arbetsflöden för pull-begäranden med status för pull-begäran
- Skapa en statusserver för pull-begäran med Node.js
- Använd Azure Functions för att skapa anpassade grenprinciper