Mobile continuous delivery with bitrise
Continuous integration and continuous delivery is something I wanted to do a while ago, specially since Apple accelerated its approval process to publish new apps on its mobile store. It can now takes less than a day to have an update available for your mobile users: continuous integration and continuous delivery makes more sense than ever on mobile apps.
The idea is simple, as a mobile developer you want to deliver the best app to your users the fastest way possible preventing as many bugs as possible. Continuous integration and continuous delivery help you to do so. It’s very common for web platforms but it was a bit more harder to put this principle on mobile, now we’re almost even.
Bitrise is one CLI I’ve experienced and its platform makes it really easy to integrate in any mobile projects. It allows you to define a workflow that can be automatically executed depending on triggers you can customise. After couple clicks you can automatically clone and build your project, but also run unit test and UI test for every commits pushed.
What I really like about this tool is third part integration. Your workflow can archive your app and push it on iTunes Connect and even notify you by sending a message on Slack. You can also get access to HockeyApp, Fabric or JIRA. Others are more for fun like integration LiFX or sending an text via Twilio.
Bitrise is compatible with iOS and Android but you can actually use many way to create your project, like Xamarin, React Native or Cordova.
Other good things is that bitrise is open source and you can integrate it and use a yaml file in your own mobile continuous integration environment.
About pricing, you can have access to a free plan for 10 mins / build with 200 builds / month to use their cloud. This was good enough for me after improving build process to reduce build time, like adding cocoapods resources directly into the repository and keeping an eye, refactoring code and removing unnecessary files or build scripts.
On my side, I mainly use it for two goals, one is for unit testing and ui testing on a daily basic, to be sure I don’t break anything. The other one is continuous delivery for beta testers, pushing every update automatically on TestFlight. It’s time saved everyday that helps me to stay focus on the quality of user experience and on my code.