同じ名前のチェックとステータスがあり、その名前をステータスチェック必須とするようにした場合、チェックとステータスはどちらも必須になります。 詳しくは、「チェック」を参照してください。
注: 必須にするには、ステータス チェックが過去 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
で始まる行で示されます。 テスト マージ コミットの詳細については、「Pulls」を参照してください。
スキップされた必須チェックの処理
警告: パス フィルター、ブランチ フィルター、またはコミット メッセージのためにワークフローがスキップされた場合、そのワークフローに関連付けられているチェックは "保留中" 状態のままになります。 これらのチェックを成功させる必要がある 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@v3
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.