Wenn du eine Prüfung und einen Status mit dem gleichen Namen hast und diesen Namen als erforderlichen Statuscheck auswählst, sind sowohl die Prüfung als auch der Status erforderlich. Weitere Informationen findest du unter Prüfungen.
Nachdem du die erforderlichen Statusüberprüfungen aktiviert hast, muss dein Branch vor dem Zusammenführen mit dem Basisbranch auf dem neuesten Stand gebracht werden. Dadurch wird sichergestellt, dass dein Branch mit dem neuesten Code aus dem Basisbranch getestet wurde. Wenn dein Branch veraltet ist, musst du den Basisbranch in deinen Branch zusammenführen. Weitere Informationen findest du unter About protected branches.
Hinweis: Du kannst deinen Branch auch mit dem Basisbranch unter Verwendung von Git-Rebase auf dem neuesten Stand bringen. Weitere Informationen findest du unter Informationen zu Git-Rebase.
Du kannst lokale Änderungen erst dann an einen geschützten Branch übertragen, wenn alle erforderlichen Statuschecks bestanden sind. Ansonsten wird eine Fehlermeldung ähnlich der folgenden ausgegeben.
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 Statuschecks bestehen, können lokal gemergt und an den geschützten Branch gepusht werden. Dies kann ohne Statuschecks erfolgen, die auf dem Merge-Commit selbst ausgeführt werden.
Konflikte zwischen dem Head-Commit und dem Test-Merge-Commit
Manchmal werden sich die Ergebnisse der Statuschecks für den Test-Merge-Commit und Head-Commit widersprechen. Wenn der Test-Merge-Commit über einen Status verfügt, muss er übergeben werden. Anderenfalls muss der Status des Head-Commit bestanden sein, bevor du den Branch zusammenführen kannst. Weitere Informationen zu Testmergecommits findest du unter Pulls.
Handling übersprungenen, jedoch Überprüfung nötig
Hinweis: Wenn ein Workflow aufgrund von Pfadfilterung, Branchfilterung oder einer Commitnachricht übersprungen wird, verbleiben diesem Workflow zugeordnete Überprüfungen im Status „Ausstehend“. Ein Pull Request, bei dem diese Prüfungen erfolgreich sein müssen, wird vom Mergen ausgeschlossen.
Wenn ein Auftrag in einem Workflow aufgrund einer bedingten Bedingung übersprungen wird, meldet er seinen Status als „Erfolg“. Weitere Informationen findest du unter Überspringen von Workflowausführungen und Verwenden von Bedingungen zum Steuern der Auftragsausführung.
Beispiel
Das folgende Beispiel zeigt einen Workflow, der einen „erfolgreichen“ Abschlussstatus für den Auftrag build
erfordert, aber der Workflow wird übersprungen, wenn der Pull Request keine Dateien im Verzeichnis 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@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- run: npm ci
- run: npm run build --if-present
- run: npm test
Aufgrund der Pfadfilterung wird ein Pull Request, der nur eine Datei im Stammverzeichnis des Repositorys ändert, diesen Workflow nicht auslösen und für das Mergen blockiert. Im Pull Request wird „Warten auf zu meldenden Status“ angezeigt.
Du kannst dieses Problem beheben, indem du einen generischen Workflow mit demselben Namen erstellst, der in jedem Fall, der dem folgenden Workflow ähnelt, TRUE zurückgibt:
name: ci
on:
pull_request:
paths-ignore:
- 'scripts/**'
jobs:
build:
runs-on: ubuntu-latest
steps:
- run: 'echo "No build required"'
Jetzt werden die Überprüfungen immer übergeben, wenn jemand einen Pull Request sendet, der die im ersten Workflow aufgeführten paths
-Dateien nicht ändert.
Hinweise:
- Stelle sicher, dass der Schlüssel
name
und der erforderliche Auftragsname in beiden Workflowdateien identisch sind. Weitere Informationen findest du unter Workflowsyntax für GitHub Actions. - Im obigen Beispiel wird GitHub Actions verwendet, diese Problemumgehung gilt jedoch auch für andere CI/CD-Anbieter, die mit GitHub integriert sind.
Erforderliche Statusüberprüfungen aus unerwarteten Quellen
Es ist auch möglich, dass ein geschützter Branch eine Statusüberprüfung aus einer bestimmten GitHub App erfordert. Wenn eine Meldung wie die folgende angezeigt wird, solltest du überprüfen, ob die im Merge-Feld aufgeführte Überprüfung von der erwarteten App festgelegt wurde.
Required status check "build" was not set by the expected GitHub App.