Integration (comparison) of different continuous integration services on Android project.
- GreenHouse
- Gitlab CI
- Circle CI
- Drone.io
- Snap CI
This table should help people make a decision which CI to choose for the project.
| CI | 👯,👷,🔎🐛,🚦,📬 | 📱👀 | 🚀 | 📄 | 📈 | 👤🙌/☁️ | 📻/💻 | 💵 | | ------------- |:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:| | Jenkins |⭐|⭐|⭐|⭐|⭐|👤🙌|📻/💻|🆓| | TeamCity |⭐|⭐|⭐|⭐|⭐|👤🙌/☁️|💻|💰💰💰| | Travis CI |⭐|⭐|⭐|⭐|❌|☁️|💻|💰💰| | Bitrise |⭐|⭐|⭐|⭐|❌|☁️|💻|💰💰| | Shippable |⭐|⭐|⭐|⭐|❌|☁️|📻|💰| | Buddybuild |⭐|⭐|❌|❌|❌|☁️|💻|💰💰| | Gitlab CI |.|.|.|.|.|.|.|💰| | Circle CI |.|.|.|.|.|.|.|💰| | GreenHouse |.|.|.|.|.|.|.|💰💰| | Drone.io |.|.|.|.|.|.|.|💰| | Snap CI |.|.|.|.|.|.|.|💰|
- 👯 - clone 2. 👷 - build 3. 🔎🐛 - test 4. 🚦 - analyse 5. 📬 - notify
- 📱👀 - UI tests 7. 🚀 - deploy 8. 📄 - configuration file 9. 📈 - visual reports
- 👤🙌/☁️ - self-hosted/cloud 11. 📻/💻 - CI user interface (old/new) 12. 💵 - price
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.
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.
CI's have different approaches and different paid plans. Check every CI pricing information for more details and choose the best option for you.
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)
- GreenHouse - starts with 49$/month. (1 concurrent build, ∞ projects, ∞ build time)
- Drone.io - starts with 25$/month. (1 concurrent build, 5 private projects, ∞ build time)
- Snap CI - starts with 30$/month. (1 concurrent build, 5 private projects, ∞ build time)
- Buddybuild - starts with 49$/month. (1 concurrent build, ∞ projects, ∞ build time)
Project uses custom Checkstyle rules.
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
provides test coverage information. COVERALLS_REPO_TOKEN
environment variable should be exported on the build machine.