Integration (comparison) of different continuous integration services on Android project
Groovy Java Shell
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.circleci Configure Circle CI (#16) Jan 9, 2018
app Configure Circle CI (#16) Jan 9, 2018
gradle/wrapper Create empty Android project Nov 14, 2016
jenkins Update Checkstyle configuration (#14) Jan 7, 2018
screenshots Configure Circle CI (#16) Jan 9, 2018
.bitrise-with-ui-tests.yml Fix bitrise.io build by using another install step (#11) Nov 19, 2017
.bitrise.yml Fix bitrise.io build by using another install step (#11) Nov 19, 2017
.gitignore Fix bitrise.io build by using another install step (#11) Nov 19, 2017
.travis.yml Install android-21 in Travis (#12) Jan 6, 2018
BITRISE.md Fix list formatting in BITRISE.md Nov 20, 2016
BUDDY_BUILD.md Finish Shippable integration Nov 28, 2016
CIRCLE.md Configure Circle CI (#16) Jan 9, 2018
JENKINS.md Describe TeamCity configuration Nov 25, 2016
LICENSE Migrate from MIT to Apache 2.0 license Nov 14, 2016
README.md Add presentation info to README (#19) Jan 25, 2018
SHIPPABLE.md Update SHIPPABLE.md documentation with new Docker image Jun 20, 2017
TEAM_CITY.md Finish BuddyBuild integration Nov 27, 2016
TRAVIS.md Improve Jenkins/Travis configuration sections Nov 25, 2016
buddybuild_postbuild.sh Finish BuddyBuild integration Nov 27, 2016
build.gradle Add Travis configuration Nov 20, 2016
gradle.properties Create empty Android project Nov 14, 2016
gradlew Create empty Android project Nov 14, 2016
gradlew.bat Create empty Android project Nov 14, 2016
settings.gradle Create empty Android project Nov 14, 2016
shippable.yml Accept more Android licenses on Shippable (#15) Jan 7, 2018
ui_tests_on_emulator.sh Fix shippable configuration Nov 27, 2016
wait_for_emulator.sh Add shippable.yml Nov 26, 2016

README.md

ci-matters

Integration (comparison) of different continuous integration services on Android project.

CI's integration

TODO

  • Nevercode.io
  • Gitlab CI
  • Drone.io

Comparison

Comparison table

This table should help people make a decision which CI to choose for the project.

CI πŸ‘―,πŸ‘·,πŸ”ŽπŸ›,🚦,πŸ“¬ πŸ“±πŸ‘€ πŸš€ πŸ“„ πŸ“ˆ πŸ‘€πŸ™Œ/☁️ πŸ“»/πŸ’» πŸ’΅
Jenkins ⭐️ ⭐️ ⭐️ ⭐️ ⭐️ πŸ‘€πŸ™Œ πŸ“»/πŸ’» πŸ†“
TeamCity ⭐️ ⭐️ ⭐️ ⭐️ ⭐️ πŸ‘€πŸ™Œ/☁️ πŸ’» πŸ’°πŸ’°πŸ’°
Travis CI ⭐️ ⭐️ ⭐️ ⭐️ ❌ ☁️ πŸ’» πŸ’°πŸ’°
Bitrise ⭐️ ⭐️ ⭐️ ⭐️ ❌ ☁️ πŸ’» πŸ’°πŸ’°
Shippable ⭐️ ⭐️ ⭐️ ⭐️ ❌ ☁️ πŸ“» πŸ’°
Circle CI ⭐️ ⭐️ ⭐️ ⭐️ ❌ ☁️ πŸ’» πŸ’°πŸ’°
Buddybuild ⭐️ ⭐️ ❌ ❌ ❌ ☁️ πŸ’» πŸ’°πŸ’°
Gitlab CI . . . . . . . πŸ’°
Nevecode.io . . . . . . . πŸ’°πŸ’°
Drone.io . . . . . . . πŸ’°
  1. πŸ‘― - clone 2. πŸ‘· - build 3. πŸ”ŽπŸ› - test 4. 🚦 - analyse 5. πŸ“¬ - notify
  2. πŸ“±πŸ‘€ - UI tests 7. πŸš€ - deploy 8. πŸ“„ - configuration file 9. πŸ“ˆ - visual reports
  3. πŸ‘€πŸ™Œ/☁️ - self-hosted/cloud 11. πŸ“»/πŸ’» - CI user interface (old/new) 12. πŸ’΅ - price

Pricing

All listed CI's provide free plan with some restrictions like "open-source projects only" or "only 1 build node", but it's enough to configure the build process and check if CI suits or not.

Free plans

Choosing a free plan for a project is more suitable for a freelance project. Usually, some services provide limits on such plans for understandable reasons.

Paid plans

CI's have different approaches and different paid plans. Check every CI pricing information for more details and choose the best option for you.

⚠️ This information can get outdated very quickly as services evolve. ⚠️

What might matter is the starting price for paid plan:

  • Jenkins - starts with X$. (paid version (Cloudbees), no public information)
  • Travis CI - starts with 69$/month. (1 concurrent build, ∞ projects, ∞ build time)
  • Bitrise - starts with 50$/month. (1 concurrent build, ∞ projects, 45 min. max build time)
  • TeamCity - starts with 299$. (4 concurrent builds, 30 project configurations, ∞ build time)
  • Shippable - starts with 25$/month. (2 concurrent builds, ∞ projects, ∞ build time)
  • Gitlab CI - starts with 15$/month. (2 concurrent builds, ∞ projects, ∞ build time)
  • Circle CI - starts with 39$/month. (2 concurrent builds, ∞ projects, 500 minutes build time per month)
  • Nevercode.io - starts with 5$/month. (1 concurrent build, ∞ projects, 90 min. max build time)
  • Drone.io - starts with 25$/month. (1 concurrent build, 5 private projects, ∞ build time)
  • Buddybuild - starts with 79$/month. (1 concurrent build, ∞ projects, ∞ build time)

Presentation

I gave a talk back in 2016 and this repository was a technical part for it. I am describing there configured CI's and providing my personal opinion about which CI to choose depending on your needs (in πŸ‡·πŸ‡Ί language ).

It doesn't contain information about ALL existing CI services, but should be a good start.

CI comparison presentation

In few words:


Checkstyle

Project uses custom Checkstyle rules.


Fabric/Crashlytics project configuration

In order to upload APK to Crashlytics project should have following configuration: ${projectDir}/fabric.properties file with apiSecret and io.fabric.ApiKey in AndroidManifest.xml(1, 2) file. Both keys should not be uploaded to the repository for security reasons!

Pass both parameters to your build from command line:

./gradlew -PfabricApiKey="YOUR_API_KEY" -PfabricApiSecret="YOUR_API_SECRET" crashlyticsUploadDistributionDebug

or export these keys as environment variables on a build machine and they will be automatically read from there during the build (no need to pass keys as parameters in this case).


Coveralls

Coverage Status

Coveralls provides test coverage information. COVERALLS_REPO_TOKEN environment variable should be exported on the build machine.