What are the tools which you use for CI/CD at work?

Question 428 10 Jan 2017

Write answer

  • Sort By :
  • Popular
  • Recent

This answer has received 1 appreciation.

I've struggled with this for a while, actually. I really like Travis because of how fast it is, but it's too expensive for startups outside of the US and Europe. Great for open source projects, though.

For me and a lot of companies I've worked for, the general census is that hosting it yourself is just not worth the maintenance. You want to better maintain your projects so you hook them up to CI that you have to maintain yourself? Eek. No thank you. Of course I can understand that at scale you might want to - if you have the human resources to appoint specifically to that task. But it won't be any cheaper than using a hosted version.

I've reviewed quite a few CI/CD providers and I've found that there are two that none can compare to in terms of affordability and features in the context of startups and small businesses.

The first is Wercker - They have a free option for private projects, and while the jargon on their homepage is intimidating, once you jump into the simple admin interface (with pretty excellent UX and docs I might add), you'll find that thinking about your CD/CI pipeline is no different than thinking about your project's own build system - you can create workflows and pipelines - pipelines can depend on one another or run in parallel - meaning you can have a pipeline that runs your linting tools, and a pipeline that runs your tests that depends on your linting pipeline, then 2 pipelines that depend on the test pipeline that deploy your app to production and staging in parallel and so on. You could very easily set up a workflow that emails an announcement of a new feature when the PR for said feature is merged in. The limits are really up to your imagination. It is an extremely powerful concept (that you might be familiar with if you've ever used Gulp or the unix & and | characters). While I've given this service so much praise for it's simple and easy to understand admin interface, consider a little bias as I'm technically expertised - so it might not be as simple to understand for those on the business end of the company - investors, project managers, etc.

For those people, there is Buddy. It doesn't have support for multiple private projects on their free plan, but it is so easy to understand and use that I think it is definitely worth looking into if you want your remote repository, CI/CD and project management system to all be managed by the same system. Buddy doesn't just care about CI - they host your code, give you tools for project management and code review. Buddy is basically Trello/Github/Wercker if they were all imagined as part of the same UI, but designed to be easily understood by anyone in the company, not just the developers.

Ah, Wercker is too pricey. Their free plan only offers a multi tenant system and that sounds scary.

Edit: Buddy seems extremely easy to use and is very reasonably priced. :)

I am using the "classics"

  • jenkins
  • travis
  • docker
  • gitlab
  • github
  • bitbucket
  • fabric / ansible
  • ant (build)
  • phing (build)

I would like to test teamcity and bamboo but never had the chance in production. And I would love to spend some more time looking/testing/trying and/or developing such a tool :D

Different tools at different companies:

  • Gitlab CI
  • Jenkins
  • Custom-built CI server

At my day-job workplace we're primarily building Windows client/server software. The codebase is stored in SVN. We have a Jenkins installation and several dedicated build machines. SVN commit hooks trigger a Jenkins CI build.

In my freelance work, code is stored on BitBucket (git). Half of my work is Windows desktop/service work that does not use CI. The other half of my work, which is relevant to the question, is the JavaScript/TypeScript work.

Each repo is hooked up to CircleCI (which is free if your usage is low enough). The builds are controlled through a circle.yml file at the root of each repository. And then each repo also has deploy scripts written in JavaScript (only because I'm more comfortable writing JS than bash shell scripts).

The deploy scripts are invoked by CircleCI after a successful build. They zip the ./dist directory and use the AWS SDK to push the application package to Elastic Beanstalk or Lambda, depending on the project.

The build times are okay, I suppose. I don't really have anything to compare to. I believe they cache things like npm modules to speed up the build. Often the bottleneck is deploying to AWS itself (my staging environment is on a micro instance). My Lambda project builds are 4x faster... but they're going from TypeScript directly to ES5 whereas my Beanstalk project builds are TypeScript to ES6 to ES5 via Babel and the code base is much bigger (plus many more dependencies).

The build machines are supplied by CircleCI. It's all in the cloud.

I'm interested in getting into Amazon's Code Pipeline and Code Deploy stuff... but too many other things on my plate right now. Plus, I find that Amazon's platform and documentation isn't very approachable.

It is always better to offload much of your efforts to third party vendors, and focus on core business of what you are trying to do.

Travis has worked well for us. But then, you might face some issues if you are not using Github/Git variant. In that case, go for Jenkins etc.

http://drone.io does the trick for next to nothing when compared with the others. Of course CircleCI is great, and others can work, but Drone is great OSS that also has a wonderful hosted component.

My project goes from developing locally with docker-compose, then to GitHub, then to Drone, then runs tests, and if good, runs a deploy script that creates a Docker image and publishes to now.sh or AWS depending on project needs.

Jenkins at work

and Drone for personal projects

I usually have git/web hooks and my deploy is very simple git push production master. If something happens I just receive an email.

What GitHub/GitLab offers is also enough for me.

@spsiddarthan yes, something like that.

Git is also very powerful took which has own hooks without any web hooks. Here is a great intro article about Git hooks and how you can automate and save your time both on local machine and on server

https://www.digitalocean.com/community/tutorials/how-to-use-git-hooks-to-automate-development-and-deployment-tasks

What purpose do you use it for exactly? I can see GitLab and BitBucket has CI/CD, Pipelines, but maybe that's not the same? It's an area I must admit not to have had time to investigate enough but would like to know more about.

You're spot on :) However, when you want to scale, you should automate and focus only on writing code and not spend your time figuring out how to deploy.

Never miss an interesting discussion,
when you sign up for Hashnode. Learn more

loading ...