Skip to content

ci(keycloak): keycloak サブプロジェクトを CI に組み込む(独立 keycloak-ci.yml、webapi 同等 check) #444

Description

@win2cot

ci(keycloak): keycloak サブプロジェクトを CI に組み込む(独立 keycloak-ci.yml、webapi 同等 check)

概要

keycloak/ サブプロジェクト(S1Infra-3 / #320、PR #443 で雛形作成)を CI でビルド・検証する。現状 cicd.ymlwebapi/** のみを対象とし、keycloak は paths-filter にも check コマンドにも含まれていないため、keycloak の Spotless / NullAway / テストが CI で一切検証されない。

PR #443 のレビュー[必須]指摘への対応(reviewer 提示の「即フォローアップ Issue 起票」案)。

背景

  • PR [Phase 1 Sprint 1 S1Infra-3] feat(keycloak): Keycloak 独立 Gradle project 雛形(SPI 用)(Closes #320) #443 review (claude-automation-review[bot]) で以下が[必須]指摘された:
    1. cicd.ymlchanges フィルタに keycloak/** が無く、keycloak 単独変更の PR は test ジョブが丸ごとスキップされる
    2. test ジョブが ./gradlew :webapi:check のみで :keycloak:check を実行しない
  • impl bot が cicd.yml 直接修正(commit be6e260)を試みたが、GitHub App の workflows 権限不足で push 拒否 → PR が needs-human-decision で停止
  • 方針として cicd.yml 拡張ではなく独立ワークフロー新設を採用(webapi の cicd / code-quality 分割と対称、paths・カバレッジ基準を独立させる)

方針

  • 新ファイル .github/workflows/keycloak-ci.yml を作成(workflow 編集のため case B = 人手 PR)
  • webapi の cicd.yml を範とし、対象を keycloak に置換した対称構成にする

やること

  • .github/workflows/keycloak-ci.yml を新規作成
    • changes ジョブ: dorny/paths-filter@v3、フィルタ keycloak/** / *.gradle* / settings.gradle* / gradle/** / gradlew / gradlew.bat / .github/workflows/keycloak-ci.yml
    • check ジョブ(if: needs.changes.outputs.* == 'true'): JDK 21 + Gradle セットアップ → ./gradlew :keycloak:check
    • package-info.java 存在チェックを keycloak パス(keycloak/src/main/java/...)に適用(code-quality.yml の同等ロジックを移植)
    • テスト結果 publish(keycloak/build/test-results/**/*.xml)+ test レポート artifact
    • sticky CI レポート(header は keycloak-ci 等、webapi 用 ci-report と分離)
    • カバレッジは JaCoCo レポートがあれば報告のみ(ゲートなし)
    • concurrency + 既存ワークフローと同じ env(LANG / TZ / FORCE_JAVASCRIPT_ACTIONS_TO_NODE24)
  • Flyway 命名チェックは keycloak に migration が無いため対象外(明示的に含めない)

受入条件

  • keycloak 単独変更の PR で keycloak-ci.ymlcheck ジョブが実行される
  • webapi 単独変更の PR では check ジョブが skip される(無駄打ちしない)
  • ./gradlew :keycloak:check が CI で実行され、Spotless / NullAway / テストが検証される
  • keycloak の package-info.java 欠落を CI が検出して fail する
  • PR にテスト結果 sticky レポートが投稿される

カバレッジ方針(本 Issue を正本とする)

  • 当面 keycloak のカバレッジは報告のみ・ゲート保留(SPI は雛形段階でカバレッジが低いため)
  • SPI 本実装 Issue(未起票)を起票する際、その受入条件に「webapi 同等の JaCoCo 80% 命令カバレッジゲートを keycloak/build.gradle.kts + keycloak-ci.yml に設定する」を必ず含めること。本 Issue がその引き継ぎの正本。

関連

備考

  • task-type: task-type:impl / priority: priority/p1 / area: area/ci + area/keycloak
  • claude-automation: 不適用(workflow 編集系は case B 人手 PR 固定)

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/ci.github/workflows / CI/CD パイプライン変更area/keycloakkeycloak/ サブプロジェクト変更priority/p1High。現スプリント内で完了必須task-type:implコード実装が主体のタスク

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions