ci(api-inventory): 台帳をブランチ対応で取得する - #1904
Conversation
台帳とベースラインはプライベートリポジトリ(RCOSDP/weko-secret)から取るが、 checkout に ref を渡していなかったため、常に既定ブランチ(main)を見ていた。 develop_v2.0.4 への PR でも main の台帳と突き合わせるので、ブランチ間の 経路差がそのまま reconcile の A/B/C/D/E として出続ける。件数が常に非ゼロに なれば誰も読まなくなる。 Resolve inventory ref ステップを足し、ls-remote で存在を確かめてから head → base → 既定 の順で同名ブランチを選ぶ。head を先に見るのは、 公開リポジトリのコード変更と台帳更新が別 PR になるため。base 同士だけで 対応させると、weko の CI が回る時点で台帳更新はまだ作業ブランチにあり、 「プライベート側を先にマージしないと公開側が通らない」直列の制約ができる。 採用したブランチ名は PR コメントの冒頭に出す。どの台帳と比べた件数かが 分からなければ、レビュアは数字を判断できない。対応ブランチが無い場合は 既定ブランチと比較したうえで警告を出す。FAIL にしないのは、対応ブランチの 無いリリースラインで全 PR が止まるのを避けるため。 ci/README.md の「PR ブランチのベースラインを比べる」は実装と食い違って いたので、対応の決め方(§3a)を書いて訂正した。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CQXqdhUzMHyxhPJbHKw6Zr
🔍 Claude によるレビュー指摘 1 件 — 🔴 高 0 / 🟠 中 0 / 🟡 低 1 / 🔎 未確認 2 件 🟡 [低] プライベートリポジトリのブランチ存在有無がPRコメント/ログでオラクル化する
HEAD_REF(PR作成者が自由に決められる自リポジトリのブランチ名)がプライベートリポジトリ(weko-secret)に存在するかどうかが、採用ブランチ名の表示(notice/PRコメント)を通じて外部から判別可能になる。pick===HEAD_REFなら存在確認、pick===BASE_REFやfallback警告なら不存在確認となり、二値オラクルとして機能する。fork PRはジョブ自体がスキップされるため悪用には対象リポジトリへのpush権限(同一リポジトリの非forkブランチ作成)が前提だが、README自体が「Actionsのログ・PRコメントは誰でも読める」ことを設計上の懸念点として明記しており、プライベートリポジトリの内部ブランチ名(例: 未公表のissue番号を含む作業ブランチ)の存在を外部に漏らす経路になる。 提案 採用ブランチ名の表示は「head/base/defaultのいずれを採用したか」という区分のみに留め、具体的なブランチ名そのもの(特にHEAD_REF由来の値)はログ/PRコメントに出さない、または既定ブランチ以外を採用した旨だけを表示する形にする。 根拠確認: .github/workflows/api-inventory-drift.yml:58-89,179-214 を読み、Resolve inventory ref のロジックとPRコメント生成コードを確認。また同ファイルのpull_request_template.md記載やREADME(tools/api-inventory/ci/README.md)の「Actionsログ・PRコメントは誰でも読める」という前提説明と突き合わせた。 🔎 未確認 — 裏が取れなかったもの 2 件
モデル sonnet / 3 回実行して和集合 / コスト $1.1213。同じ差分でも結果が揺れるため複数回まわし、一部のパスでしか挙がらなかったものには回数を添えています 差分のみを対象にした自動レビューです。誤りが含まれることがあります。 |
API インベントリ差分(件数のみ)
ベースラインとの差分API インベントリ差分レポート
判定: ✅ PASS (FAIL 0 / WARN 1)サマリ
[WARN] W6 依存パッケージの版が変化した — 40件
台帳との突き合わせスナップショット ↔ インベントリ 突き合わせ
判定: ✅ 一致 (0件)
|
概要 (Summary)
台帳・ベースラインを取りに行く
Checkout inventory data (private)にrefが無く、常にプライベートリポジトリの既定ブランチ (
main) を見ていた。develop_v2.0.4への PR でもmainの台帳と突き合わせるため、ブランチ間の経路差がそのまま reconcile の A/B/C/D/E として出続ける。件数が常に非ゼロになれば、誰も読まなくなる。
Resolve inventory refステップを追加し、git ls-remote --headsで存在を確かめてからweko 側と同名のブランチを選ぶようにした。
head を先に見るのは、公開リポジトリのコード変更と台帳更新が別 PR になるため。
base 同士だけで対応させると、weko の CI が回る時点で台帳更新はまだプライベート側の
作業ブランチにあり、「プライベート側を先にマージしないと公開側の CI が通らない」という
直列の制約ができる。head 優先なら 2 つの PR を並行してレビューでき、マージ順にも依存しない。
採用したブランチ名は PR コメントの冒頭に出す。どの台帳と比べた件数なのかが
分からなければ、レビュアは数字を判断できない。
変更タイプ (Type of Change)
🤖 0. CI 自動チェック (API Inventory Drift)
この PR 自体がこの変更の動作確認を兼ねている。
プライベートリポジトリに同名ブランチ
ci/api-inventory-branch-refをdevelop_v2.0.4と同じコミットで作ってある。したがって:Resolve inventory refが head 一致でci/api-inventory-branch-refを選び、::notice::台帳ブランチ: ...を出す。PR コメント冒頭にも同じブランチ名が出る
develop_v2.0.4と同一なので、この PR がゲートの件数を動かすことはない(動いたら、それは既存の台帳と実機のズレ)
ゲートが FAIL した場合でも、それは本変更ではなく台帳側の状態を示している。
まず PR コメント冒頭のブランチ名が意図どおりかを見てほしい。
.github/とtools/api-inventory/ci/のみ)📚 5. ドキュメント・仕様書更新チェック
tools/api-inventory/ci/README.mdに §3a「ブランチの対応」を追加pull_request_template.md§0 に、ブランチ対応の説明と「同名ブランチを切った」チェック項目を追加📋 6. 動作検証エビデンス
yaml.safe_loadOKgithub-scriptの JS:node --checkOK(head 一致 / base 一致 / どちらも無し / head 空 / 前方一致の誤マッチが無いこと)
🤖 Generated with Claude Code
https://claude.ai/code/session_01CQXqdhUzMHyxhPJbHKw6Zr