Stay up to date with the latest iOS CI/CD news

Every two weeks, directly to your inbox and packed with everything you need to know and be aware of so that you're always prepared for the next app release!

Read and trusted by engineers from:

Issue 9

Sponsored

Put your mobile releases on autopilot.

No more cat-herding, spreadsheets, or steady drip of manual busywork. Runway helps your team level up your release coordination and automation, from kickoff to release to rollout.

Before we get started, I wanted to say thanks for the awesome support everyone has been showing for the iOS CI Newsletter. I’m over the moon to say that we’re now over 500 subscribers! 🎉🚀

In other news, this coming week we’re starting a two-week sprint at work to help us tackle tech debt and improve the state of our codebase. As part of this effort, I will be looking at replacing some 3rd party Cocoapods dependencies with their Swift Package Manager equivalents.

We also want to investigate if it’s possible to commit the Swift Package Manager dependencies to source control just like we do with Cocoapods dependencies at the moment, which is going to be interesting. I will be reporting my findings both in my blog and in the next issue of the newsletter, wish me luck! 🤞

Using App Store Connect API to trigger Xcode Cloud workflows

Did you know that the App Store Connect API has a set of endpoints to handle Xcode Cloud related tasks? In this article I show you how you can, with the help of the appstoreconnect-swift-sdk Swift package, get a list of Xcode Cloud products and their workflows, which you can then trigger! 🎉

This can come in incredibly useful to extend Xcode Cloud’s built in functionalities by building custom triggers and dashboards.

GitHub merge queues are now on public beta

GitHub have announced that the pull request merge feature is now available in public beta 🎉  If you’re not familiar with how merge queues work, they are a way of automating merges by creating temporary branches containing the latest changes from both the target branch and any other PRs waiting in the queue. Any CI/CD checks are then run against the new temporary branch and only if they succeed, the branch will be merged into main.

You can learn more about how to enable and use this feature in GitHub’s documentation.

Beautifying your CI’s test results

This week I’m sharing another great article by Alexey on how to make the output of your CI’s XCTest commands easier to read and parse.

We have been using xcpretty for quite some time at work and I have to say it makes it a lot easier to find failures in otherwise hard-to-read logs ✨.

Tips for creating good pull requests

I really enjoyed reading this article by Danijela where she shares 5 tips on how to create good pull requests. It made me think of another tip that I always keep in mind when I have to open a pull request:

Make sure the CI passes before you share the pull request with your teammates so that you don’t have to push fixes again and ask for a re-review ✅.

How big open-source projects handle CI/CD

Earlier this year, Rudrank wrote an article with a list of popular Open-Source iOS codebases. Since all their code is public, these projects provide an amazing learning resource on how apps with big codebases handle certain challenges.

If you’re interested in learning more about how big projects handle CI/CD, you can find some examples in the repositories listed in the article.