Skip to main content

Fehlerbehebung von erforderlichen Statuschecks

Du kannst nach häufig auftretenden Fehlern suchen und Probleme mit erforderlichen Statusüberprüfungen beheben.

geschützte Zweige sind in öffentlichen Repositorys mit GitHub Free und GitHub Free für Organisationen und in öffentlichen und privaten Repositorys mit GitHub Pro, GitHub Team, GitHub Enterprise Cloud, und GitHub Enterprise Server. Weitere Informationen findest du unter GitHub-Produkte.

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 Überprü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 Informationen zu geschützten 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 Test-Merge-Commits findest du unter Pulls.

Branch mit widersprüchlichen Merge-Commits

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@v3
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v3
      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. Der folgende Status wird für den Pull Request angezeigt:

Erforderliche Überprüfung übersprungen, aber Status ist „Ausstehend“

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/**'
      - 'middleware/**'
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.

Überprüfungen übersprungen, jedoch aufgrund des generischen Workflows übergeben

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.