Issue 65
Sponsored
Codemagic is the first CI/CD to make Apple M2 machines available to everyone (including the free tier!). This is a free upgrade from M1 machines with no price change.
How to use GitHub Actions as CI/CD for your Swift projects
Hey everyone! I hope you’ve all had a fantastic couple of weeks. Welcome to another issue of the newsletter!
Last week, I ran the first of many webinars exclusive to this newsletter’s subscribers. For the first edition, I picked a topic that I am truly passionate about and the goal was to inspire Swift Package authors and maintainers, especially those with Open Source projects, to automate manual processes such as running unit tests or creating new releases with CI/CD entirely for free.
I am truly thankful to everyone who subscribed and registered to attend the webinar, we nearly reached 100 registrations! And of course, to those who made it on Wednesday, it was a lot of fun.
As I said during the webinar, I would use this issue to share the session’s recording for those who couldn’t attend along with the code that we built together on Wednesday:
- 🎥 Webinar recording
- 🧪 Workflow that runs unit tests on all available platforms on every push to main and every push to a Pull Request targetting the main branch.
- 📦 Workflow that runs when on every new tag with a Semver version as the name that compiles executables for each available platform and creates a GitHub release.
If you have any questions about what I shared during the session or about the workflows’ code, please do not hesitate to reply to this email or message me on social media!
📦 Swiftly 1.0: Apple’s own Swift toolchain manager
While the latest version of Swift is already bundled with every Xcode release, there are times when you are interested in installing a Swift toolchain without relying on Xcode. An example of this is when you need to install Swift on platforms where Xcode is not available, such as Linux.
Apple built a tool exactly for this. While it has been around for a while, last week, Apple shipped its first stable release (1.0) with support for macOS. It is also worth noting that the Vapor team built an action that uses Swiftly under the hood and that installs any version of Swift you want as part of your GitHub Actions workflows.
✂️ How Duolingo reduced 70% of their manual regression tests using AI
Regression testing is a key step of any mobile release process as it ensures that the version that you’re about to ship does not break any of the app’s business-critical features.
Most mobile teams perform these tests manually, which can be very time-consuming. Therefore, researching ways to automate regression testing can greatly impact your team’s time management.
As Brock Janikowski explains in this article, Duolingo did exactly this and managed to remove 70% of their manual regression tests using AI, allowing their QA teams to focus on tasks with a higher ROI 👏.
🚀 How to automate App Store screenshot generation for macOS apps
One of the questions that I get asked the most whenever I give a CI/CD-related talk at a conference is: How do you automate App Store screenshot generation?
While there is a set of tools that can help you automate this process on iOS, the answer becomes a lot more complex on macOS. That’s why I really enjoyed reading this article on how Jesse Squires managed to streamline this process!
🐙 GitHub Copilot code review now has Swift support
Over a month ago, GitHub launched a feature that allows developers to add GitHub Copilot as a reviewer on their Pull Requests.
As of yesterday, GitHub moved the feature off preview and made it generally available for everyone to use. Along with this announcement, GitHub also added support for Swift, which is amazing!
⚙️ How to Cross-Compile Swift projects to other platforms
Did you know that if you have built a tool with Swift you can create a Linux-compatible binary directly from your Mac using Static Linux SDKs? This becomes incredibly useful when you want to compile and deploy a Server-Side Swift application.
In this article, Khan Winter takes you through the process of how they built a Discord bot using Swift and cross-compiled it to run on Linux. The article is well worth a read!