Here's a failure mode with no error message at all: your pipeline finishes, every step is green, and TestFlight just... doesn't show a new build. Nothing crashed. Nothing timed out. Nothing logged a failure. You just refresh the page and there's nothing there.
The reason is that App Store Connect's build processing happens in a completely separate, asynchronous system from whatever uploaded the binary. Your CI job's job ends the moment the upload call returns. Apple's own queue picks the binary up after that, and if it rejects it — a missing entitlement, a bad Info.plist value, whatever — that rejection happens entirely outside anything your pipeline was ever watching.
This is the one case on my list where the actual fix isn't a script change, it's an admission: you don't have visibility by default, so you have to go add it. A step that polls App Store Connect's own build-status API after upload and asserts on the result is maybe ten lines of code, and it turns "silently missing, investigate later" into "failed at 2:14pm, here's why."
I think about this every time I'm tempted to trust a tool's own exit code as the end of the story. The exit code tells you the command you ran finished. It says nothing about what happened to your output after it left your hands.
Top comments (0)