Heroku CI vs Travis CI: What are the differences?
What is Heroku CI? Fast, low-setup CI that’s easy to use. On every push to GitHub, Heroku CI runs your tests in a disposable Heroku app, so there’s never a wait time for a free CI worker. Tests run fast, on Performance dynos.
What is Travis CI? A hosted continuous integration service for open source and private projects. Free for open source projects, our CI environment provides multiple runtimes (e.g. Node.js or PHP versions), data stores and so on. Because of this, hosting your project on travis-ci.com means you can effortlessly test your library or applications against multiple runtimes and data stores without even having all of them installed locally.
Heroku CI and Travis CI belong to "Continuous Integration" category of the tech stack.
According to the StackShare community, Travis CI has a broader approval, being mentioned in 670 company stacks & 624 developers stacks; compared to Heroku CI, which is listed in 10 company stacks and 12 developer stacks.
What is Heroku CI?
What is Travis CI?
Need advice about which tool to choose?Ask the StackShare community!
Sign up to add, upvote and see more prosMake informed product decisions
What are the cons of using Heroku CI?
Sign up to get full access to all the companiesMake informed product decisions
Sign up to get full access to all the tool integrationsMake informed product decisions
We are using React Native in #SmartHome to share the business logic between Android and iOS team and approach users with a unique brand experience. The drawback is that we require lots of native Android SDK and Objective-C modules, so a good part of the invested time is there. The gain for a app that relies less on native communication, sensors and OS tools should be even higher.
We use a microservices structure on top of Zeit's @now that read from firebase. We use JWT auth to authenticate requests among services and from users, following GitHub philosophy of using the same infrastructure than its API consumers. Firebase is used mainly as a key-value store between services and as a backup database for users. We also use its authentication mechanisms.
You can be super locked-in if you also rely on it's analytics, but we use Amplitude for that, which offers us great insights. Intercom for communications with end-user and Mailjet for marketing.
I initially chose CircleCI for a personal project because I was not satisified with using Travis CI in the past. When it came time to develop my CI/CD config on Circle, I was pleasantly surprised with the fantastic documentation, invaluable collection of example configs and helpful support provided. The free tier they provide is quite robust for most small projects and the platform is updated frequently with nice features.
Areas where CircleCI could improve:
- the UI is a bit slow (you can feel the local machine straining to load all the code) and it is not as intuitive as it could be
- many UI elements receive updates and/or changes that are not always reflected in the current docs
I recommend using Travis CI and/or Appveyor in all projects.
Projects using these tools have given me confidence to know that I don't cause any breaking changes. Travis CI and Appveyor have functionality to test components of a project across multiple installation projects to ensure that modifications don't break a project. These tools integrate easily with GitHub and are useful in open source projects that must review contributions from many different people.
We actually started out on Travis CI, but we've migrated our main builds to CircleCI, and it's been a huge improvement.
The reason it's been a huge improvement is that Travis CI has a fundamentally bad design for their images, where they start with a standard base Linux image containing tons of packages (several versions of postgres, every programming language environment, etc). This is potentially nice for the "get builds for a small project running quickly" use case, but it's a total disaster for a larger project that needs a decent number of dependencies and cares about the performance and reliability of their build.
This issue is exacerbated by their networking infrastructure being unreliable; we usually saw over 1% of builds failing due to transient networking errors in Travis CI, even after we added retries to the most frequently failing operations like
apt update or
pip install. And they never install Ubuntu's point release updates to their images. So doing an
apt install, or especially
apt upgrade would take forever. We ended up writing code to actually uninstall many of their base packages and pin the versions of hundreds of others to get a semi-fast, semi-reliable build. It was infuriating.
The CircleCI v2.0 system has the right design for a CI system: we can customize the base image to start with any expensive-to-install packages we need for our build, and we can update that image if and when we want to. The end result is that when migrating, we were able to delete all the hacky optimizations mentioned above, while still ending up with a 50% faster build latency. And we've also had 5-10x fewer issues with networking-related flakes, which means one doesn't have to constantly check whether a build failure is actually due to an issue with the code under test or "just another networking flake".
I use Google Cloud Build because it's my first foray into the CICD world(loving it so far), and I wanted to work with something GCP native to avoid giving permissions to other SaaS tools like CircleCI and Travis CI.
I really like it because it's free for the first 120 minutes, and it's one of the few CICD tools that enterprises are open to using since it's contained within GCP.
One of the unique things is that it has the Kaniko cache, which speeds up builds by creating intermediate layers within the docker image vs. pushing the full thing from the start. Helpful when you're installing just a few additional dependencies.
Feel free to checkout an example: Cloudbuild Example
In the past we used to run Jenkins. The build server always had weird issues and was a pain to maintain. Travis is a great solution for CI. Their Debug build features makes it trivial to figure out why your build broke. The integration with Github is also very slick. One thing they could improve is the documentation on the .travis.yaml format. All in all, great company and very responsive supports. Over here at getstream.io we're a fan. Keep up the good work guys!
Travis CI is our pillar for automated deployment, pull request testing, auto-merging (for non-mission-critical projects), and build testing per commit / release.
It is highly configurable, super cheap, and extremely robust (supports every language and configuration we've thrown at it).
While we usually run tests before commits, Travis goes further and tests with different Python versions and different database backends. It works great, and, best of all, it is free for open source projects.
Travis CI builds and tests every commit. It's also used to deploy Buildtime Trend as a Service to Heroku and the Buildtime Trend Python library to the PyPi repository.
Travis CI is critical for Linux and macOS CI tests for the Powershell module. Travis runs the same tests we run in AppVeyor in parallel.