After an acquisition by Apple, yesterday buddybuild announced they will be discontinuing service for Android builds and free iOS plans. Congratulations are in order to the buddybuild team, though the news has left some teams looking for a replacement CI system for their mobile builds. We put together this comparison to help teams decide whether CircleCI is the right tool for them.
How do CircleCI and buddybuild compare?
|Mobile support (macOS, Android)||✅||✅|
|Non-mobile project support||✅||❌|
|Build isolation for macOS and Android||✅||✅|
|Support for open source projects||✅||✅|
|Automated uploads to iTunes Connect||✅||✅|
|Run macOS and Linux jobs in the same Workflow||✅||❌|
|Manual approval step with Workflows||✅||❌|
|Configuration in the UI||❌||✅|
|Collaborators without GitHub / Bitbucket access||❌||✅|
What are the main differences between CircleCI and buddybuild?
Configuration file stored in git
buddybuild configuration is done entirely through their web user interface, while CircleCI stores the configuration in a configuration file in your git repository. The benefits of storing the config as a file in your repo are:
- Better audit trail. See who has made changes to your config, and compare old and new configuration side-by-side on GitHub and Bitbucket.
- Easily restore previous config versions. Now that the config is stored in git, it is easy to restore previous versions of the config file.
- Copy configuration to new repositories. If you have multiple repositories to configure, you can just copy the config file between them and adjust the details in each repo.
When you sign up for CircleCI, we offer you a template of a config file that you can use in your project. We provide the current Best Practices config for reference in this doc.
You can find a sample iOS application that uses fastlane on CircleCI right here.
Using fastlane for code signing, testing and deployment
buddybuild provides built-in mechanisms for code signing, running test commands, and deploying your app. CircleCI doesn’t provide any built-in mechanisms, but instead we rely on using fastlane, an open-source tool for building, testing and releasing iOS and Android apps.
We chose to rely on fastlane because the community behind fastlane and associated tools does a great job tracking the improvements and changes Apple and other vendors implement. This makes sure that you have the most consistent build experience possible when interacting with Apple build tools and third-party services for deployment.
We recommend using fastlane for running your tests, exporting your app, and deploying to TestFlight (as well as other beta testing services) and iTunes Connect. Please check out this doc section for examples of using fastlane on CircleCI. You will find the instructions on setting up code signing via fastlane match here. You can find more detailed fastlane docs here.
iOS and Android in the same config
With CircleCI Workflows, it is possible to have iOS and Android configuration in a single config file. This is especially useful when building React Native projects.
Projects using iOS developer tools like Danger and swiftlint can also take advantage of this: you can fail a Workflow early if swiftlint doesn’t pass, for example, or run the iOS tests and Danger in parallel.
You will find an example of running swiftlint and Danger as separate jobs in a Workflow right here. Please take a look at the sample React Native project that builds iOS and Android apps on CircleCI. The Workflows doc shows all of the available Workflows options.