GitLab CI is a Continuous Integration platform, providing a compact solution for deploying your code via pipelines.
I’ve been using Jenkins 1.x for a while, but I got really tired of having to manually create and config each job. GitLab CI automatically detects push to branches that contain a .gitlab-ci.yml file and automatically executes the script, so you can control the entire CI process in a single version-controlled file, which is awesome! This is possible because GitLab manages all your repositories so it always knows when you push code.
What I like about GitLab CI:
- .gitlab-ci.yml in YAML and version-controlled
- Automatic discovery of branches that contain a .gitlab-ci.yml
- Automatic discovery of repositories (because GitLab manages them)
- Docker support
- Distributed cross-platform runners
- Tagged runners (e.g. Windows, Linux)
- Manually run jobs/stages
But it also has some disadvantages:
Pipeline UI is too simple
Simple is good but too simple is not. I think the pipeline view could be improved and made more condensed.
Pipeline progress doesn’t update asynchronously in UI
This is major because you shouldn’t have to refresh the page to see if the build succeeded or failed. Come on, this is crucial.
Slack notifications on build/pipeline events are not informative enough
We use Slack a lot and like to keep track of progress and status of builds in our channel. The Slack notifications look the same for the pipeline and build events and do not display information like the stage or job names. It only displays the project name, commit hash and status, so you have to click on it to get more information. I think it could be improved.