Skip to content

[cocoapods] Proxy CocoaPods CDN source metadata#3726

Open
sjchmiela wants to merge 1 commit into
mainfrom
stanley/inspect-cocoapods-proxying
Open

[cocoapods] Proxy CocoaPods CDN source metadata#3726
sjchmiela wants to merge 1 commit into
mainfrom
stanley/inspect-cocoapods-proxying

Conversation

@sjchmiela
Copy link
Copy Markdown
Contributor

@sjchmiela sjchmiela commented May 13, 2026

Summary

Adds CocoaPods podspec metadata proxying to expo-cocoapods-proxy via CocoaPods supported :source_provider plugin hook.

When EAS_BUILD_COCOAPODS_CACHE_URL is set, the plugin now registers a proxied CDN source backed by the existing trunk repo directory, then registers canonical TrunkSource as fallback. The proxied source rewrites CocoaPods CDN metadata requests to ${EAS_BUILD_COCOAPODS_CACHE_URL}/cdn.cocoapods.org/ without creating or warming a separate second CDN repo.

Why

The existing proxy behavior covered pod source downloads through Pod::Downloader::Http and Pod::Downloader::Git, but CocoaPods CDN podspec metadata is resolved through Pod::CDNSource, bypassing those downloaders. That allowed podspec metadata requests to go directly to CocoaPods/GitHub and hit rate limits.

Behavior

  • Podfiles without explicit source entries use the plugin-provided proxied source first.
  • Cache misses can reuse the already-prewarmed local trunk repo directory.
  • If the EAS CocoaPods cache source fails while resolving metadata, CocoaPods falls back to canonical trunk.
  • Existing HTTP and Git downloader proxy behavior is unchanged.

Validation

Based on turtle-v2, iOS worker images use Ruby 3.2 and CocoaPods 1.13.0, 1.14.3, 1.15.2, or 1.16.2.

  • Ruby 3.2.11 + CocoaPods 1.13.0 + ActiveSupport 6.1.7.6: 24 examples, 0 failures
  • Ruby 3.2.11 + CocoaPods 1.14.3: 24 examples, 0 failures
  • Ruby 3.2.11 + CocoaPods 1.15.2: 24 examples, 0 failures
  • Ruby 3.2.11 + CocoaPods 1.16.2: 24 examples, 0 failures
  • Ruby 3.3.9 + CocoaPods 1.13.0, 1.14.3, 1.15.2, 1.16.2: 24 examples, 0 failures for each version
  • Ruby 3.3.9 + CocoaPods 1.12.0: 24 examples, 0 failures
  • rubocop --disable-pending-cops on the modified Ruby files: no offenses
  • git diff --check: clean

@codecov
Copy link
Copy Markdown

codecov Bot commented May 13, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 56.64%. Comparing base (64874f7) to head (32715f4).
⚠️ Report is 26 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3726      +/-   ##
==========================================
+ Coverage   56.51%   56.64%   +0.14%     
==========================================
  Files         887      892       +5     
  Lines       38416    38541     +125     
  Branches     8007     8024      +17     
==========================================
+ Hits        21707    21828     +121     
- Misses      16611    16615       +4     
  Partials       98       98              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@sjchmiela sjchmiela added the no changelog PR that doesn't require a changelog entry label May 13, 2026
@sjchmiela sjchmiela force-pushed the stanley/inspect-cocoapods-proxying branch from a3207d2 to 32715f4 Compare May 13, 2026 12:13
@github-actions
Copy link
Copy Markdown

⏩ The changelog entry check has been skipped since the "no changelog" label is present.

@sjchmiela sjchmiela marked this pull request as ready for review May 13, 2026 12:26
@sjchmiela sjchmiela requested a review from szdziedzic May 13, 2026 12:26
@github-actions
Copy link
Copy Markdown

Subscribed to pull request

File Patterns Mentions
**/* @douglowder

Generated by CodeMention

@sjchmiela sjchmiela changed the title [codex] Proxy CocoaPods CDN source metadata [cocoapods] Proxy CocoaPods CDN source metadata May 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no changelog PR that doesn't require a changelog entry

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant