Update: As of Mar 2022, I recommend everyone to use GitHub Actions

I maintain a somewhat popular Android developer tool ( adb-enhanced). The tool is written in Python, supporting both Python 2 and 3. Testing the tool requires both Python runtime as well a running Android emulator. I, initially, used Travis CI for setting up continuous testing of this tool. Later, I felt that Travis CI was too slow and when I came across Circle CI, I decided to give it a try. As of now, both Travis and Circle CI are used for testing. Here is what I learned from my experience.

Usability

Circle CI configuration files are much cleaner and powerful. Circle CI’s build UI is also much cleaner. Some concepts like build steps make Circle CI’s build files much more maintainable over the longer run.

Result: Circle CI wins

Speed

Circle CI does better caching and it has a lot of custom docker images. For example, Circle CI has support for a later version of Android system images. Travis CI does not seem to have the caching support as the first-class citizen. Therefore, my tests always run faster on Circle CI.

Result: Circle CI wins

Pricing

Travis CI is free for open-source repositories. Circle CI gives 1500 minutes (25 hours) testing every month per account and is agnostic of whether the repositories are public or private. Travis CI gives 100 free private builds over the lifetime.

Result: Use Circle CI for private repositories. Use Travis CI for public repositories.

My scripts:

  1. Travis CI script: https://github.com/ashishb/adb-enhanced/blob/master/.travis.yml
  2. Circle CI script: https://github.com/ashishb/adb-enhanced/blob/master/.circleci/config.yml