As usual, Apple's Worldwide Developer Conference keynote was full of significant announcements for iOS and macOS developers. We wrote about a few of our favourites – but we saved one for a deeper dive. During the keynote, Apple announced the release of Xcode Cloud. It's a new continuous integration and delivery (CI/CD) service built right into Xcode.
Xcode Cloud is one of the most significant updates to XCode since the IDE (Integrated Development Environment) was released in 2003. Apple said Xcode Cloud would help accelerate the development and delivery of high-quality apps. It does this by bringing together cloud-based tools that help devs build apps, run automated tests in parallel, deliver apps to testers, and view and manage user feedback.
But will an integrated, cloud-based CI/CD service make life easier and simpler for app builders to build, test, and deliver apps? We took some time to dig into XCode Cloud, how it differs from other solutions and what the changes mean for the future of app development.
Using a CI/CD pipeline is one of our DevOps team's best practices to deliver code changes more frequently and reliably. Using automatic workflow tools like Bitbucket Pipelines allows multiple developers to work on a project with less risk as small changes are constantly being tested for integration problems.
What’s in a CI/CD stack?
Continuous integration and delivery is a key part of an agile development process. Instead of a team coding an app, compiling, and testing, CI/CD stacks let individual developers check in code as they complete tasks. A build is then kicked off and testing is done to identify problems before additional work is done.
“Continuous integration means you’re doing smaller changes and regularly merging your code into the main branch. Doing that helps surface issues sooner when they're easier to debug and resolve,” said our CTO, Joe Reda. “With continuous integration you have automatic tests that must pass before merging into the main branch. If you inadvertently cause a regression you won't be able to merge until you resolve the issue.”
A typical CI/CD stack has tools for four different pipeline stages:
- Build - After code is checked in, a build (compile of the app) is started
- Test - Automated tests are run on different functions in the app. This can be anything from a login flow to uploading a file.
- Release and deploy - Once automated tests pass, the app or code is released for validation.
- Validation and compliance - real-world testing is done to ensure all security, compliance, and other checkpoints are met before being deployed to production
Our thoughts on XCode Cloud so far
Apple also believes that a cloud-hosted CI/CD offering is the best way to get broad adoption of CI/CD as a practice. This is particularly helpful for smaller developer teams for whom setting up and managing dedicated build servers is a more significant challenge.
One challenge is that Xcode Cloud is only helpful for the development of apps for Apple devices. Organizations and teams that build Android or cross-platform apps (including our team) need a solution that supports Apple and Android development. Our development team uses Bitrise with our CI/CD stack today for OS-specific and cross-platform development.
“We started using Bitrise because we have a number of developers that work on mobile apps and we needed to have a repeatable workflow that allows any developer to build and builds for testing or for store submission,” said Reda.
“Bitrise also helps us with onboarding new developers. New developers are instantly able to build and release test builds to QA without having to set up a local workflow or gaining access to the private keys,” said Reda.
So how does Bitrise compare to Xcode Cloud, and what does this mean for the future of app development?
Out of the gate, Xcode Cloud offers a set of features Bitrise does not yet support, including:
- Data encryption at rest
- Direct IDE integration with Xcode
- Inline comments in pull requests
For the time being, we're sticking with Bitrise. It provides a scalable solution for iOS and Android apps – and support for both platforms is something our clients need for their customers.
CI/CD tools allow us to work faster, with less uncertainty and avoid problems before they happen. As new technology develops, we continue to test and learn about new tools to continue to provide our clients with the best service and support possible.
Interested in working with us for your iOS or Android mobile development? Get in touch with us today.