GitLab - a tool for governance, versioning, CI/CD and project management

November 5, 2019

Lang: cs en de es

If something is done (typically software development) it is usually a project and it needs to be managed somehow. For small, short-term tasks it is often enough to make regular entries, but that depends on the choice. You need to write down information about the project - i.e. create documentation. One of my documentation is Program source code needs to be versioned, that's why, so that you can navigate the development process and deploy changes efficiently. And ideally the routine work is automated.



The first thing that should be done in software development is to version the application source code. Without this, no orderly and efficient development can be done. The standard for versioning today (2019) is GIT, which was primarily developed for the Linux kernel, but its qualities have made it so widespread that it has overtaken all other source code versioning tools

Video on versioning

Project Management Tools

There has long been an excellent redmine tool for task management. In software development, tools like GitHub and Bitbucket have proliferated, which are handled in the form of a web application. The functionality that GitHub and Bitbucket have is also included in the excellent GitLab, which provides additional connectivity options, plus you can run it on your own server that you control.

What GitLab does

GitLab does a lot, here are its main features and functionality:

  • GitLab is a web application
  • Manage users and their rights
  • Managing Git repositories
  • Displaying changes that have been made to a Git repository
  • Managing tasks
  • CI/CD - automating change incorporation and deployment
  • Wiki - documentation management


As for most of the technologies I describe, a Linux server is required for GitLab. GitLab uses a PostgreSQL database. GilLab is commonly installed with a Nginx web server, but it can also be preceded by Apache as a proxy web server - for example, if you already have an Apache web server installed and don't want to/can't change the webserver. GitLab uses Redis (as a cache). GitLab is written in Ruby, specifically in the RubyOnRails web framework.

Here is a commented video of GitLab installation:

If you don't have experience with Linux administration and installing server applications, I recommend that you have GitLab installed professionally followed by support, updates, and training.

Practical Uses

The first thing you'll need to do in GitLab is to create a user. Then you create a project and assign rights to the project to each user as needed.

A user with sufficient permissions can download the repository and push changes. These individual changes (commits) can then be viewed in the web interface.

Using the Gitlab web interface you can fork a project, merge branches, etc...

In Gitlab, you can create tasks (issues) that need to be solved. And then assign a status to these tasks and put someone in charge of the task. You can also assign labels to tasks and filter them later. A task also has statuses: for example, open, approved, tested, deployed, closed, and you can create other custom statuses. Comments and attachments can of course be added to individual tasks. Tasks can be viewed or visually tracked on the Board. Tasks can be assigned to a milestone, which is a stage in which the tasks need to be completed. Typically, these may be functions that need to be implemented to accomplish some complex functionality.

GitLab has an integrated Wiki and users can write notes and create project documentation in it.

GitLab can also be set to automatically run the build application. It will automatically run tests and eventually deploy the application to production.


Video tutorial on the basics of using GIT:

GitLab video tutorials

Short video tutorials on how to use GitLab and its various features. All tutorials are in youtube playlist of GitLab.

GitLab - create a project

In this video tutorial you will see how to log in to a project, how to create a project and how to clone a Git repository to yourself at make a change and push that change to the central repository.

GitLab - task/issue creation

Video tutorial on how to create an issue/task in GitLab, how to fill it, what options it has and how to work with the task to work with.

GitLab - whiteboard

A video tutorial on what a board/table in GitLab looks like, what it's for, and how to use it.


GitLab can be seen as a necessary foundation in this day and age (2019), for effective development and collaboration in the implementation of software projects. Verify project source code and use the tool for project management when you have multiple people and long-term projects!

For writing and versioning ddocuments where the result is to be a PDF document, the LaTex tool comes in handy, which I have also used to create Ebook: linux server administrator's notes.

Articles on a similar topic

Printing images in Linux
Artificial Intelligence: dalle2, Chat GPT
Application design using UML using Umbrello
Nextcloud - data and applications in the cloud


If you are interested in receiving occasional news by email.
You can register by filling in your email news subscription.