Skip to content

feat(artifact_proxy): allow Flutter 3.44+ iOS USB dependency URLs#3787

Closed
bdero wants to merge 1 commit into
mainfrom
bdero/proxy-3.44-ios-usb-arm64
Closed

feat(artifact_proxy): allow Flutter 3.44+ iOS USB dependency URLs#3787
bdero wants to merge 1 commit into
mainfrom
bdero/proxy-3.44-ios-usb-arm64

Conversation

@bdero
Copy link
Copy Markdown
Member

@bdero bdero commented May 19, 2026

Flutter 3.44 reorganized iOS USB artifact URLs from

ios-usb-dependencies/<artifact>/<hash>/<artifact>.zip

to

ios-usb-dependencies/arm64_x86_64/<artifact>/<hash>/<artifact>.zip

(see flutter/flutter#181539 and related). Upstream GCS serves both layouts indefinitely, but the proxy's allowlist only recognized the pre-3.44 shape. Without this change, every 3.44+ customer hits 404 on their first iOS or Android build during flutter precache (libimobiledevice, ios-deploy, etc.).

Reproduction before the fix:

$ curl -sI https://download.shorebird.dev/flutter_infra_release/ios-usb-dependencies/arm64_x86_64/libimobiledevice/0bf0f9e941c85d06ce4b5909d7a61b3a4f2a6a05/libimobiledevice.zip | head -1
HTTP/2 404

This adds an arm64_x86_64/ variant of each of the seven ios-usb-dependencies patterns. The pre-3.44 patterns are preserved so customers pinned to older Flutter versions keep resolving against the old layout.

Blocker for Flutter 3.44 release. Customers' first iOS/Android build on a 3.44 pin will 404 until this deploys.

Test plan

  • dart analyze lib/ clean
  • dart test (11/11 existing proxy tests still pass)
  • After deploy: curl -sI .../arm64_x86_64/libimobiledevice/<hash>/libimobiledevice.zip returns 302 to storage.googleapis.com
  • After deploy: curl -sI .../libimobiledevice/<hash>/libimobiledevice.zip (no arm64_x86_64 segment) still returns 302

Flutter 3.44 (flutter/flutter#181539 and related) reorganized iOS USB
artifact URLs from
  ios-usb-dependencies/<artifact>/<hash>/<artifact>.zip
to
  ios-usb-dependencies/arm64_x86_64/<artifact>/<hash>/<artifact>.zip

Upstream GCS serves both layouts. The proxy's allowlist only knew the
pre-3.44 shape, so any 3.44+ customer's first iOS or Android build
404s during `flutter precache` against download.shorebird.dev.

Add the 3.44+ patterns alongside the existing ones for each of the
seven iOS USB dependencies. Pre-3.44 customers keep resolving against
the old patterns unchanged.
@codecov
Copy link
Copy Markdown

codecov Bot commented May 19, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@bdero
Copy link
Copy Markdown
Member Author

bdero commented May 19, 2026

Bundling into #3758 per release-driver request — same release-prereq concern, easier to land as one CL.

@bdero bdero closed this May 19, 2026
@bdero bdero deleted the bdero/proxy-3.44-ios-usb-arm64 branch May 19, 2026 20:07
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.

1 participant