Repository navigation
fix(ci): 監視試験の固定イメージをキャッシュしてIaCの取得制限を緩和 - #569
Merged
Merged
Conversation
lambig
commented
Oct 21, 2026
lambig
left a comment
Owner
Author
There was a problem hiding this comment.
独立レビュー(TL / PM / PO)
対象: ABService PR #569 / head 7cbd15b7effb0da2ae824617b3fde5ecfe3f22b2
判定:取得制限対策の方式・実動作は妥当。root実行時のキャッシュディレクトリ権限に小さな修正を1件要請します。 変更対象を広げる必要はありません。
TL — キャッシュの整合性と失敗契約
image-cache-lock.jsonにECRの固定index、linux/amd64 manifest、config digestを分けて記録し、復元後にDocker image ID/OS/architectureを照合する方式は、Docker archiveからRepoDigestsが失われる点を踏まえて妥当です。試験用Composeは検証済みIDへoverrideして--pull never、運用Composeのdigestは維持しています。- キャッシュ対象は
docker image saveで作るイメージarchiveのみで、テスト稼働前に保存されます。認証情報、コンテナログ、テストの合否判定をキャッシュする経路は差分にありません。 registry_throttledの判定を引き継ぎ、ECRでbounded retryを使い切った場合に限り、同一config IDへ収束するAWS公式Docker Hubの固定manifestへ補助取得します。認証失敗・image不在・timeout・startup失敗、archive破損/ID不一致は引き続き失敗扱いです。- [要修正・軽微]
cached_image()がroot権限で呼び出される一方、既存の任意の--image-cache指定先へ無条件にchmod(0o755)を適用します。 ローカル利用時にモード0700の既存ディレクトリを与えると、内容が公開イメージだけとは限らないのにディレクトリの探索・一覧権限を拡大します。シンボリックリンク先にも作用し得ます。既存ディレクトリの権限を変更しないか、専用の新規子ディレクトリを安全に作成し、rootからの書込み先についてsymlinkを拒否する等の境界を明示してください。CIの専用パスでは今回の成功を否定するものではありません。既存0700のモード維持とsymlink拒否の回帰検査があると終了条件が明確です(該当行にinlineコメント)。
PM — 実CIでの再現証拠
- CI run 39635993554は最新attemptの17ジョブがすべてsuccessで、CI gateも成功しました。IaCの初回job 119347196014でcache miss→実イメージ検証→cache保存、後続job 119352736021で別runnerのcache hit(約47 MB)→固定ID確認→実監視転送試験成功をログで直接確認しています。
- 外部レジストリ双方が利用できない初回・失効時には失敗する残余リスクが明記され、キャッシュ破損時に合格条件を緩めず失敗させる扱いも一貫しています。今回の対策をIaC以外の断続的CI不具合の解決とは扱わない判断は適切です。
- 完了と次の判断は具体的です。本件に製品リリース全体の儀式的な工数積算を追加する理由はありません。
PO — 対象範囲
- 本変更はIaCのテスト環境に限定され、本番の監視Compose、製品の機能・ユーザー操作・M21実機受け入れに影響する契約変更はありません。取得制限のためにテスト本体をskipしない点も支持します。
権限境界の1件を補正後、最終判定可能です。
lambig
commented
Oct 21, 2026
lambig
left a comment
Owner
Author
There was a problem hiding this comment.
再レビュー(TL / PM / PO)— 前回指摘1件の解消確認
対象head: 08e40013456c69fbbd74ba29a5683aca338c0d2f。前回指摘: キャッシュディレクトリの権限境界。
判定:前回指摘は解消。差分への追加修正要求はありません。 ただしレビュー時点で現headの全体CIは実行中のため、マージ判断はCI gate成功を条件とします。
TL:権限境界の修正 — 解消
- 変更前の無条件
chmod(0o755)はなくなりました。mkdir()で新規作成したディレクトリのみ0755へ設定し、既存ディレクトリにはchmodを行わないため、既存0700を維持できます。 - キャッシュディレクトリと親パスのsymlink、archiveのsymlinkを拒否する検査が入りました。保存用の一時ファイルは
NamedTemporaryFileで新規に作り、既存の.partialリンクをたどらない構成です。 - テストには既存0700、新規ディレクトリ+umask077、親を含むsymlink、archive symlink、既存
.partialリンクと書込先不変性が追加されています。前回の終了条件を直接検証する内容です。 - root実行のため、指定先と親パスが他利用者に差し替えられない信頼済みの場所であることをREADMEに明示しています。この前提の下では今回の利用経路に対して妥当です。
PM:修正範囲とCI
- 前回レビュー対象
7cbd15b7から現headまでは1コミット、変更はimage_cache.py、test_image_cache.py、READMEの3ファイルだけです。対象外への変更はありません。 - 現headのCI run 39667967131のIaC job 119458089663はsuccessです。ログでcache hit後の固定ID照合、監視ログ転送・再起動/復旧の実試験成功、テスト環境のcleanupと後続Terraform検査の成功を確認しました。
- 一方、確認時点ではBackend / E2E / Offline Player / amd64 containerなどが実行中で、CI gateは未確定です。今回のコード修正は確認済みとし、最終統合判断には現headの全件CI gate成功を照合してください。
PO:変更目的の維持
- CIで使う固定イメージのキャッシュという目的を維持し、root権限の局所的な副作用を除去できています。製品の実機受け入れの終了条件に変更はありません。
結論:指摘解消によりレビュー上のブロッカーなし。現headのCI gate成功後、マージ可能と判断します。
This was referenced Oct 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
IaCの監視ログ転送試験がPublic ECRの
Data limit exceededで止まる問題に、固定イメージのキャッシュと、制限継続時の同一公式イメージへの補助取得で対処します。#506の上限付き再試行に続くCI安定化です。変更と到達点
--pull neverで起動し、運用Composeのdigestを維持します。.partialリンクを追いません。検証と残工程
現head
08e40013456c69fbbd74ba29a5683aca338c0d2fでtransport単体検査25件成功。既存0700、親パスを含むsymlink・リンク先の不変性、一時ファイル保護を検査しました。実Dockerをrootで実行し、umask 077でも新規0755・既存0700・archive 0644を確認し、両方の保存・復元とhit時のpull未呼出しに成功しています。取得経路の先行検証では上流index → amd64 manifest → config ID、および公式ミラーの同一性を実取得で照合しています。前head
7cbd15b7effb0da2ae824617b3fde5ecfe3f22b2の初回キャッシュ保存と別runnerでの復元・IaC全工程は成功済みです。現headのIaC全工程も成功しました。残る判断は権限修正の再レビューです。CIの他ジョブは実行状況をPRのチェック欄で確認できます。
レビュー観点・残る条件
既存ディレクトリの権限維持とsymlink拒否の証拠で指摘を閉じられるかを確認してください。rootで書き込むため、指定先と親パスは他の利用者が差し替えられない専用の場所を前提としています。
初回・キャッシュ消失後に両方の取得先が利用できない場合は失敗します。製品の実機受け入れは別工程です。
2026-10-22の利用者によるIaC失敗対応の依頼と、ABServiceへの実装・検証・コミット・push・PR作成の継続承認を適用しています。
公開前確認: base
9f1e9b3ba150e1af8f4021d35cdee5a649505442、head08e40013456c69fbbd74ba29a5683aca338c0d2f。全差分と追加ファイルを確認し、実設定・アカウント固有値・運用データの追加はありません。