At TuneIn we’re always improving our Continuous Integration and Continuous Delivery processes. Last year I worked on setting up TuneIn CI/CD using Docker and TeamCity (TC). This year we migrated to Bitrise.
Guest post by Andrés Sandoval. The original post appeared on TuneIn.Engineering
Andres is a Senior Android Software Engineer and has experience with Android development, security, testing and CI/ CD. He likes to keep learning about new technologies and share his knowledge. Also, he likes traveling, swimming, writing and playing soccer. He was born in Cd. Juarez Chihuahua, Mexico and now works in San Francisco, Ca, USA.
Why We Migrated to Bitrise CI/CD
I’m a fan of CI/CD. I’ve used numerous CI frameworks (Jenkins, Circle CI, TeamCity, Bitrise) and they all do similar tasks (build, test, report, publish to Play Store); they just have different UIs and payment plans.
My favorite framework so far is Bitrise, for the reasons below.
Pros:
- It’s easy to integrate.
- The Bitrise technical support team is great.
- We get an email notification with build status and the app install URL.
- We don’t need to VPN, like on TeamCity.
- We don’t need to maintain a Dockerfile (and no more Docker local testing), which saves configuration and testing time.
Cons:
- We don’t have a history changelog when we update the build steps (like on TeamCity) so we have to back up our Bitrise build settings to GitHub.
Continuous Integration (CI) makes the development life cycle easier. Every time we push new code, we run a set of Gradle build tasks to check that nothing was broken by our code changes. With Bitrise we can configure our Android CI process to do the below build tasks.
- Android Lint (code style checks) generates an HTML report.
- Unit Tests (Jacoco and Code test coverage) generates a test results report.
- UI Integration Tests (Espresso tests run on Firebase Test Lab).
- Android Build generates APK and App Bundle.
- Bitrise’s “Schedule” feature sets an App build to run automatically daily.
- Bitrise’s “Deploy” feature gives build status notifications via email, Slack, etc.

Conclusion
Using Bitrise is straightforward and it’s easy to integrate. Previously we were building using Docker containers (we had to maintain a Dockerfile, updating Gradle build versions, Android SDK version, NDK version, etc). Now we don’t have to maintain a Dockerfile.
Bitrise is a great framework. They keep making changes to give a better user experience each day, and their support team is always there to answer all your questions.
Thanks for reading! Let me know if you have any questions about setting up Bitrise for Android.