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.
What is (mobile) CI/CD?
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.
Why CI/CD is especially important for mobile development
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.
These days, having at least a basic CI/CD pipeline in place is table stakes for modern mobile teams looking to set themselves up for success down the line. But many teams still struggle to get even basic pipelines up and running — from needing to understand the nuanced differences between CI/CD providers, to setting up fastlane scripts for the first time, there are plenty of gotchas that can make initial setup a significant undertaking. If your team is looking to get started with a basic CI/CD workflow for your iOS or Android app using GitHub Actions, check out Runway’s Quickstart CI/CD wizard to set up a build and deploy pipeline for your app in minutes.
Evaluating mobile CI/CD tools
When it comes to evaluating CI/CD tools for mobile development, there are some key criteria that are important to keep in mind.
1. Supported mobile platforms and environments
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.
3. Differentiating features
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.”
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.
Top 10 mobile CI/CD providers
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.
Xcode Cloud is the newcomer on this list having been announced in early 2021 and launched in beta in 2022. 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 which 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. Documentation for Xcode Cloud is readily available and regularly updated — including API docs.
Pricing is based on the number of compute hours per month, and the first 25 compute hours are free of charge until December 2023 (after which Apple plans to charge $14.00 for this plan). For $49.99 US/month you get 100 compute hours, and additional plans for 250 and 1000 compute hours are available. 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.
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 is priced per build minute. Finally their annual plan for large teams and enterprises starts at at $299 per month for three concurrencies and unlimited build minutes and goes up from there.
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 both cloud and self-hosted options. Cloud-based pricing plans are credits-based, with a free “Hobby” tier that gets you 300 monthly credits and up to 5 concurrent builds. Paid plans start at $35 per month (with a 10% discount if you pay yearly) for 500 credits, with higher plans offering premium features like dedicated hosts, custom SAML, and priority customer support options.
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 offers a self-hosted CI/CD solution 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’s cloud-based service, TeamCity Cloud is free for 14 days and gets you 2000 build credits. 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.
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. A general free plan is available, which gets you 5k job minutes per month along with 100k test executions per month and a 30 day build retention period. The next step up is their Team plan which runs $9 per month, per user for 20k job minutes, then the Business and Enterprise plans which come in at $19 and $35 per user per month respectively. The higher plans also give you better support and SLA guarantees.
CircleCI offers cloud and self-hosted CI/CD solutions for all kinds of software, with support for both Android and iOS and robust integrations with popular version control systems like GitHub, GitLab, and Bitbucket. It’s particularly popular with the open source community, providing some of the best support for open source projects and organizations through their generous free plan which includes 400,000 credits per month, or the equivalent of 80,000 build minutes.
Additionally, their marketplace of “orbs” — sharable packages of configuration — further extends what you can do out-of-the-box with CircleCI and makes initial setup more straightforward. There seem to be plenty of orbs (including those maintained directly by the CircleCI team or their technology partners) to help with Android builds, but the iOS side of things is a bit more sparse with no certified or partner orbs to speak of (although plenty of community-built orbs for iOS are available).
Their pricing spans across four different plans, with a Free tier that gets you up to 30,000 credits per month. Keep in mind that the cost of build minutes in credits varies based on the “resource class” being used — the lowest tier macOS machine comes in at 50 credits / build minute, for example. CircleCI’s first paid tier — the Performance plan — offers plenty of flexibility: it starts at just $15 per month which gets you 30,000 credits and 5 user seats, but you can purchase additional credits and user seats as your team grows. The Scale package starts at $2000 per month and comes with the kinds of premium features you’d expect to see for an enterprise-level pricing plan: dedicated 24/7 customer support and the highest available SLA agreements. A self-hosted plan option is also available, and while a monthly subscription price isn’t published for this plan, judging by some of the features included (a dedicated customer support team, for example), pricing is likely to be similar to the Scale plan. One important call out is that CircleCI’s self-hosted plan doesn’t appear to support macOS machines.
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 build minutes, concurrent builds, and the number of devices used for UI testing. A free tier is available, which gets you one concurrent build pipeline and 240 build minutes. Paid tiers start at $40 per month per concurrent build.
GitHub Actions is GitHub’s CI/CD solution – allowing 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 <code>main<code> 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 and storage volume used per month. Estimating your monthly costs can get a bit complicated, so they’ve put together a handy cost calculator to help you get an idea on what your total monthly costs will be. 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 for a single user, and a Premium plan that offers 10,000 monthly CI/CD minutes at $19 per user, per month. There’s also an Ultimate plan that offers 50,000 monthly CI/CD minutes at $100 per user, per month. Keep in mind that GitLab’s pricing is based on the number of users in the plan, and all paid plans are billed annually.
How to choose a CI/CD provider
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:
- Atlassian Bamboo, GitHub Actions, CircleCI, and GitLab CI aren’t as tailored for mobile development as Bitrise, Codemagic, TeamCity, and App Center.
- If your team uses Atlassian products like Confluence, Jira, or Trello, Bamboo can complement your mobile development workflow.
- If you have one or more open-source projects on GitHub, GitHub Actions might be worth trying. It will be free and won’t require a new account. CircleCI is also well-regarded among the open source community with their generous free plan for open source projects
- If you’re already using GitLab’s Enterprise plan, you can get started with GitLab CI right away without much additional effort.
- Jenkins and Buildkite let you run builds on your own hardware. Jenkins is a great choice if you need a lot of customization and you have experienced DevOps engineers on your team to maintain it, while Buildkite offers a friendlier front end experience, less maintenance overhead and a bit of curation for their plugin library.
- Xcode Cloud makes a lot of sense for solo developers or small teams that are iOS-only and don’t need some of the more advanced configuration options provided by some of the ‘established’ services.
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.