やること
既存 3 ワークフローに changes 判定ジョブ(dorny/paths-filter@v3)+ if: ゲートを入れ、
変更箇所に応じて重いジョブを skip する。あわせて concurrency cancel-in-progress を全件に追加。
path 対応
| ワークフロー |
走らせる変更 path |
cicd.yml(Gradle :webapi:check) |
webapi/**, *.gradle*, gradle/**, gradlew* |
code-quality.yml |
webapi/src/**/*.java, webapi/src/**/db/migration/** |
openapi-lint.yml |
api/** |
実装メモ
- 各ワークフローに軽量
changes job を追加 → 既存の重い job を needs: changes + if: でゲート
- skip された job は required check 上「成功」扱いになる(permanent pending の罠を回避)
concurrency: { group: ${{ github.workflow }}-${{ github.ref }}, cancel-in-progress: true }
受入条件
case B(人手 PR 固定)。
やること
既存 3 ワークフローに
changes判定ジョブ(dorny/paths-filter@v3)+if:ゲートを入れ、変更箇所に応じて重いジョブを skip する。あわせて
concurrencycancel-in-progress を全件に追加。path 対応
cicd.yml(Gradle:webapi:check)webapi/**,*.gradle*,gradle/**,gradlew*code-quality.ymlwebapi/src/**/*.java,webapi/src/**/db/migration/**openapi-lint.ymlapi/**実装メモ
changesjob を追加 → 既存の重い job をneeds: changes+if:でゲートconcurrency: { group: ${{ github.workflow }}-${{ github.ref }}, cancel-in-progress: true }受入条件
cicd.ymlの Gradle job が skip され、CI が数分→数十秒に短縮case B(人手 PR 固定)。