Skip to content
Latchkey

CocoaPods "CDN: trunk Repo update failed" in CI

CocoaPods could not reach the CDN that serves its spec index. The request timed out or returned a 5xx - a transient network failure on the CocoaPods CDN, not a problem with your Podfile.

What this error means

pod install prints "CDN: trunk Repo update failed" with a timeout or HTTP 5xx, often mid-fetch of the spec index. Re-running the job usually succeeds with no change - the hallmark of a transient network issue.

pod output
[!] CDN: trunk Repo update failed - 10 error(s):
CDN: trunk URL couldn't be downloaded:
https://cdn.cocoapods.org/all_pods_versions_a_b_c.txt
Response: Timeout was reached

Diagnose it: SDK, signing, or simulator?

Mobile CI failures cluster into three: a missing or mismatched SDK component, a code-signing identity that does not exist on the runner, or a simulator or emulator that never became ready.

Terminal
# Android
sdkmanager --list_installed 2>/dev/null | head
echo "ANDROID_HOME=$ANDROID_HOME"
adb devices

# iOS
xcodebuild -version && xcrun simctl list devices available | head
security find-identity -v -p codesigning

Common causes

Transient CDN outage or slowness

The CocoaPods CDN briefly timed out or returned a 5xx. These blips clear on their own and are unrelated to your dependencies.

Restrictive network or low timeout on the runner

A proxy, DNS hiccup, or a short default timeout can make a slow-but-working CDN look failed on a congested runner.

How to fix it

Retry the install

Because this is transient, a simple retry usually clears it.

Terminal
for i in 1 2 3; do pod install && break || sleep 15; done

Pre-fetch / cache the spec repo

Cache CocoaPods state between runs so a flaky CDN matters less, and refresh once up front.

.github/workflows/ci.yml
- uses: actions/cache@v4
  with:
    path: ~/.cocoapods
    key: pods-${{ hashFiles('Podfile.lock') }}
- run: pod install --repo-update

How to prevent it

  • Cache ~/.cocoapods keyed on Podfile.lock.
  • Wrap pod install in a small retry loop for CDN flake.
  • Commit Podfile.lock so resolution is deterministic and cacheable.

Frequently asked questions

What causes CocoaPods "CDN: trunk repo update failed" in CI?
There are 2 common causes: transient cdn outage or slowness and restrictive network or low timeout on the runner. The CocoaPods CDN briefly timed out or returned a 5xx.
How do I fix CocoaPods "CDN: trunk repo update failed" in CI?
There are 2 fixes depending on which cause you have: retry the install and pre-fetch / cache the spec repo. Work through them in order, since the first is the most common.
What does CocoaPods "CDN: trunk repo update failed" in CI actually mean?
pod install prints "CDN: trunk Repo update failed" with a timeout or HTTP 5xx, often mid-fetch of the spec index.
How do I stop CocoaPods "CDN: trunk repo update failed" in CI happening again?
Cache ~/.cocoapods keyed on Podfile.lock. The prevention section lists 3 changes that keep it from recurring.
Can Latchkey fix this automatically?
Yes. Latchkey runs your GitHub Actions on managed runners that detect this failure, apply the fix, and retry the job automatically - self-healing is on by default.

Related guides

References

This is a transient network failure, not a bug in your code. Latchkey detects, repairs, and retries it for you. Start free → 30-day trial · No credit card