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. :)
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
| 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.
I am using the "classics"
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:
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.
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.
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.
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.