Skip to content

[review] fix: switch Ruby tag source to Registry v2 API to avoid Docker Hub 403 - #49

Merged
aki77 merged 1 commit into
mainfrom
fix-ci-error
Aug 12, 2026
Merged

[review] fix: switch Ruby tag source to Registry v2 API to avoid Docker Hub 403#49
aki77 merged 1 commit into
mainfrom
fix-ci-error

Conversation

@aki77

@aki77 aki77 commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add_ruby_versions.yml が Docker Hub の hub.docker.com/v2/repositories/.../tags/ を50ページまでページングして全タグを取得していたが、匿名リクエストの offset 上限 (1000 = 11ページ目) に達すると403で確実に失敗するようになった(run 31445931484)。--retry では回避不可能な決定的なエラー。
  • そもそも1737件全タグを50ページかけて取得する必要はなく、Docker Registry v2 API (registry.hub.docker.com/v2/library/ruby/tags/list) に切り替えることで、匿名トークンのまま全タグを1リクエストで取得できるようにした。ページング用の while ループと MAX_PAGES を丸ごと削除。
  • 取得件数が異常に少ない場合(正常時130件前後)は上流障害を「新バージョンなし」と誤認しないよう明示的にエラーにするガードを追加。PR本文の参照元URLも新エンドポイントに更新。

Test plan

  • fetch ステップのスクリプトを verbatim 実行し、exit 0 / 130件のバージョン取得(4.0.6/3.4.10/3.3.12 含む)を確認
  • 既存の差分ロジックに現行 ruby_versions.json を通し、追加なし(歴史的バージョンの誤back-fillなし)を確認
  • ruby_versions.json から 4.0.6 を一時的に削除して差分ロジックを実行し、4.0.6 のみが新規検知されることを確認(回帰テスト)
  • workflow_dispatch での手動実行による最終確認

Docker Hub の hub.docker.com/v2/repositories/.../tags/ は匿名リクエストだと
offset 1000 (11ページ目) 以降で 403 を返すようになり、50ページの while ループが
確実に失敗するようになった (--retry では回避不可能な決定的なエラーのため)。

そもそも1737件全タグを50ページかけて取得する必要はなく、Registry v2 API
(registry.hub.docker.com/v2/library/ruby/tags/list) を使えば匿名トークンで
全タグを1リクエストで取得できる。ページングを丸ごと削除し、取得件数が
異常に少ない場合は上流障害の見逃しを防ぐため明示的にエラーにする。
@aki77 aki77 changed the title fix: switch Ruby tag source to Registry v2 API to avoid Docker Hub 403 [review] fix: switch Ruby tag source to Registry v2 API to avoid Docker Hub 403 Aug 11, 2026
@aki77
aki77 merged commit bd99c77 into main Aug 12, 2026
87 checks passed
@aki77
aki77 deleted the fix-ci-error branch August 12, 2026 00:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants