In early 2015, a work mate mentioned about Docker to me, and asked me to check it out. I did. 2 weeks later, I tore down my Chef infrastructure and replaced it with Docker instead. But soon, I realized that it was taking more than 40% of my time maintaining the build + deploy pipeline for my toys. I felt that CI tools like Jenkins and TeamCity were not designed for an abundance of small toys made in Docker containers. So, I started to look for CI tools to replace Jenkins.
I've researched and compared a number of CI tools. The ones that stand out the most are GitHub + Travis CI combo. GitHub has become the de facto source code repository for OSS. And every OSS repo would contain a .travis.yml file. It seems like everyone is using Github + Travis. And I thought, if everyone is using it and bragging about it, so it must be good for me, right? I was actually going to pull out my credit card and pay for them to replace Jenkins (a free tool).
Fortunately, I stumbled on GitLab. GitLab is a hidden gem among those heavily-marketed tools like GitHub, Travis CI. Don't get me wrong, GitHub and Travis CI are great tools. But if you are cheap like me, it pays to look a little harder for free and open source alternatives.
marketing > good tool
I think there could be two reasons for a tool to become popular among the dev community: #1: It is a good tool. #2: It has a substantial marketing budget. ** #2 trumps #1. Most open source tools would not have big marketing budget. That is why GitLab actually offers a lot more than GitHub but is much lesser known.
Beware of the propaganda
Yes, GitLab is not as elegant and popular as GitHub. And no, you don't get the same "cool factor" when you tell your peers your company uses GitHub. But that's just an effect of marketing and propaganda by the devs/bloggers out there.
GitHub + Travis CI = GitLab
With GitLab, you actually get everything you need from GitHub as a source control tool. Readme markdown page as the landing page. Issues tracking on the repo. Code review and pull(merge) request on the browser. But the best thing about GitLab is, you also get travis like CI too. A single config like .travis.yml (gitlab-ci.yml) commited into the source control to create and configure your build pipeline. Visualize your pipeline and know exactly what version is deploy in each environment. It even have Slack integrations to allow you to deploy to prod via Slack commands. See the screenshots below:
I just save you thousands of $$$
If you are a small team (less than 5 devs), Travis CI costs $69/month and GitHub costs $25/month. That totals to $1128 a year. GitLab Community Edition is free.
Step back and consider what you have been marketed (brain-washed) all these time. Other great examples of free lesser known tools vs expensive and popular tools:
- Let's Encrypt(free) vs GoDaddy($$$)
- VSCode(free) vs Sublime($$$)
- Elasticsearch(free) vs Splunk($$$)
- Kong(free) vs Apigee($$$)
- Gitbook(free) vs ReadMe.io($$$)
GitLab Merge Request
GitLab & Slack integration