We have been experiencing build timeouts on our iOS app builds. Generally speaking containers have been extremely slow. Now they are timing out on every build. CircleCI’s Status says “OS X Builds” are “Operational”.
This is an issue with Github rate limiting the requests you’re starting with CocoaPods. There isn’t much that we can do except ask you to set a timeout of 30 minutes or higher if needed.
Do you know what has caused Github to start rate limiting these requests? We had previously not changed our CocoaPods setup so it’s a little concerning to see our Pod install step go from 5-7 minutes to 12+ minutes.
This has little to do with you and me, and neither is CircleCI a big problem. The major problem is that CocoaPods is running a centralized system (meaning all the relevant information is in one place) off of a system they do not control (Github). Their specs repo outgrew Githubs capabilities (mostly bandwidth) and is not at almost 900 mb. So every time one of our customers is querying this repo they are downloading 900 mb. We have a lot of customers who use CocoaPods and we’re still a drop on a hot stone compared to the fact that they have close to half a million users. That means that the repo is hit roughly 10 times a second. That kind traffic is no longer maintainable by Github since the CocoaPods system is rather abusing Githubs open and free platform at this point than using it.
Githubs response to that is simply rate limit the traffic. All the bits are still flowing to everyone but it flows really really slowly. This way Github doesn’t compromise it’s open platform but can assure that other Git repos are impacted by the CocoaPods repo.
As you can see now, your build times aren’t related to your setup as in “the way we use CircleCI” and rather related to the fact that you use CocoaPods. I would suggest you either start caching the specs repo like so in your circle.yml:
dependencies:
cache_directories:
- "~/.cocoapods"
this might introduce other issues though (its the best solution for moving forward with CocoaPods). Another possibility you have is switching to a different system. I personally really like Git LFS. It works natively with your current setup, since you already use Git, and does not make you change the way you work create a Xcode workspace and forces you to use that going forward.