Read First: Concepts
GitLab and SSH keys | GitLab GitLab integrates with the system-installed SSH daemon, designating a user (typically named git) through which all access requests are handled. Users connecting to the GitLab server over SSH are identified by their SSH key instead of their username. SSH client operations performed on the GitLab server wil be executed as this user. Although it is possible to modify the SSH configuration for this user to, e.g., provide a private SSH key to authenticate these requests by, this practice is not supported and is strongly discouraged as it presents significant security risks.
Connect GitLab with k8s
Connect GitLab with DigitalOcean’s Kubernetes - Jool Software Professionals - Medium Adding kubernetes cluster to our private gitlab server | DigitalOcean How to connect to Kubernetes from GitLab? | DigitalOcean
How to upgrade GitLab
Migrate to PostgreSQL
Support for MySQL was removed in GitLab 12.1. Existing users using GitLab with MySQL/MariaDB are advised to migrate to PostgreSQL before upgrading.
GitLab Runners: Configure
Jenkins 2 and GitLab CI [Comparison] - inovex-Blog Most important difference: Jenkins 2 has full support for plugins, written in the widely-spread Java language. In contrast, GitLab CI currently does not come with plugin support.
Drone has Auto-scaler for runners on Heztner but also has GitLab CI - Install for Hetzner Cloud | Drone GitHub - mawalu/hetzner-gitlab-runner: Autoscale gitlab ci runners on hetzner cloud gitlab hetzner autoscaler - Google Search
CI servers: all will run some scripts on a server/Docker image.
They allow you to execute shell/bat scripts from a YAML file definition. Jenkins is much more pluggable, and comes with a UI. This can be either an advantage or disadvantage, depending on your needs.
Jenkins is easier to use Jenkins has a GUI
The default interaction model with Jenkins, historically, has been very web UI driven, requiring users to manually create jobs, then manually fill in the details through a web browser. With the introduction of the Pipeline plugin, users now can implement a project’s entire build/test/deploy pipeline in a Jenkinsfile and store that alongside their code
Continuous Integration Continuous Integration is the process of testing all changes made to your projects code, automatically.
This process will usually involve steps like:
- Unit tests
- Functional tests
- Integration tests
- Performance tests (have a look at Blackfire)
- Quality checks
- More generally, Continuous Integration aims to check automatically as many aspects of your code as possible to decrease the amount of review time and to avoid review mistakes