GitLab Runner est un projet open source qui est utilisé pour exécuter vos travaux et renvoyer les résultats à votre plateforme GitLab. Il est utilisé en conjonction avec GitLab CI/CD, le service d'intégration continue open-source inclus avec GitLab qui coordonne les travaux.
GitLab Runner est écrit en Go et peut être exécuté comme un binaire unique.
Il est conçu pour fonctionner sur les systèmes d'exploitation GNU/Linux, macOS et Windows. Les autres systèmes d'exploitation fonctionneront probablement tant que vous pourrez compiler un binaire Go sur eux.
Si vous voulez utiliser Docker, installez la dernière version.
GitLab Runner nécessite un minimum de Docker v1.13.0.
La version GitLab Runner doit être synchronisée avec la version GitLab. Bien que les anciens Runners puissent toujours fonctionner avec les nouvelles versions de GitLab, et vice versa, dans certains cas, des fonctionnalités peuvent ne pas être disponibles ou fonctionner correctement s'il y a une différence de version.
La rétrocompatibilité est garantie entre les mises à jour de versions mineures, mais sachez que les mises à jour de versions mineures de GitLab peuvent introduire de nouvelles fonctionnalités qui nécessiteront que le Runner soit sur la même version mineure.
GitLab Runner peut être installé et utilisé sur GNU/Linux, macOS, FreeBSD et Windows. Vous pouvez l'installer à l'aide du Docker, télécharger le binaire manuellement ou utiliser le dépôt de paquets rpm/deb que GitLab propose.
Nous allons dans notre cas déployer le gitlab-runner sur une distribution Linux.
Pour installer le Runner :
Ajoutez le dépôt officiel du GitLab :
# For Debian/Ubuntu/Mint curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash # For RHEL/CentOS/Fedora curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
Installez la dernière version de GitLab Runner, ou passez à l'étape suivante pour installer une version spécifique :
# Pour Debian/Ubuntu/Mint sudo apt-get install gitlab-runner # Pour RHEL/CentOS/Fedora sudo yum install gitlab-runner
Il suffit de l'exécuter pour installer la dernière version :
# Pour Debian/Ubuntu/Mint sudo apt-get install gitlab-runner # Pour RHEL/CentOS/Fedora sudo yum install gitlab-runner
L'enregistrement d'un Runner est le processus qui lie le Runner à une instance GitLab.
Pour enregistrer un Runner sous GNU/Linux :
Exécutez la commande suivante :
sudo gitlab-runner register
Entrez l'URL de votre instance GitLab :
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/): http://gitlab.oowy.fr
Saisissez le jeton que vous avez obtenu pour inscrire le coureur :
Please enter the gitlab-ci token for this runner:
u7cQyssKyWHyUrdd-c-A
Entrez une description pour le Runner, vous pourrez la modifier plus tard dans l'interface utilisateur du GitLab :
Please enter the gitlab-ci description for this runner: [runner]: Generic Runner
Veuillez entrer les balises gitlab-ci pour ce runner
Please enter the gitlab-ci tags for this runner (comma separated):
Entrez l'exécuteur testamentaire du coureur :
Please enter the executor: docker+machine, docker-ssh+machine, shell, ssh, docker-ssh, parallels, virtualbox, kubernetes, custom, docker:
shell
Fin de la configuration du runner :
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
# docker run -d --name gitlab-runner --restart always \ -v /srv/gitlab-runner/config:/etc/gitlab-runner \ -v /var/run/docker.sock:/var/run/docker.sock \ gitlab/gitlab-runner:latest
Enregistrement
[user@docker ~]$ docker run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register Runtime platform arch=amd64 os=linux pid=8 revision=943fc252 version=13.7.0 Running in system-mode. Enter the GitLab instance URL (for example, https://gitlab.com/): https://gitlab.oowy.fr Enter the registration token: 4qD5Erkb9x3py15CMjSs Enter a description for the runner: [f0e9ac1fff98]: Docker-Runner Enter tags for the runner (comma-separated): Registering runner... succeeded runner=4qD5Erkb Enter an executor: docker, docker-ssh, parallels, shell, ssh, virtualbox, docker-ssh+machine, custom, kubernetes, docker+machine: docker Enter the default Docker image (for example, ruby:2.6): ruby:2.6 Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
Une fois le runner enregistré, celui-ci remonte dans gitlab
Ajouter le repository helm de gitlab.
bastion:~$ helm repo add gitlab https://charts.gitlab.io
Une fois que nous aurons configuré GitLab Runner dans un fichier values.yaml, nous exécuterons ce qui suit :
bastion:~$ helm install --namespace <NAMESPACE> gitlab-runner -f <CONFIG_VALUES_FILE> gitlab/gitlab-runner
Où :
Note:
Si l'on souhaite installer une version spécifique du Helm charts du GitLab Runner, ajoutez –version <RUNNER_HELM_CHART_VERSION>.
Création d'un fichier values.yaml avec les informations nécessaires pour que gitlab-runner se rattache à la plateforme gitlab
bastion:~$ nano values.yaml gitlabUrl: https://gitlab.oowy.fr/ runnerRegistrationToken: drJDdsg2js3LdBJED29d concurrent: 20 rbac: create: true clusterWideAccess: false runners: image: ubuntu:18.04 privileged: false builds: memoryRequests: 1000Mi
On créer le namespace gitlab-runner si ce dernier n'existe pas
bastion:~$ kubectl create ns gitlab-runner
On déploie le gitlab-runner
bastion:~$ helm install --namespace gitlab-runner gitlab-runner -f values.yaml gitlab/gitlab-runner
Votre dépôt gitlab est créé, vous avez cloner celui-ci, vous pouvez maintenant créer votre configuration.
Le fichier .gitlab-ci.yml est l'endroit ou vous allez configurer votre processus d'intégration continue. Il se place à la racine de votre projet.
A chaque push, GitLab va regarder dans ce fichier et lancer les tâches dans le Runner précédemment créer.
Je vous invite à créer ce fichier à la racine de votre projet et coller le contenu suivant :
build-job:
stage: build
script:
- echo "Hello, $GITLAB_USER_LOGIN!"
test-job1:
stage: test
script:
- echo "This job tests something"
test-job2:
stage: test
script:
- echo "This job tests something, but takes more time than test-job1."
- echo "After the echo commands complete, it runs the sleep command for 20 seconds"
- echo "which simulates a test that runs 20 seconds longer than test-job1"
- sleep 20
deploy-prod:
stage: deploy
script:
- echo "This job deploys something from the $CI_COMMIT_BRANCH branch."
Cette configuration créée 3 jobs : build, test et deploy. Ces jobs (=tâches) ne font rien à part écrire du texte.
Plus tard vous pourrez mettre toutes vos commandes comme “apt install, npm install, phpunit, gulp …”
On commit puis push le fichier :
git add .gitlab-ci.yml git commit -m "Add .gitlab-ci.yml" git push origin master
Sur l'interface GitLab, dans votre projet / CI/CD / Pipelines :
https://docs.gitlab.com/runner/
https://docs.gitlab.com/runner/commands/#gitlab-runner-uninstall
https://docs.gitlab.com/ee/ci/runners/#shared-runners
https://docs.gitlab.com/runner/install/docker.html
https://docs.gitlab.com/runner/register/index.html#docker
https://docs.gitlab.com/runner/install/kubernetes.html
https://gitlab.com/gitlab-org/charts/gitlab-runner/-/blob/master/values.yaml
https://docs.gitlab.com/ee/ci/docker/using_docker_build.html