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 13

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.

Hey everyone! 👋 Welcome to the thirteenth issue of the iOS CI Newsletter. I hope you’ve all had a fantastic couple of weeks!

Conference season is fastly approaching and my effort has shifted to preparing for my upcoming talks. I am very excited to travel to new places, meet new people and learn from amazing speakers and attendees.

For this reason, I thought I would start this issue by asking you a question: Which conferences will you be attending this year? Let me know by replying to this email or reaching out to me on Twitter, Linkedin or Mastodon. 😊

📦 Automating Swift command line tool releases

In this week’s article in my blog, I wrote about the GitHub Actions workflow I wrote to release my command line chatty. The article goes through how to build a Swift CLI for multiple architectures, create a GitHub release and distribute the app using Homebrew.

✂️ The impact of unoptimised images on an app’s size

This week I came across another great Twitter thread by the team over at Emerge Tools. This time they share their analysis of the Chevrolet mobile app and how unoptimised images were bloating their app binary size unnecessarily.

⏭️ Skipping DocC and Xcode Cloud CI runs

I have recently discovered that you can tell Xcode Cloud not to run for a specific commit by including [ci skip] in its title or description. When I shared this tip on Twitter, Rudrank also pointed out that this principle also applies to DocC projects, looks like they both must be using the same system underneath 🤔.

🤯 Using the -why_load linker flag to reduce app size

This week I learnt thanks to Asif’s great post that you can find out specifically why each symbol is linked to your app’s binary by using the why_load linker flag.

This has inspired me to look into how the results of this linker flag can be used in a scheduled CI workflow to report the most significant findings in an easily parsable format.

💻 Tartelet: An app to manage self-hosted ephemeral GitHub runners

I recently came across a tweet from Simon B. Støvring announcing a macOS app that Shape has open-sourced: Tartelet. The app, which Shape has been using internally for the past few months, allows its users to manage ephemeral self-hosted GitHub runners.