同じ名前のチェックとステータスがあり、その名前をステータスチェック必� �とするようにした� �合、チェックとステータスはどちらも必� �になります。 詳しい情� �については、「チェック」を参照してく� さい。
ステータスチェック必� �を有効にした後、マージする前にブランチをベースブランチに対して最新にする必要がある� �合があります。 これによって、ブランチがベースブランチからの最新のコードでテストされたことが保証されます。 ブランチが古い� �合、ベースブランチをブランチにマージする必要があります。 詳しい情� �については保護されたブランチについてを参照してく� さい。
注釈: Git リベースを使用してブランチをベースブランチに対して最新にすることもできます。 詳しい情� �については、「Git リベースについて」を参照してく� さい。
必� �ステータスチェックにすべてパスするまでは、ローカルでの変更を保護されたブランチにプッシュすることはできません。 その代わりに、以下のようなエラーメッセージが返されます.
remote: error: GH006: Protected branch update failed for refs/heads/main.
remote: error: Required status check "ci-build" is failing
注釈: 最新で必� �のステータスチェックをパスしたプルリクエストは、ローカルでマージしてから保護されたブランチにプッシュできます。 これはマージコミット自体でステータスチェックを実行せずに行えます。
Conflicts between head commit and test merge commit
テストマージコミットと head コミットのステータスチェックの結果が競合する� �合があります。 テストマージコミットにステータスがある� �合、そのテストマージコミットは必ずパスする必要があります。 それ以外の� �合、ヘッドコミットのステータスは、ブランチをマージする前にパスする必要があります。 テストマージコミットに関する詳しい情� �については、「プル」を参照してく� さい。
Handling skipped but required checks
Sometimes a required status check is skipped on pull requests due to path filtering. For example, a Node.JS test will be skipped on a pull request that just fixes a typo in your README file and makes no changes to the JavaScript and TypeScript files in the scripts
directory.
If this check is required and it gets skipped, then the check's status is shown as pending, because it's required. In this situation you won't be able to merge the pull request.
サンプル
In this example you have a workflow that's required to pass.
name: ci
on:
pull_request:
paths:
- 'scripts/**'
- 'middleware/**'
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 $
uses: actions/setup-node@v2
with:
node-version: $
cache: 'npm'
- run: npm ci
- run: npm run build --if-present
- run: npm test
If someone submits a pull request that changes a markdown file in the root of the repository, then the workflow above won't run at all because of the path filtering. As a result you won't be able to merge the pull request. You would see the following status on the pull request:
You can fix this by creating a generic workflow, with the same name, that will return true in any case similar to the workflow below :
name: ci
on:
pull_request:
paths-ignore:
- 'scripts/**'
- 'middleware/**'
jobs:
build:
runs-on: ubuntu-latest
steps:
- run: 'echo "No build required" '
Now the checks will always pass whenever someone sends a pull request that doesn't change the files listed under paths
in the first workflow.
ノート:
- Make sure that the
name
key and required job name in both the workflow files are the same. For more information, see "Workflow syntax for GitHub Actions". - The example above uses GitHub Actions but this workaround is also applicable to other CI/CD providers that integrate with GitHub.