ADR-0003 Use GitLab

Date2021-05-11
StatusAccepted

Context

We should keep source code and documentation for the eTryOn project under version control. Most developers these days are familiar with git, a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

Although git is a distributed system, most projects use a centralised hub to host their repositories and facilitate collaboration.

In addition to repository hosting, we will need a platform for building and testing any software we develop. Running tests and builds in a controlled environment (usually a Docker container) ensures reproducibility, and avoids “works on my machine” syndrome.

Two popular platforms for hosting git repositories are GitHub and GitLab; both offer free plans for small teams and provide facilities for continuous integration (automated testing and building) and collaboration (issue tracking, merge requests and review).

Decision

We will use GitLab to host our git repositories.

We will use GitLab CI to build and test our software.

Consequences

We will have a central place to host repositories where everyone on the team can find them.

We can automate building and testing of software in Docker containers (or, if necessary, custom runners).

We can use GitLab to manage and review merge requests, facilitating collaboration on shared projects.

We also have the option of using GitLab’s DevOps tooling to help with deploying software and cloud infrastructure.

Although GitLab’s basic plan is free, it comes with limited storage and CI/CD minutes. If we exceed these quotas we may need to purchase additional resources.