New from Apple – CI/CD with Xcode Cloud

Announced at WWDC21, Xcode Cloud brings continuous integration and delivery into the hands of Xcode developers. Learn what we know so far as beta starts this week.

Xcode Cloud screenshot

Big news from WWDC this week! In addition to macOS Monterey, iOS 15, iPadOS 15, and a host of other new software features, Apple announced a new CI/CD service built into Xcode and integrated with TestFlight called Xcode Cloud. Apple says that Xcode Cloud will “accelerate the development and delivery of high-quality apps by bringing together cloud-based tools that help you build apps, run automated tests in parallel, deliver apps to testers, and view and manage user feedback.”

We applaud Apple’s move to increase adoption of continuous integration and delivery in the iOS and macOS space, as our past survey results have indicated that a large percentage of developers on smaller iOS and macOS development teams are not yet benefitting from CI/CD. For many years, MacStadium has been the infrastructure backbone of CI/CD platform Buddybuild (acquired by Apple in 2018), so we’re excited to see that Apple is really making an effort to ensure macOS and iOS developers learn and adopt CI/CD as an investment in their professional development future with this new Xcode Cloud platform.

So, what do we know about Xcode Cloud so far and what does it mean for iOS developers? We’ve rounded up answers to your initial questions. Stay tuned to the MacStadium blog for updates over the next few months as Apple moves closer to a widespread release sometime in 2022.

What’s included in Xcode Cloud?

Continuous Integration

‍Xcode Cloud can help you organize, manage, and document source code changes with Git source control, improving your project’s quality by tracking and reviewing code changes. Build, run, and test your project on multiple simulated devices in less time than you traditionally could.

Continuous Delivery

‍When Xcode Cloud verifies a change to your code, it can automatically deliver a new version of your app to testers with TestFlight, or make a new version available for release with App Store Connect. You can also upload the exported app archive or a framework to your own server.

Team Collaboration

‍If you develop code as a team, or if you work on several changes at the same time, it’s common to use separate branches for each change and then create pull requests (PRs) to receive code reviews from your peers. With Xcode 13 and Xcode Cloud, you can create, view, and comment on PRs, and merge changes into your codebase if you host your Git repository with a platform like GitHub or Bitbucket.

What are the limitations?

Apple Only

‍Since Xcode Cloud is built for Xcode 13 (and later), it’s specifically designed for the Apple platform. Xcode cloud requires all projects to be Xcode projects and workspaces. If you are building and testing cross-platform and/or Android apps, it will only support the iOS portion of your CI/CD pipeline. 

Current Version

‍To access and use Xcode Cloud, your team will need to be running the latest version of Xcode 13 as well as the latest versions of macOS, Big Sur or Monterey. However, Xcode Cloud does provide access to legacy and unreleased beta OSs for building and testing. It also provides the capability to target a variety of hardware target types for simulation/build.

Enterprise DevOps

‍While Xcode Cloud does support custom scripting and tools like Homebrew, it does not yet support configuration as code, as you may find in other CI/CD tools. While Xcode Cloud is a great option for developers and developer teams, it is not built to seamlessly integrate into existing complex enterprise-scale CI/CD pipelines. It is a very developer-centric tool centered around the Xcode IDE which could prove to be challenging for other team members like DevOps engineers. In most cases, the responsibility of managing, configuring, and maintaining the CI/CD process with Xcode Cloud will be the responsibility of the developer or development team directly through the use of the Xcode UI or scripts.

Enterprise Security

‍‍Although Xcode Cloud emphasizes privacy and security for your proprietary code, most enterprise development teams want 100% control over their source code and prefer dedicated build environments like MacStadium offers. While Xcode Cloud is easy to use and security-forward, you do not have control over where, when, or how many resources are used to get the job done. While we are sure it will be high-performing, it does not afford dev teams the ability to manage or control their specific build environment as they see fit or the way the resources are allocated to perform the build process.

What is required to use Xcode Cloud?

Xcode Cloud is currently in beta, and to use it you must be enrolled in the Apple Developer Program. Your Apple ID must be added to Xcode and you will need to have an app record in App Store Connect (or have the required role or permission to create one). You must use an Xcode project or workspace with a shared scheme and have enabled the archive action for the scheme that builds your app or framework.  These are requirements for any and all members of the team who wish to use Xcode Cloud.

Xcode Cloud works with the new Xcode build system; dependencies and additional third-party tools will need to be made available to Xcode Cloud. This will require either pulling these dependencies into your repository directly or granting access to those dependencies. Automatic code signing and Git source control are also required to use Xcode Cloud.

What source control repositories does Xcode Cloud support?

  • GitHub and GitHub Enterprise
  • GitLab and self-managed GitLab instances
  • Bitbucket Cloud and Bitbucket Server

When will Xcode Cloud be available?

Apple began accepting requests to participate in the limited free beta starting June 7th. Access to the beta will expand throughout the summer and fall of 2021, and Apple is anticipating Xcode Cloud launch to all developers sometime in 2022. 

What will it cost?

Pricing for Xcode Cloud was not provided during the WWDC keynote; however, Apple said details about pricing and availability will be shared later this year.

Does Xcode Cloud have any impact on Apple’s EULA?

There was no mention of the EULA for macOS in the keynote, and questions around minimum session times were not addressed. We’re certain that more info about changes to macOS usage models and licensing will be addressed and provided by Apple as they get closer to general availability of Xcode Cloud.

How do I participate in the beta?

To request access to the Xcode Cloud beta, you’ll need to be an account holder in the Apple Developer Program as of June 7, 2021. Visit https://developer.apple.com/xcode-cloud/ to sign up.

What does this mean for MacStadium and for teams using MacStadium’s cloud solutions?

Xcode Cloud is designed to enhance the IDE experience of Xcode and provide a CI/CD toolset within a developer's work environment. Xcode Cloud is a convenient way for developers to center their processes around Xcode and to add continuous integration and delivery practices into their app development processes. And like we have done with other CI/CD platforms, we look forward to integrating MacStadium’s Orka cloud solutions with Xcode Cloud. 

For teams with existing DevOps and CI/CD tooling, MacStadium still represents the ideal environment for customization, control, and dedicated scalable resources. Large and mid-sized development teams with products targeting multiple platforms require the inherent flexibility provided by MacStadium’s different macOS virtualization solutions, OrkaAnka, and VMware, and MacStadium offers highly configurable networking, storage, and security solutions to satisfy the most demanding DevOps team.

As the Mac experts, we are also perpetually focused on providing the tools and knowledge to allow your teams to extend and leverage new Apple tools like Xcode Cloud as integrated parts of your business and development practices.

Have more questions? Let us know! Join the conversation in our Community Slack or email us at hello@macstadium.com.