GitHub Actionsのpaths-ignoreスキップワークフローで必須ステータスチェックのデッドロックを解消する
Table of Contents
デッドロックの状況
ブランチ保護設定
- ステータスチェック:
unit-tests(必須)
GitHub Actionsワークフロー
ワークフロー.github/workflows/tests.ymlは、src/またはtests/が変更された場合にのみ実行される。
name: Tests
on:
pull_request:
branches: [main]
# ソースコードとテストが変更された場合にのみ実行
paths:
- "src/**"
- "tests/**"
jobs:
unit-tests:
runs-on: ubuntu-latest
steps:
# テストを実行する
...
Pull Request
src/とtests/が変更されていない場合。
結果
- ステータスチェック
unit-testsがトリガーされない。 - 必須ステータスチェック
unit-testsが成功していないため、pull requestをマージできない。 - pull requestがデッドロック状態になる。
解決策
スキップワークフローを作成する
paths-ignoreオプションを使い、スキップワークフロー.github/workflows/tests-skip.ymlを作成する。
name: Tests (skip)
on:
pull_request:
branches: [main]
# ソースコードとテスト”以外”が変更された場合に実行する
paths-ignore:
- "src/**"
- "tests/**"
jobs:
unit-tests:
runs-on: ubuntu-latest
steps:
# メッセージ出力のみ(テストは実行しない)
- run: echo "No source changes — skipping tests"
スキップワークフローを使った結果
src/とtests/が変更されていない場合、スキップワークフローがトリガーされ、ステータスチェックunit-testsが成功する。- pull requestがマージ可能となる。
- デッドロックが発生しない。