Skip to main content

必須ステータスチェックのトラブルシューティング

ステータスチェック必須を使用して、一般的なエラーを調べ、問題を解決できます。

この機能を使用できるユーザーについて

保護されたブランチは、パブリック・リポジトリでは GitHub Free および GitHub Free(組織用)、パブリックおよびプライベート・リポジトリでは GitHub Pro、GitHub Team、GitHub Enterprise Cloud および GitHub Enterprise Server で使用できます。 詳しくは、「GitHub のプラン」をご覧ください。

同じ名前のチェックとステータスがあり、その名前をステータスチェック必須とするようにした場合、チェックとステータスはどちらも必須になります。 詳しくは、「チェック用 REST API エンドポイント」を参照してください。

注: 必須にするには、ステータス チェックが過去 7 日間に選択したリポジトリ内で正常に完了している必要があります。

ステータスチェック必須を有効にした後、マージする前にブランチをベースブランチに対して最新にする必要がある場合があります。 これによって、ブランチがベースブランチからの最新のコードでテストされたことが保証されます。 ブランチが古い場合、ベースブランチをブランチにマージする必要があります。 詳しくは、「保護されたブランチについて」を参照してください。

注: Git リベースを使用してブランチをベース ブランチと同じ最新状態にすることもできます。 詳しくは、「Git リベースについて」を参照してください。

必須ステータスチェックにすべてパスするまでは、ローカルでの変更を保護されたブランチにプッシュすることはできません。 その代わりに、以下のようなエラー メッセージが返されます。

remote: error: GH006: Protected branch update failed for refs/heads/main.
remote: error: Required status check "ci-build" is failing

注: 必須状態チェックに合格した最新の pull request は、ローカルでマージされた後で、保護されたブランチにプッシュできます。 これはマージコミット自体でステータスチェックを実行せずに行えます。

head コミットとテスト マージ コミットの間の競合

テストマージコミットと head コミットのステータスチェックの結果が競合する場合があります。 テストマージコミットにステータスがある場合、そのテストマージコミットは必ずパスする必要があります。 それ以外の場合、ヘッドコミットのステータスは、ブランチをマージする前にパスする必要があります。

テスト マージ コミットとヘッド コミットの間に競合がある場合は、テスト マージ コミットのチェックが pull request ステータス チェック ボックスに表示されます。 これは、pull request 状態ボックスに Showing checks for the merge commit で始まる行で示されます。 テスト マージ コミットの詳細については、「Pull request 用 REST API エンドポイント」を参照してください。

スキップされた必須チェックの処理

警告: パス フィルターブランチ フィルター、またはコミット メッセージのためにワークフローがスキップされた場合、そのワークフローに関連付けられているチェックは "保留中" 状態のままになります。 これらのチェックを成功させる必要がある pull request は、マージが禁止されます。

マージ前にパスするためにワークフローが必要な場合は、パスまたはブランチ フィルターを使用してワークフローの実行をスキップしないでください。 詳細については、「ワークフロー実行をスキップする」および「ルールセットで使用できるルール」を参照してください。

ただし、ワークフロー内のジョブが条件付きのためにスキップされた場合、状態は "成功" として報告されます。 詳しくは、「条件を使用してジョブの実行を制御する」を参照してください。

次の例で示すのは、build ジョブの完了状態が "成功" であることが必要なワークフローです。ただし、pull request が scripts ディレクトリのどのファイルも変更しないと、このワークフローはスキップされます。

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@v4
    - 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

パスのフィルター処理のために、リポジトリのルートのファイルのみを変更する pull request は、このワークフローをトリガーせず、マージがブロックされます。 pull request には、"状態の報告を待機しています" と表示されます。

マージ前にパスするためにワークフローが必要な場合は、パスまたはブランチ フィルターを使用してワークフローの実行をスキップしないでください。 詳細については、「ワークフロー実行をスキップする」および「ルールセットで使用できるルール」を参照してください。

予期しないソースからの必要な状態チェック

保護されたブランチで、特定の GitHub App の状態チェックを必須にすることもできます。 次のようなメッセージが表示された場合は、マージ ボックスに一覧表示されているチェックが、想定されるアプリによって設定されたことを確認する必要があります。

Required status check "build" was not set by the expected GitHub App.