Prototyping GitLab-based CI/CD for Erlang/OTP requires self-hosted instance of GitLab and a number of custom GitLab runners. The proposed solution is:
GitLab instance hosting: VM provided by DigitalOcean. Rationale: out of the box backup solution, inexpensive, good support. GitLab has Ultimate licensing program for non-profit organisations.
Test runners: bare metal servers running host-level virtualization solution (VMWare ESXi), with Linux, FreeBSD, Windows and more. Rationale: bound cost of bare-metal hosting.
Alternatives to GitLab considered:
GitHub Actions custom test runners attached to the Erlang/OTP repository. The alternative is still on the table, not moving forward for I lack the necessary experience with GHA. Volunteer help would be welcome to explore this more.
VM-hosted runners. This helps to avoid maintenance of bare-metal servers. But it also limits OS selection, and further limits what virtualization technologies can be utilised inside hosted VMs (e.g. nested virtualization capabilities are limited when renting a VM from cloud provider).
FreeBSD test runner (DigitalOcean VM, custom runner with Jails)
Ubuntu 20.04 test runner (custom VM, Docker runner)
Integration enabled:
prototype integration between GitLab and a fork of Erlang/OTP repo has been set up: https://ci.erlef.org/erlang/otp Be aware this is not a mirror of the official erlang/otp (for security reasons)
Project description: https://docs.google.com/document/d/1uNgQw2fFxtYn7nqhuARKymWODOWGAZ4UQnmja7qkIK4
One approach to implement the CI/CD complimenting GitHub is to use GitLab in CI/CD mode: https://docs.gitlab.com/ee/user/project/integrations/github.html
Prototyping GitLab-based CI/CD for Erlang/OTP requires self-hosted instance of GitLab and a number of custom GitLab runners. The proposed solution is:
Alternatives to GitLab considered:
Alternatives to deploy test runners:
sleep
calls, meaning that most of the time tests are sleeping, wasting compute time.