TeamCity聽vs聽Travis CI

Get Advice Icon

Need advice about which tool to choose?Ask the StackShare community!

TeamCity
TeamCity

657
438
+ 1
290
Travis CI
Travis CI

4.5K
3.1K
+ 1
1.7K
Add tool

TeamCity vs Travis CI: What are the differences?

TeamCity: TeamCity is an ultimate Continuous Integration tool for professionals. TeamCity is a user-friendly continuous integration (CI) server for professional developers, build engineers, and DevOps. It is trivial to setup and absolutely free for small teams and open source projects; 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.

TeamCity and Travis CI can be categorized as "Continuous Integration" tools.

Some of the features offered by TeamCity are:

  • Automate code analyzing, compiling, and testing processes, with having instant feedback on build progress, problems, and test failures, all in a simple, intuitive web-interface
  • Simplified setup: create projects from just a VCS repository URL
  • Run multiple builds and tests under different configurations and platforms simultaneously

On the other hand, Travis CI provides the following key features:

  • Easy Setup- Getting started with Travis CI is as easy as enabling a project, adding basic build instructions to your project and committing code.
  • Supports Your Platform- Lots of databases and services are pre-installed and can simply be enabled in your build configuration, we'll launch them for you automatically. MySQL, PostgreSQL, ElasticSearch, Redis, Riak, RabbitMQ, Memcached are available by default.
  • Deploy With Confidence- Deploying to production after a successful build is as easy as setting up a bit of configuration, and we'll deploy your code to Heroku, Engine Yard Cloud, Nodejitsu, cloudControl, OpenShift, and CloudFoundry.

"Easy to configure" is the top reason why over 52 developers like TeamCity, while over 505 developers mention "Github integration" as the leading cause for choosing Travis CI.

Lyft, Heroku, and MIT are some of the popular companies that use Travis CI, whereas TeamCity is used by Stack Exchange, Yammer, and AX Semantics. Travis CI has a broader approval, being mentioned in 666 company stacks & 613 developers stacks; compared to TeamCity, which is listed in 168 company stacks and 51 developer stacks.

- No public GitHub repository available -
- No public GitHub repository available -

What is TeamCity?

TeamCity is a user-friendly continuous integration (CI) server for professional developers, build engineers, and DevOps. It is trivial to setup and absolutely free for small teams and open source projects.

What is Travis CI?

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.
Get Advice Icon

Need advice about which tool to choose?Ask the StackShare community!

Why do developers choose TeamCity?
Why do developers choose Travis CI?

Sign up to add, upvote and see more prosMake informed product decisions

What companies use TeamCity?
What companies use Travis CI?

Sign up to get full access to all the companiesMake informed product decisions

What tools integrate with TeamCity?
What tools integrate with Travis CI?

Sign up to get full access to all the tool integrationsMake informed product decisions

What are some alternatives to TeamCity and Travis CI?
Jenkins
In a nutshell Jenkins CI is the leading open-source continuous integration server. Built with Java, it provides over 300 plugins to support building and testing virtually any project.
Appveyor
AppVeyor aims to give powerful Continuous Integration and Deployment tools to every .NET developer without the hassle of setting up and maintaining their own build server.
Octopus Deploy
Octopus Deploy helps teams to manage releases, automate deployments, and operate applications with automated runbooks. It's free for small teams.
Hudson
It monitors the execution of repeated jobs, such as building a software project or jobs run by cron. Among those things, currently it focuses on the two jobs
Bamboo
Focus on coding and count on Bamboo as your CI and build server! Create multi-stage build plans, set up triggers to start builds upon commits, and assign agents to your critical builds and deployments.
See all alternatives
Decisions about TeamCity and Travis CI
Jesus Dario Rivera Rubio
Jesus Dario Rivera Rubio
Telecomm Engineering at Netbeast | 10 upvotes 173.9K views
atNetbeastNetbeast
React Native
React Native
Android SDK
Android SDK
Objective-C
Objective-C
Travis CI
Travis CI
Bitrise
Bitrise
GitHub
GitHub
Firebase
Firebase
Amplitude
Amplitude
Intercom
Intercom
Mailjet
Mailjet
#SmartHome
#End2end

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.

Also it helps us set different testing stages: we use Travis CI for the javascript (business logic), Bitrise to run build tests and @Detox for #end2end automated user tests.

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.

See more
Tymoteusz Paul
Tymoteusz Paul
Devops guy at X20X Development LTD | 15 upvotes 381.5K views
Vagrant
Vagrant
VirtualBox
VirtualBox
Ansible
Ansible
Elasticsearch
Elasticsearch
Kibana
Kibana
Logstash
Logstash
TeamCity
TeamCity
Jenkins
Jenkins
Slack
Slack
Apache Maven
Apache Maven
Vault
Vault
Git
Git
Docker
Docker
CircleCI
CircleCI
LXC
LXC
Amazon EC2
Amazon EC2

Often enough I have to explain my way of going about setting up a CI/CD pipeline with multiple deployment platforms. Since I am a bit tired of yapping the same every single time, I've decided to write it up and share with the world this way, and send people to read it instead ;). I will explain it on "live-example" of how the Rome got built, basing that current methodology exists only of readme.md and wishes of good luck (as it usually is ;)).

It always starts with an app, whatever it may be and reading the readmes available while Vagrant and VirtualBox is installing and updating. Following that is the first hurdle to go over - convert all the instruction/scripts into Ansible playbook(s), and only stopping when doing a clear vagrant up or vagrant reload we will have a fully working environment. As our Vagrant environment is now functional, it's time to break it! This is the moment to look for how things can be done better (too rigid/too lose versioning? Sloppy environment setup?) and replace them with the right way to do stuff, one that won't bite us in the backside. This is the point, and the best opportunity, to upcycle the existing way of doing dev environment to produce a proper, production-grade product.

I should probably digress here for a moment and explain why. I firmly believe that the way you deploy production is the same way you should deploy develop, shy of few debugging-friendly setting. This way you avoid the discrepancy between how production work vs how development works, which almost always causes major pains in the back of the neck, and with use of proper tools should mean no more work for the developers. That's why we start with Vagrant as developer boxes should be as easy as vagrant up, but the meat of our product lies in Ansible which will do meat of the work and can be applied to almost anything: AWS, bare metal, docker, LXC, in open net, behind vpn - you name it.

We must also give proper consideration to monitoring and logging hoovering at this point. My generic answer here is to grab Elasticsearch, Kibana, and Logstash. While for different use cases there may be better solutions, this one is well battle-tested, performs reasonably and is very easy to scale both vertically (within some limits) and horizontally. Logstash rules are easy to write and are well supported in maintenance through Ansible, which as I've mentioned earlier, are at the very core of things, and creating triggers/reports and alerts based on Elastic and Kibana is generally a breeze, including some quite complex aggregations.

If we are happy with the state of the Ansible it's time to move on and put all those roles and playbooks to work. Namely, we need something to manage our CI/CD pipelines. For me, the choice is obvious: TeamCity. It's modern, robust and unlike most of the light-weight alternatives, it's transparent. What I mean by that is that it doesn't tell you how to do things, doesn't limit your ways to deploy, or test, or package for that matter. Instead, it provides a developer-friendly and rich playground for your pipelines. You can do most the same with Jenkins, but it has a quite dated look and feel to it, while also missing some key functionality that must be brought in via plugins (like quality REST API which comes built-in with TeamCity). It also comes with all the common-handy plugins like Slack or Apache Maven integration.

The exact flow between CI and CD varies too greatly from one application to another to describe, so I will outline a few rules that guide me in it: 1. Make build steps as small as possible. This way when something breaks, we know exactly where, without needing to dig and root around. 2. All security credentials besides development environment must be sources from individual Vault instances. Keys to those containers should exist only on the CI/CD box and accessible by a few people (the less the better). This is pretty self-explanatory, as anything besides dev may contain sensitive data and, at times, be public-facing. Because of that appropriate security must be present. TeamCity shines in this department with excellent secrets-management. 3. Every part of the build chain shall consume and produce artifacts. If it creates nothing, it likely shouldn't be its own build. This way if any issue shows up with any environment or version, all developer has to do it is grab appropriate artifacts to reproduce the issue locally. 4. Deployment builds should be directly tied to specific Git branches/tags. This enables much easier tracking of what caused an issue, including automated identifying and tagging the author (nothing