同じ名前のチェックとステータスがあり、その名前をステータスチェック必� �とするようにした� �合、チェックとステータスはどちらも必� �になります。 詳細については、「チェック」を参照してく� さい。
ステータスチェック必� �を有効にした後、マージする前にブランチをベースブランチに対して最新にする必要がある� �合があります。 これによって、ブランチがベースブランチからの最新のコードでテストされたことが保証されます。 ブランチが古い� �合、ベースブランチをブランチにマージする必要があります。 詳細については、「保護されたブランチについて」を参照してく� さい。
注: 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 は、マージが禁止されます。
ワークフロー内のジョブが条件付きでスキップされた� �合、状態は "成功" として� �告されます。 詳細については、「ワークフロー実行をスキップする」および「条件を使用してジョブの実行を制御する」を参照してく� さい。
例
次の例で示すのは、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@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
パスのフィルター処理のために、リポジトリのルートのファイルのみを変更する pull request は、このワークフローをトリガーせず、マージがブロックされます。 この pull request では次の状態が表示されます。
これを修正するには、同じ名前の汎用ワークフローを作成して、次のワークフローのようにどのケースでも true を返すようにします。
name: ci
on:
pull_request:
paths-ignore:
- 'scripts/**'
- 'middleware/**'
jobs:
build:
runs-on: ubuntu-latest
steps:
- run: 'echo "No build required"'
これで、誰かが送った pull request が最初のワークフローの paths
内のファイルを変更しないときも常にチェックに合� �します。
注:
- 両方のワークフロー ファイルの
name
キーと必� �ジョブ名を同じにしてく� さい。 詳細については、「GitHub Actions のワークフロー構文」を参照してく� さい。 - 上記の例では GitHub Actions が使用されていますが、この対処方法は、GitHub と統合されている他の CI/CD プロバイダーにも適用できます。