Verwenden Sie diese Prüfungen, wenn eine erforderliche Statusprüfung das Zusammenführen oder Pushen in einen geschützten Branch blockiert. Siehe Status checks.
- Eine erforderliche Statusüberprüfung muss in den letzten sieben Tagen erfolgreich im ausgewählten Repository abgeschlossen sein.
- Wenn eine Überprüfung und ein Commit-Status denselben Namen haben, müssen beide erfolgreich sein, wenn dieser Name erforderlich ist. Siehe REST-API-Endpunkte für Prüfungen.
- Wenn der Branch-Schutz erfordert, dass Ihr Branch auf dem neuesten Stand ist, mergen Sie den Basis-Branch in Ihren Branch oder rebasen Sie Ihren Branch auf den Basis-Branch. Siehe Informationen zu geschützten Branches und Informationen zu Git-Rebase.
Wenn die erforderlichen Statusprüfungen nicht erfolgreich waren, wird beim Pushen in einen geschützten Branch ein ähnlicher Fehler zurückgegeben.
remote: error: GH006: Protected branch update failed for refs/heads/main.
remote: error: Required status check "ci-build" is failing
Hinweis
Pull-Requests, die auf dem neuesten Stand sind und die erforderlichen Status-Prüfungen bestehen, können lokal zusammengeführt und an den geschützten Branch gepusht werden. Sie können dies tun, ohne Statusüberprüfungen für den Zusammenführungsvorgang selbst auszuführen.
Erforderliche Überprüfung muss für den neuesten Commit-SHA erfolgreich abgeschlossen werden
Überprüfen Sie Folgendes, wenn eine erforderliche Prüfung weiterhin eine Pullanforderung blockiert.
- Erforderliche Prüfungen müssen auf dem neuesten Commit-SHA erfolgreich sein. Prüfungen aus früheren Commits erfüllen die Anforderung nicht.
- Erfolgreiche Überprüfungsstatus sind
success,skippedundneutral. Siehe Status checks.
Konflikte zwischen dem Head-Commit und dem Test-Merge-Commit
Verwenden Sie das Kontrollkästchen für die Pull-Request-Statusprüfungen, um zu ermitteln, welcher Commit die Prüfungen bestehen muss.
| Statusüberprüfungsquelle | Was muss passieren? | Was Sie möglicherweise sehen können |
|---|---|---|
| Test-Merge-Commit hat einen Status | Der Test-Merge-Commit | Showing checks for the merge commit |
| Der Test-Merge-Commit hat keinen Status | Der neueste Commit | Prüft den neuesten HEAD-Commit |
Siehe REST-API-Endpunkte für Pullanforderungen.
Verwaltung von übersprungenen, aber erforderlichen Überprüfungen
| Ursache | Result | Beheben oder prüfen |
|---|---|---|
| Ein Workflow wird durch Pfadfilterung, Verzweigungsfilterung oder Commitnachricht übersprungen. | Zugehörige Prüfungen verbleiben im Status „Ausstehend“ und blockieren das Zusammenführen | Vermeiden Sie, dass Workflows übersprungen werden können. |
| Ein Auftrag wird durch eine Bedingung übersprungen. | Der Job meldet "Erfolg" | Siehe Steuern der Auftragsausführung mithilfe von Bedingungen. |
| Ein Auftrag hängt von einem fehlgeschlagenen Auftrag ab. | Der abhängige Auftrag wird übersprungen und kann das Zusammenführen nicht blockieren. | Verwenden Sie always() mit needs für erforderliche Prüfungen, die von anderen Jobs abhängen. Siehe Verwenden von Aufträgen in einem Workflow. |
Example
Dieser Workflow erfordert einen erfolgreichen build Job, wird jedoch nur ausgeführt, wenn ein Pull Request Dateien in scripts ändert.
name: ci
on:
pull_request:
paths:
- 'scripts/**'
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [12.x, 14.x, 16.x]
steps:
- uses: actions/checkout@v6
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- run: npm ci
- run: npm run build --if-present
- run: npm test
Eine Pullanforderung, die nur eine Datei im Repositorystamm ändert, löst diesen Workflow nicht aus. Wenn build erforderlich ist, wird der Pull Request mit „Warten auf Statusmeldung.“ blockiert.
Statusprüfungen mit GitHub Actions und Merge-Warteschlange
Wenn eine Merge-Warteschlange eine GitHub Actions Prüfung erfordert, lösen Sie den Workflow mit dem Ereignis merge_group aus.
Hinweis
Wenn Ihr Repository GitHub Actions verwendet, um erforderliche Prüfungen für Pull Requests in Ihrem Repository benötigen, müssen Sie die Workflows aktualisieren, um das merge_group Ereignis als zusätzlichen Auslöser einzubeziehen. Andernfalls werden Statusüberprüfungen nicht ausgelöst, wenn du einer Mergewarteschlange einen Pull Request hinzufügst. Der Merge ist nicht erfolgreich, da die erforderliche Statusüberprüfung nicht gemeldet wird. Das merge_group-Ereignis ist von den Ereignissen pull_request und push getrennt.
Beispiel für die Triggerkonfiguration:
on:
pull_request:
merge_group:
Siehe Ereignisse zum Auslösen von Workflows.
Erforderliche Statusüberprüfungen aus unerwarteten Quellen
Eine geschützte Verzweigung kann auch eine Statusüberprüfung eines bestimmten GitHub AppTyps erfordern. Wenn eine Meldung wie die folgende angezeigt wird, überprüfen Sie, ob die im Zusammenführungsfeld aufgeführte Überprüfung von der erwarteten App festgelegt wurde.
Required status check "build" was not set by the expected GitHub App.