Skip to main content

このバージョンの GitHub Enterprise サーバーはこの日付をもって終了となりました: 2024-03-26. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの向上、新機能の向上を図るために、最新バージョンの GitHub Enterprise サーバーにアップグレードしてください。 アップグレードに関するヘルプについては、GitHub Enterprise サポートにお問い合わせください

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

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

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

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

同じ名前のチェックとステータスがあり、その名前をステータスチェック必須とするようにした場合、チェックとステータスはどちらも必須になります。 詳しくは、「チェック用 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 は、ローカルでマージされた後で、保護されたブランチにプッシュできます。 これはマージコミット自体でステータスチェックを実行せずに行えます。

必要なチェックが最新のコミット SHA に対して成功する必要があります

Pull request をマージするには、必要なすべてのチェックが最新のコミット SHA に対して成功する必要があります。 これにより、マージする前に、最新加えられた変更が検証され、必要な標準を満たしていることが保証されます。 以前のコミット SHA を使用してトリガーされたチェックは、必要なチェックの一部として使用されません。

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.