[TOC]
# Ajout du certificat MERIO au magasin des certificats Ubuntu
[Source : *Installing a root CA certificate in the trust store*](https://ubuntu.com/server/docs/security-trust-store)
Le root certificate est ajouté au magasin des certificats Ubuntu via le paquet `ca-certificates`.
:::warning
Pour que l'ajout du certificat soit pris en compte, son extension doit être changée (elle doit être `.crt`) :
```BASH=
mv merioCA.pem merioCA.crt
```
:::
```BASH=
sudo apt-get install -y ca-certificates // Installation du paquet ca-certificates
sudo cp merioCA.crt /usr/local/share/ca-certificates // Copie du certificat dans le dossier du magasin des certificats
sudo update-ca-certificates // Actualisation du magasin des certificats
```
:::info
Les commandes systèmes Ubuntu se connectant aux adresses des certificats (`curl`, `wget`, ...) ne revoient plus d'erreur de verification des certificats :
```curl https://192.168.10.102``` renvoie

:::
# Installation du `Docker Engine `
## Installation via les `apt repository`
[Source : Documentation officielle](https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository)
```BASH=
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
```
On peut controller la bonne execution du service Docker par la commande :
```
sudo service docker status
```

# Installation de `gitlab-runner`
## Via le paquet `deb`
[Source : Using deb/rpm package](https://docs.gitlab.com/runner/install/linux-manually.html#using-debrpm-package)
On reccupère la paquet via la commande :
```BASH=
curl -LJO "https://s3.dualstack.us-east-1.amazonaws.com/gitlab-runner-downloads/latest/deb/gitlab-runner_amd64.deb"
```
:::info
Le paquet est disponible pour plusieurs types d'architecture processeur :
`gitlab-runner_amd64.deb`, `gitlab-runner_arm.deb`, `gitlab-runner_arm64.deb`, ...
cf : [Liste complète](https://s3.dualstack.us-east-1.amazonaws.com/gitlab-runner-downloads/latest/index.html)
:::
# Création et enregistrement d'un *`project runner`*
## Création du `project runner`
Un `project runner` est un runner n'executant que les jobs de certains projets. Ils ne sont généralement dédié qu'à un seul projet.
Le `project runner` doit premièrement être créé côté GitLab. Cela peut être fait depuis l'interface web :
- Menu **Settings -> CI/CD**

- Menu **Runners** -> **Collapse** -> **New project Runner**

- Cocher **Run untagged jobs**
- Cocher **Lock to current projects**
- Cliquer sur **Create Runner**

On obtient la fenetre suivante indiquant la commande :
```BASH=
gitlab-runner register --url <gitlab instance url> --token <project runner token>
```

## Enregistrement du *`project runner`*
Le runner créé doit maintenant être enregistrée par le demon `gitlab-runner` executé sur notre machine dédiée au test : on dit qu'on **enregistre le runner**
Il suffit pour cela d'executer la commande donnée à l'écran precedent, affiché lors de la création du runner sur GitLab :
```BASH=
sudo gitlab-runner register --url <gitlab instance url> --token <project runner token>
```
Plusieurs options sont à renseigner en ligne de commande :

- **GitLab instance URL** : https://192.168.10.102
- **Name for the runner** : RunnerTest01
*N'est pas forcement identique à celui renseigné sur GitLab*
- **Executor** : docker
*Les jobs seront executés au sein d'un container docker*
- **default Docker image** : ruby:2.7
*Image Docker prise comme base par les containers executant les tests*
N'est pas utilisée ici
La configuration du runner a été ajooutée au fichier `/etc/gitlab-runner/config.toml` :

# Lancement de `gitlab-runner`
`gitlab-runner` peut être lancé via la commande :
```
sudo gitlab-runner run
```
Cette commande lit les runner devant êtres configurés dans le fichier `config.toml`
Sans `sudo`, `gitlab-runner` est lancé en `user-mode` :

La configuration n'est, dans ce cas pas localisée au même endroit :
- **`user-mode`** : `/home/<user>/.gitlab-runner/config.toml`
- **`system-mode `** : `/etc/gitlab-runner/config.toml`
`gitlab-runner` lancé en `system-mode` :

# Sources
- [Tutorial: Create, register, and run your own project runner](https://docs.gitlab.com/ee/tutorials/create_register_first_runner/)