6 CI Tools Review by me
Tags: devops, productivity, beginners, computerscience
Published: 2020-01-04 15:34:53

In this couple of years, I'm blessed to have opportunities to try many CI/CD tools for building/deploying many services for production environment. From those opportunities, I realized that every tools has their pros and cons. So in this opportunity, I want to share my thoughts and point of view during use each of the tools. 
I will not create this review sequentially, but will be choose it random so number here it's not means better that the next or otherwise. 
Before I start, I would like to give some disclaimer, this review is based on my experiences only when using tools and for sharing purpose only. I'm not intending to harm/prejudice one product etc. Let's Start now:

# Gitlab
![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/jnojju8gcxt3coli2ot4.png)
I think this is a perfect CI/CD tools so far. Can easily fit from small-mid-large project. Have complete feature which can support our need. This is my first top choose if somebody ask me which CI/CD tool the best right now.
### Pros:
* Worldwide usage.
* Have many integration tool with other third party
* Have build-in tool for CI (Gitlab CI)
* Have build-in tool for Docker Repository
* Have Supporting tools which you can use for development product without use another tool (like project management and tracker, ci, git, repo, etc) and already integrated
* Having option to install on premise

### Cons:
* Doesn’t support GUI setup for CI/CD, only using Yaml file
* Some people are still trauma after posting problem at GItlab when the services down and many people cannot access their git

# CircleCI
![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/v5hecvdrrxx9ird4cxis.jpeg)
I think this CI tool is perfect for small to mid project and support for IOS, I think that's a great feature to have. Doesn't have build-in git is a big weakness of this tool. Having simple authorization/RBAC will be a big help for manage small project.
### Pros:
* Quite Popular
* Have multiple CI third party/community
* Support for IOS

### Cons:
* Doesn't have build-in git
* RBAC and Authorization not that great
* Support can be better
* Officially not support monorepo style (at that time, I use this tool at this year)

# Github Action
![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/2995cfotgqiremele8oq.png)
Having a nice GUI is one of the main strength from Github. Right now, they want to join in CI/CD tools competition. All their features are a combination of all existing CI/CD tools which already exist before, but they still looking for the best for them. With their rapid development now and their resources, in my opinion they can become serious CI/CD tool in the future
### Pros:
* Have nice UI
* New Hot Product
* Many new supporting tools coming

### Cons:
* Still not stable enough. Too much changes. and sometimes buggy
* Because still in development phase, new or current feature will have different cost in the future
* Support can be better

# Jenkins
![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/mj91b6wew7b06lq4dx4t.png)
I think this is the ultimate CI/CD tools so far. You can use/do anything right here. I think no use case which cannot be got cover/support by this tool since so many plugins you can use to cover your issue. The only issue with this, which also holds back this tool, I think you must install these tools somewhere in your environment and not support for yaml (Jenkins have their own language). And I feel a development of this product a little bit stall right now.
###Pros:
* You can do anything here. Literally.
* SO much plugin and support.
* Have great ecosistems

###Cons:
* Have different and too many configuration language which is sometimes make it harder for do the configuration
* Not officially support yaml
* You need to install and maintain the server
* Somehow I think the product a little bit stall in term of product development
```
NOTE: I am not use a third party managed jenkins like cloudbees. Since i think they are not a official one who develop Jenkins and just creating support environment for supporting jenkins.
```

# Bitbucket
![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/z7w3hhyl32zpmfm2c2gg.png)
This is interesting CI/CD tools where I have an opportunity to use it. All the features are decent, maybe not the best, but it gives the ability to solve my problem when creating the solution. If they can resolve the problem with the consistency of their service reliability and can find better pricing model, I think they can become a serious challenger for gitlab.
### Pros:
* Interesting product support environment (Jira, Trello, Confluence, etc)
* Have some useful feature like different environment for different stage

### Cons:
* All environment supporting tool in different product/standalone. so you need to subscribe and use different url/endpoint/etc to use it
* too much error happens like maintainance etc.

# VSTS
![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/ga11vsjz8nquzokz03kr.png)
I think this one is a decent tool from Microsoft. Have everything for success and become a serious contender for another mature tools.
### Pros:
* Have Supporting tools which you can use for development product without use another tool (like project management and tracker, ci, git, repo, etc) and already integrated
* Support mobile deployment (but for IOS, You still need another service/server which can support mac environment)
* Creating by Microsoft

### Cons:
* Creating by Microsoft
* Not that popular
* Looks like still not mature product

I think that's all review from me. This review is based on my opinion, so if you have another opinion than me please leave comments here. I will update it periodically if I think it's necessary.