Gitlab

We have all our source code on our Gitlab.

For those unfamiliar with Gitlab, a small introduction. In Gitlab, everything work-related is done at the Project level. A Project hosts the code base (Git) and can contain additional features like issues tracking, a Wiki and CI.

A Group groups projects and/or users. On the one hand, regarding users, we have one group TEAM on our Gitlab, of which everyone from Codifly is a member.

On the other hand, we have a group for each of our customers, containing the projects for that customer (note that when we create multiple products for the same customer, we create a subgroup for each product, and then organize the projects in those subgroups).

Internal projects, like this bible, the Codibot and our website are stored in the codifly-group. We can see this as "we are our own customer" ;).

Some considerations:

  • Use kebab-case as casing convention for group and project names.
  • Keep project names as short as possible. For a customer Beton Deluxe, don't name the front end project beton-deluxe-front-end, but consider web. The group itself is part of the clone url, and otherwise we would get an unnecessary long clone url .../beton-deluxe/beton-deluxe-front-end.git.
  • For some projects, we work on the Git repositories of the customer. When we finish the project, we always keep a copy of the source code on our Gitlab. We then consistently use an -EXT-suffix in the project name.
  • When creating a group for a customer, always add the logo of the customer as image. This makes it easier to recall what's what.
  • After creating a new project, give access to the team via Settings > Members > Share with group (select the TEAM group with role permission Master). Also immediately go to Settings > General and enable the project features (e.g., Merge Requests, Wiki, Container Registry,...) necessary for the project. Only enable features that will actually be used, though.