One of the most important components of a modern DevOps workflow is a continuous integration and continuous delivery (CI/CD) pipeline. While there are many different approaches and third party providers for implementing CI/CD, mobile app development teams have unique needs that they must take into account when deciding how to put a pipeline in place.
In this piece, we’ll offer a brief overview of mobile CI/CD considerations and share some of the tools you can use. After reading, you should understand the key criteria required to evaluate mobile CI/CD tools so you can choose the right one for your team and project.
Continuous integration (CI) automates the process of building and testing independent changes to your app on the fly. It typically involves running unit tests, static analysis, integration tests, and UI tests to guard against the introduction of bugs and ensure overall build quality.
Continuous delivery (CD) picks up where continuous integration ends, automatically generating and distributing builds either for internal testing, or for external distribution.
Building and deploying for mobile is typically an involved, time-consuming process. One of the most compelling advantages of CI/CD, then, is its ability to reduce development and deployment time and effort. Some estimate that teams can save up to 20% of their app development time by implementing CI/CD.
Because code can be tested more regularly and robustly with CI/CD in place, you can be more confident in your builds. This is particularly helpful in the mobile context, where the overall quality bar is higher because shipping updates and patches is a gated and relatively slower process. Fewer bugs and less time spent on bug fixes can mean more frequent feature updates and improvements — and ultimately, happier app users.
When it comes to evaluating CI/CD tools for mobile development, there are some key criteria that are important to keep in mind.
Your CI/CD tool should ideally support all the different kinds of apps you build: iOS, Android, and possibly beyond! Also look for robust support for multiple environments, operating systems, and even virtual machine (VM) configurations (Windows, Mac, and Linux) if you want to use the same tool to build your non-mobile applications.
While not always core to the CI/CD mission, rich integrations can really level-up your pipeline. Look out for support for integrations with version control providers like GitHub, GitLab, or Bitbucket; distribution platforms such as TestFlight or Visual Studio App Center; project management tools like Jira or Asana; and monitoring and analytics services such as Firebase or Sentry. Integrations with communication tools can help improve visibility around your CI/CD pipeline: for example, support for some form of Slack integration can be leveraged to notify your team of build status and other state changes.
Some CI/CD features are not essential but can greatly improve your developer experience. For example, look out for flexible build triggering options, the ability to run multiple builds simultaneously (and keep an eye on the cost associated here!), scheduling options for tests and builds, UI testing options using hardware simulation, and automatic deployment to various app stores. Depending on how far you want to go in automating your mobile CI/CD process, some of these “nice to have” features can be big time-savers.
“From the perspectives of a developer and product owner, tools with sound DX are powerful because they facilitate faster and easier work. This advances a positive downstream effect for your product.” - Django Radonich-Camp, Director of Technology at Emerge Interactive
The setup, configuration, and usage of your CI/CD tools should be simple and intuitive. Remember that these tools will be used by a diverse set of teams and roles, and a steep learning curve or poor UI/UX might discourage team members and stakeholders from interacting with or helping to maintain the tool.
While many CI/CD tools are relatively self-service, it’s always nice to know that the company has knowledgeable support reps available when you need them. CI/CD can be notoriously flaky, and often not due to user error! Implementation guides, detailed tutorials, and extensive API documentation are also good indicators of a quality support program. Depending on the tool, you might also find discussions in forums like Stack Overflow and Reddit, and especially in dedicated support communities on Slack, a good indicator of overall support ecosystem health.
Many CI/CD tools offer a free tier, but for most production-ready mobile apps, you’ll need to pay. Some tools base their pricing on the number of builds and users, which might fit your budget if you have a small team. Other tools tie pricing to the number of concurrent builds permitted or containers used. Whatever the specific model, pricing is always usage-based and can scale quickly! Keep this in mind and size things up relative to your volume needs.
With the criteria above in mind, let’s take a look at some of the most popular mobile CI/CD tools out there. While this list isn’t exhaustive, it should give you an idea of the range of tools available and help you pick the right one for your needs. We’ll also take a quick look at Xcode Cloud, which was announced earlier this year and promises to be an intriguing option for some!
Bamboo offers direct CI support for Android and an add-on for iOS along with key features such as built-in Git branching workflows, automated merging, testing, and project deployment. It integrates well with AWS CodeDeploy and Docker for CD.
Because it’s an Atlassian product, it plays well with their other products. If your team is using Jira for project management and Bitbucket for source control, you’ll have access to deep integrations to keep tickets, commits, pull requests, and builds in sync between all these tools.
Bamboo has solid support, but the user interface isn’t as intuitive as some of the other options in this list. It offers a free 30-day trial followed by two pricing plans based on the number of services (called “agents”) that can run jobs concurrently.
Bitrise CI/CD is fully focused on mobile development and supports both Android and iOS platforms. It integrates with all major version control providers, plus TestFlight, fastlane, AWS, Jira, Slack, and 300+ other tools.
The tool has a developer-friendly UI that makes it simple to set up and intuitive to use. There’s also an open-source library of predefined templates (“steps”) for common workflows and actions, along with extensive documentation, video tutorials, and blog content.
Backed by a strong community, Bitrise offers flexible and customizable pricing plans with cloud and self-hosted options. The former is priced at $36 per month per concurrent build, whereas the latter requires a custom pricing plan with a 14-day free trial. The free tier caps out at 200 builds per month and a 30-minute build limit.
Buddy is fast, easy to use, and offers unlimited delivery pipelines within a high-performing build environment. It integrates with all the major source control providers and Docker. Currently, it supports Android, with beta support for iOS.
Buddy also provides a Slack webhook integration as well as integrations with AWS, Heroku, and Discord, among others. Its free tier can accommodate a small team or freelance projects quite well. For larger teams, Buddy’s Pro plan can support 20 projects and a concurrent pipeline with parallel actions at $75 per month. It also offers a Hyper plan for even larger teams at $200 per month with two concurrent pipelines.
Buildkite is open-source, with a cloud-based frontend (for defining and visualizing pipelines) and a build agent designed to be run directly on your own infrastructure. It works with a huge number of platforms and architecture configs, and there’s a particular emphasis on easy scaling of build jobs.
While it’s not tailored to mobile specifically, there’s a growing plugin directory, a solid community and a highly-rated support team behind the service to get you on your way. Open source projects are welcome for free on public build pipelines with no usage limitations. The Teams plan runs $15 per month, per user (up to 200), while the Enterprise tier gives you a higher user cap, better support and SLA guarantees for $30 per month.
Codemagic is tailored for mobile development and supports all major app platforms and frameworks (React Native, Cordova, Ionic, native Android, and iOS). It integrates well with Azure DevOps, GitHub, GitLab, and Bitbucket and offers automated unit and UI testing using emulators. It also provides Slack webhook support for build-related logs and notifications.
In addition to their extensive documentation, Codemagic has its own Slack community for direct support from its developers, so if you need real-time help, it’s just a message away. They also offer Linux and macOS-based VMs for your build servers and have a free tier with 500 build minutes and a 120-minute build timeout per month. Their flexible pay-as-you-go plan is the next step up, and their business plan for large teams and enterprises is priced at $299 per month.
GitHub Actions is the built-in CI/CD tool inside GitHub that allows you to build, test, and deploy Android and iOS applications right from your repository. It works by associating an event on the repository with an action performed by the tool. For instance, you can configure an event like pushing changes to the main branch to automatically compile and deploy your code to production.
GitHub Actions has a clear value proposition for existing GitHub users. If you’re already using GitHub, you don’t need to create a separate account or service to use GitHub Actions — it’s only a tab away from your repositories. GitHub Actions is especially appealing to security-sensitive teams that want to limit the surface area of access to their repos - no outside service will need to talk to GitHub!
It’s worth keeping in mind that the GitHub Actions ecosystem is relatively young, so there may not be as many out-of-the-box or templated actions or workflows available as some other platforms.
Their paid plans scale with the number of workflow minutes per month. And if you’re building an open-source project, you’re in luck: for OSS, GitHub Actions offers a free tier for public repositories and small private repos.
Similar to GitHub Actions, GitLab CI is GitLab’s built-in CI/CD tool to build, test, and deploy code automatically. It supports Android and iOS platforms with both self-hosted and cloud-hosted options.
GitLab CI is built into GitLab’s existing pricing plans. It has a free tier with 400 CI/CD minutes per month, and a Premium plan that offers 10,000 monthly CI/CD minutes at $19 per month. There’s also an Ultimate plan that offers 50,000 monthly CI/CD minutes at $100 per month.
Jenkins is one of the oldest and most popular CI/CD tools out there. With many years of community support, you’re sure to find answers to most common problems on forums. Jenkins is open-source, and free. It includes support for Android and iOS SDKs, and many third-party plugins are available for integrating with Google Play, Gradle, and version control providers. Overall, Jenkins is very customizable and flexible.
Jenkins’ flexibility and free service do come at a cost, though. Jenkins must be self-hosted; there’s no cloud-based option. Because of this, the demand on your team is way higher in terms of overhead and upkeep. Server maintenance and keeping everything up to date - OS versions, Jenkins versions, plugins and build tools like Gradle and CocoaPods - are all up to you and your team.
Jenkins is also starting to show its age. Many plugins are becoming out-of-date and poorly maintained, and Jenkins wasn’t designed with more modern container-based builds and deployments in mind. That said, Jenkins is still very popular and widely used, especially in enterprise app development settings where there are adequate resources to maintain it.
Much like Jenkins, TeamCity is also a self-hosted CI/CD service but is comparatively much easier to configure and use. It supports all the platforms you’d need for mobile development and it can be integrated with your IDE. This allows you to run, build, and test your code remotely without having to push all updates through version control first. It also offers intelligent testing to track your CI history and easily isolate build failures.
TeamCity does also offer a cloud-based service, TeamCity Cloud that is free for 14 days and costs $45 per month afterward. On the self-hosted side, there are two tiers that accommodate different team sizes and project volumes. A Professional plan will get you 100 build configurations and is free forever, while an Enterprise plan gives you unlimited build configurations from $1,999 per year, with a 50% renewal discount. The latter also offers priority support from the JetBrains team.
Visual Studio App Center offers mobile developers an environment to build, test, and deploy apps for iOS, Android, Mac, and Windows environments. It supports all major mobile frameworks, integrates with all the common version control providers, and includes features to automatically test your UI on a fleet of real devices. App Center also offers crash reporting and analytics, and it helps you sync updates to beta testers as you release new test versions of your code.
While App Center is easy to configure and set up, it doesn’t offer as many customization options as some of the other options in this list. You won’t be able to change the target configurations for building your iOS app bundle, for instance. Pricing is based on concurrent builds and the number of devices used for UI testing and starts at $40 per month.
Xcode Cloud was announced earlier this year at WWDC. There was a lot of buzz around the reveal, as we finally got a chance to see Apple’s own CI/CD offering. In true Apple style, Xcode Cloud is seamlessly integrated into Xcode, to the point of it being just another tab in the familiar Report Navigator interface. Xcode Cloud provides a straightforward way for iOS-only developers to reap some of the basic benefits of a CI/CD pipeline – without needing to leave the confines of the Apple tooling ecosystem at all.
In addition to being able to manage builds from within Xcode, and from a dashboard within App Store Connect, Xcode Cloud offers a tight integration with TestFlight. This allows for instant deployment to testers and advanced management of testing groups. As far as customization options, you’ll even find a few advanced features to keep pace with third-party providers, such as the ability to create multiple parallel workflows with environment variables and custom scripts, capability to integrate with additional public and private repos (including Swift Package Collections), and support for webhooks.
The obvious downside for some teams is that there’s no Android support if you’re releasing for multiple platforms. As with a lot of Apple products, if you fit into their target audience you’re likely to find a pretty nice experience – but you may need to look elsewhere if your needs extend beyond their ecosystem. Time will tell, and we’re excited to dig in further.
While all of the CI/CD tools covered above can work well for mobile development, there are some clear winners for certain use cases. Here are a few differentiating features and reasons you might pick some over the others:
No one tool is ever going to be perfect, but the needs of your particular team can help to narrow down your choices. When deciding which tool to go with, we recommend factoring in team size, maturity of your overall DevOps practices, your current and future product needs, your budget, and whatever other specific constraints are imposed by your organization and mobile team.