Verfügbare Pullanforderungsstatusprüfungen

Azure DevOps Services

Statusüberprüfungen erzwingen Qualitätsstandards, indem Zusammenführungen blockiert werden, bis Tests bestanden, Sicherheitsüberprüfungen gelöscht oder andere Bedingungen erfüllt sind. Azure DevOps Dienste und externe Tools nach Statusüberprüfungen mithilfe der PR-Status-API.

Um eine Statusüberprüfung als Verzweigungsrichtlinie zu erfordern, erstellen Sie eine Richtlinie im Abschnitt "Status", und geben Sie das Genre und den Namen der Prüfung im Format genre/namean. Die Pullanforderung blockiert dann zusammen, bis die Überprüfungsberichte angezeigt succeededwerden.

Statuswerte und Zusammenführungsverhalten

Wenn eine Statusüberprüfung ein Ergebnis an eine Pullanforderung sendet, meldet sie einen der folgenden Werte:

Wert Verhalten mit erforderlicher Richtlinie Verhalten mit optionaler Richtlinie
succeeded • Entsperrt die Richtlinie Informationsmaterial
failed ✗ Zusammenführen von Blöcken Informationsmaterial
error ✗ Zusammenführen von Blöcken Informationsmaterial
pending ⏳ Zusammenführen von Blöcken (wartendes Ergebnis) Informationsmaterial
notApplicable – Umgehung der Richtlinienanforderung Informationsmaterial
notSet ⏳ Behandelt als ausstehend Informationsmaterial

Note

Wenn eine erforderliche Richtlinie standardmäßig auf "Übernehmen" festgelegt ist, können Sie die notApplicable Richtlinienanforderung für eine bestimmte PR entfernen, ohne die Richtlinienkonfiguration zu ändern. Dies ist nützlich, wenn eine Überprüfung nicht auf eine bestimmte Änderung anwendbar ist.

Allgemeine Anweisungen zum Hinzufügen einer Statusüberprüfungsrichtlinie finden Sie unter Konfigurieren einer Verzweigungsrichtlinie für einen externen Dienst. Erweiterte Richtlinienoptionen, einschließlich autorisierter Identitätseinschränkungen und Richtlinien anwendbarkeitseinstellungen, finden Sie unter Anpassen und Erweitern von Pullanforderungsworkflows mit Pullanforderungsstatus.

Statusüberprüfungen von Erstanbietern Azure DevOps

Nachfolgend sind die einzigen Statusüberprüfungen aufgeführt, die nativ von Azure DevOps Services gepostet werden. Jede Prüfung verwendet einen festen Genrewert , sodass Sie die Verzweigungsrichtlinie vor oder nach dem Posten des ersten Status konfigurieren können. Alle anderen Statusprüfungen stammen von externen Diensten über die PR-Status-API.

GitHub Advanced Security für Azure DevOps

Bei diesen Statusüberprüfungen muss GitHub Advanced Security für Azure DevOps im Repository aktiviert werden. Die Überprüfungen bewerten Sicherheitsrisiken, die über Codeüberprüfung (CodeQL), Abhängigkeitsüberprüfung und geheime Überprüfung erkannt wurden.

Genre Name Zu überprüfenden Status Description
AdvancedSecurity AllHighAndCritical AdvancedSecurity/AllHighAndCritical Blöcke werden zusammengeführt, wenn alle nicht aufgelösten kritischen oder schwerwiegenden Sicherheitsrisiken im Repository von jedem Scantyp (Code, Abhängigkeit oder geheimer Schlüssel) vorhanden sind. Erfordert eine Buildüberprüfungsrichtlinie mit aktivierten Pipelineaufgaben für erweiterte Sicherheit.
AdvancedSecurity NewHighAndCritical AdvancedSecurity/NewHighAndCritical Blöcke werden zusammengeführt, wenn die Pullanforderung neue kritische oder schwere Sicherheitsanfälligkeiten von jedem Scantyp aus einführt. Vorhandene Repository-Sicherheitsrisiken blockieren die Zusammenführung nicht. Erfordert eine Buildüberprüfungsrichtlinie mit Advanced Security-Pipelineaufgaben zum Scannen der PR-Verzweigung.

Note

Beide AdvancedSecurity Statusprüfungen erfordern eine Buildüberprüfungsrichtlinie und erweiterte Sicherheitsüberprüfungsaufgaben, die konfiguriert Wait for Processing: true sind, um sicherzustellen, dass Status die neuesten Scanergebnisse widerspiegeln. Aktivieren Sie für die Überprüfung von Abhängigkeiten oder Code (CodeQL) Wait for Processing für die AdvancedSecurity-Publish Aufgabe. Aktivieren Sie sie für die Codeüberprüfung auch für die AdvancedSecurity-CodeQL-Analyze Aufgabe. Beide Überprüfungen werden im Status angezeigt, um die Dropdownliste nach der ersten erfolgreichen Pipelineausführung mit Advanced Security-Überprüfung zu überprüfen.

Tip

Wenn Ihr Repository über nicht aufgelöste Warnungen verfügt, beginnen Sie damit AdvancedSecurity/NewHighAndCritical , alle Pull-Anforderungen sofort zu blockieren. Migrieren Sie zu AdvancedSecurity/AllHighAndCritical dem, nachdem der Warnungsbacklog aufgelöst wurde.

Anweisungen zur Einrichtung finden Sie unter Einrichten von Pullanforderungsstatusüberprüfungen.

Important

Lassen Sie die erweiterten Optionen bei der Konfiguration der Statusüberprüfungsrichtlinie standardmäßig bei. Das Ändern der autorisierten Identität oder das Erfordern einer Iterations-ID verhindert, dass Statusprüfungen ordnungsgemäß veröffentlicht werden.

Azure Pipelines Codeabdeckung

Azure Pipelines sendet automatisch eine Codeabdeckungsstatusüberprüfung, wenn eine Pipeline Codeabdeckungsergebnisse für eine Pullanforderung veröffentlicht. Das Genre ist der Pipelinename, daher hängt der genaue genre/name Wert davon ab, wie Sie Ihre Pipeline benannt haben.

Genre Name Zu überprüfenden Status Description
{pipeline-name} codecoverage {pipeline-name}/codecoverage Meldet den Diff-Abdeckungsprozentsatz für Zeilen, die in der Pullanforderung geändert wurden. Empfehlung standardmäßig; blockiert Zusammenführungen nur, wenn sie als erforderliche Verzweigungsrichtlinie mit einem Mindestabdeckungsschwellenwert konfiguriert sind.

Der Standarddurchlaufschwellenwert ist 70% Diff-Abdeckung. Um den Schwellenwert und andere Einstellungen anzupassen, fügen Sie dem Stammverzeichnis Ihres Repositorys eine azurepipelines-coverage.yml Datei hinzu:

coverage:
  status:
    comments: on
    diff:
      target: 80

Ersetzen Sie sie 80 durch den gewünschten Prozentsatz der Diff-Abdeckung.

Anweisungen zum Einrichten finden Sie unter Erzwingen des Branch-Schutzes mit einer Codeabdeckungsrichtlinie.

Tip

Das Genre wird aus dem Anzeigenamen Ihrer Pipeline in Azure Pipelines abgeleitet; es handelt sich nicht um einen separat konfigurierbaren Wert. Beispielsweise wird eine Pipeline namens CI - Main als Status zum Überprüfen des Werts verwendetCI - Main/codecoverage. Statusprüfungen werden nur in der Dropdownliste angezeigt, nachdem der Dienst mindestens einen Status in einer Pullanforderung gepostet hat. Geben Sie für neue Integrationen, die noch nicht ausgeführt werden, den genre/name Wert direkt in das Feld ein.

Benutzerdefinierte und externe Statusprüfungen

Jeder Dienst, der die PR-Status-API verwendet, kann eine Statusüberprüfung an Ihre Pull-Anforderungen senden. Um eine Statusüberprüfung über die REST-API zu veröffentlichen, benötigt die aufrufende Identität die Berechtigung "Mitwirken", um die Berechtigung für Pullanforderungen für das Repository abzurufen.

Wenn ein Dienst einen Status veröffentlicht, wird er genre/name im Status angezeigt , um die Dropdownliste zu überprüfen , wenn Sie eine Richtlinie hinzufügen. Geben Sie für neue Dienste, die noch nicht gepostet wurden, den genre/name Wert direkt ein.

Allgemeine Integrationsmuster

Integrationstyp Description Examples
Erstellen und Testen von Servern Externe CI-Tools, die nach bestandenen oder fehlgeschlagenen Ergebnissen nach dem Ausführen von Tests mit der PR-Verzweigung bestehen. Jenkins, GitLab CI, CircleCI, Travis CI
Analyse der Codequalität Statische Analysetools, die Code auf Fehler, Sicherheitsrisiken und Codegeruch überprüfen. SonarQube, SonarCloud
Sicherheitsscanner Nicht-Microsoft Sicherheitsrisikoscanner, die Ergebnisse nach der Überprüfung von PR-Änderungen posten. Unterstützt auch SARIF-Formatergebnisse. Snyk, Checkmarx, WhiteSource (Mend), Microsoft Security DevOps
Compliance und Richtlinie Richtlinienerzwingungstools, die Lizenzierung, Codestandards, behördliche Anforderungen oder Bereitstellungsbereitschaft überprüfen. Benutzerdefinierte Complianceprüfer, Bereitstellungsgates, Lizenzscanner
GitHub Actions Überprüfungen von GitHub Actions Workflows werden in Azure DevOps PRs angezeigt, wenn das Repository mit GitHub verbunden ist. Weitere Informationen finden Sie unter Azure DevOps GitHub Integration für Konfigurationsdetails. Jeder GitHub Actions Workflow kann den Status posten
Genehmigungen und Tore Dienste, die eine manuelle oder automatisierte Genehmigung erfordern, bevor Zusammenführungen zulässig sind. ServiceNow, benutzerdefinierte Genehmigungsdienste über REST-API

Richtlinienkonfigurationsoptionen

Beim Hinzufügen einer Statusüberprüfungsrichtlinie können Sie Folgendes konfigurieren:

  • Richtlinienanforderung: Legen Sie die Richtlinie als erforderlich fest (Blöcke werden zusammengeführt, es sei denn, überprüfungsdurchläufe) oder optional (nur Informationen).
  • Autorisierte Identität: Einschränken, welche Konten Statuswerte bereitstellen können, die die Richtlinie erfüllen. Lassen Sie nichts, um ein beliebiges Konto zuzulassen.
  • Reset conditions: Specify whether the status resets when a new commit is pushed. Standardmäßig setzt das Pushen eines neuen Commits erforderliche Statusüberprüfungen auf ausstehende Statusüberprüfungen zurück, wodurch sie gezwungen werden, Den neuesten Code auszuwerten. Um zuzulassen, dass ein Status über Commits hinweg beibehalten wird, deaktivieren Sie den Reset-Status, wenn neue Änderungen vorhanden sind.
  • Anwendbare Richtlinie: Wählen Sie aus, ob die Richtlinie sofort angewendet wird (standardmäßig übernehmen) oder nur, nachdem der erste Status gepostet wurde (bedingt).
    • Standardmäßig übernehmen: Die Richtlinienblöcke werden zusammengeführt, bis ein succeeded Status bereitgestellt wird. Sie können posten notApplicable , um die Anforderung für eine bestimmte PR zu umgehen.
    • Bedingung: Die Richtlinie wird erst aktiv, nachdem die Überprüfung den ersten Status veröffentlicht hat.
  • Pfadfilter: Beschränken Sie die Richtlinie auf PRs, die Dateien in bestimmten Pfaden ändern (optional).

Informationen zum Implementieren einer benutzerdefinierten Statusüberprüfung finden Sie unter: