Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Touraine Tech - Késako, il crée son propre runner GitLab quand il démarre son environnement de dev Gitpod

Touraine Tech - Késako, il crée son propre runner GitLab quand il démarre son environnement de dev Gitpod

Les runners GitLab sont la base de vos pipelines dans GitLab. Ils permettent d’exécuter les tâches qui vont permettre, par exemple, de packager et déployer vos applications.

Savez-vous qu’il est rapidement possible de créer son propre runner sur son poste ou sur tout autre type d’infrastructure ?

Au quotidien, je développe sur des environnements créés sur le Cloud avec Gitpod, et je me suis amusé à créer mon propre runner au démarrage de mon workspace.

Vous allez vous demander à quoi cela peut bien me servir ? Pourquoi j’ai fait cela ? Est-il fou ?

Dans ce talk après vous avoir présenté rapidement ce qu’est un runner, je vous montrerai comment j’ai configuré mon projet pour avoir mon propre runner GitLab créé et configuré au démarrage de mon workspace Gitpod 🤘

J'oubliais. Pour ce talk, pas de slide ! On profitera de l'emplacement pour le faire en mode décontracté. Quelques dessins permettront de vulgariser les termes techniques.

Jean-Phi Baconnais

February 05, 2024
Tweet

More Decks by Jean-Phi Baconnais

Other Decks in Programming

Transcript

  1. Késako ⁉, il crée son propre runner GitLab quand il

    démarre son environnement de dev Gitpod : 🤯 - 08/02/2024
  2. Késako ⁉, il crée son propre runner GitLab quand il

    démarre son environnement de dev Gitpod : 🤯 “Qu'es aquo ?”
  3. Késako ⁉, il crée son propre runner GitLab quand il

    démarre son environnement de dev Gitpod : 🤯
  4. Késako ⁉, il crée son propre runner GitLab quand il

    démarre son environnement de dev Gitpod : 🤯
  5. - Outil développé en Go - Permet d’exécuter les pipelines

    de vos projets - Différents types de runner : shared / group / specific - Plusieurs implémentations possibles : docker, kubernetes, ssh, etc.
  6. git add .gitlab-ci.yml && git commit -m “🚀 changes on

    CI” git add .gitlab-ci.yml && git commit -m “🚀 changes on CI” git add .gitlab-ci.yml && git commit -m “🚀 changes on CI” git add .gitlab-ci.yml && git commit -m “🚀 changes on CI” git add .gitlab-ci.yml && git commit -m “🚀 changes on CI” git add .gitlab-ci.yml && git commit -m “🚀 changes on CI” git add .gitlab-ci.yml && git commit -m “🚀 changes on CI” git add .gitlab-ci.yml && git commit -m “🚀 changes on CI” 👋 Ok c’est cool mais quel est le lien avec les 150 commits de modifications de CI ? 🤔 git add .gitlab-ci.yml && git commit -m “🚀 changes on CI” git add .gitlab-ci.yml && git commit -m “🚀 changes on CI” git add .gitlab-ci.yml && git commit -m “🚀 changes on CI”
  7. Création du runner docker container 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 https://unsplash.com/fr/@wasdrew
  8. https://unsplash.com/fr/@wasdrew docker container 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 Création du runner
  9. https://unsplash.com/fr/@wasdrew docker container 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 Création du runner
  10. https://unsplash.com/fr/@wasdrew docker container run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register

    \ --non-interactive \ --executor "docker" \ --docker-image ruby:2.7 \ --url "https://gitlab.com/" \ --registration-token $MY_CICD_REGISTRATION_TOKEN \ --description "gitpod-runner" \ --tag-list "gitpod" \ --access-level="not_protected" Création du runner
  11. https://unsplash.com/fr/@wasdrew docker container run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register

    \ --non-interactive \ --executor "docker" \ --docker-image ruby:2.7 \ --url "https://gitlab.com/" \ --registration-token $MY_CICD_REGISTRATION_TOKEN \ --description "gitpod-runner" \ --tag-list "gitpod" \ --access-level="not_protected" Création du runner
  12. https://unsplash.com/fr/@wasdrew docker container run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register

    \ --non-interactive \ --executor "docker" \ --docker-image ruby:2.7 \ --url "https://gitlab.com/" \ --registration-token $MY_CICD_REGISTRATION_TOKEN \ --description "gitpod-runner" \ --tag-list "gitpod" \ --access-level="not_protected" Création du runner
  13. https://unsplash.com/fr/@wasdrew docker container run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register

    \ --non-interactive \ --executor "docker" \ --docker-image ruby:2.7 \ --url "https://gitlab.com/" \ --registration-token $MY_CICD_REGISTRATION_TOKEN \ --description "gitpod-runner" \ --tag-list "gitpod" \ --access-level="not_protected" Création du runner
  14. 🗑 Suppression de Runner Récupérer le token créé dans le

    fichier config.toml à la création du Runner. Solliciter l’API de GitLab pour supprimer le Runner. https://unsplash.com/fr/@roman_lazygeek
  15. https://unsplash.com/fr/@roman_lazygeek export RUNNER_TOKEN= $(sudo grep 'token =' /srv/gitlab-runner/config/config.toml | sed

    's/token =//g' | tr -d '"') curl --request DELETE "https://gitlab.com/api/v4/runners" --form "token=$RUNNER_TOKEN" 🗑 Suppression de Runner
  16. https://unsplash.com/fr/@roman_lazygeek export RUNNER_TOKEN= $(sudo grep 'token =' /srv/gitlab-runner/config/config.toml | sed

    's/token =//g' | tr -d '"') curl --request DELETE "https://gitlab.com/api/v4/runners" --form "token=$RUNNER_TOKEN" 🗑 Suppression de Runner
  17. https://unsplash.com/fr/@roman_lazygeek 👍 Le faire en automatique à la suppression du

    workspace Issue https://github.com/gitpod-io/gitpod/issues/3966 🗑 Suppression de Runner
  18. https://unsplash.com/fr/@roman_lazygeek - Action faite par l’utilisateur (s’il y pense 😇)

    alias sr='curl --request DELETE "https://gitlab.com/api/v4/runners" --form "token=$RUNNER_TOKEN"' 🗑 Suppression de Runner
  19. https://unsplash.com/fr/@roman_lazygeek 🗑 Suppression de Runner - Action faîte en utilisant

    des signaux - name: Shutdown GitLab Runner command: | function shutdown() { export RUNNER_TOKEN=$(sudo grep 'token =' /srv/gitlab-runner/config/config.toml | sed 's/token =//g' | tr -d '"') curl --request DELETE "https://gitlab.com/api/v4/runners" --form "token=$RUNNER_TOKEN" } trap 'shutdown' SIGINT SIGQUIT SIGTERM; exec {sfd}<> <(:); until read -t 3600 -u $sfd; do continue; done;
  20. https://unsplash.com/fr/@roman_lazygeek 🗑 Suppression de Runner - name: Shutdown GitLab Runner

    command: | function shutdown() { export RUNNER_TOKEN=$(sudo grep 'token =' /srv/gitlab-runner/config/config.toml | sed 's/token =//g' | tr -d '"') curl --request DELETE "https://gitlab.com/api/v4/runners" --form "token=$RUNNER_TOKEN" } trap 'shutdown' SIGINT SIGQUIT SIGTERM; exec {sfd}<> <(:); until read -t 3600 -u $sfd; do continue; done; - Action faîte en utilisant des signaux
  21. https://unsplash.com/fr/@roman_lazygeek 🗑 Suppression de Runner - name: Shutdown GitLab Runner

    command: | function shutdown() { export RUNNER_TOKEN=$(sudo grep 'token =' /srv/gitlab-runner/config/config.toml | sed 's/token =//g' | tr -d '"') curl --request DELETE "https://gitlab.com/api/v4/runners" --form "token=$RUNNER_TOKEN" } trap 'shutdown' SIGINT SIGQUIT SIGTERM; exec {sfd}<> <(:); until read -t 3600 -u $sfd; do continue; done; - Action faîte en utilisant des signaux
  22. https://unsplash.com/fr/@roman_lazygeek 🗑 Suppression de Runner - name: Shutdown GitLab Runner

    command: | function shutdown() { export RUNNER_TOKEN=$(sudo grep 'token =' /srv/gitlab-runner/config/config.toml | sed 's/token =//g' | tr -d '"') curl --request DELETE "https://gitlab.com/api/v4/runners" --form "token=$RUNNER_TOKEN" } trap 'shutdown' SIGINT SIGQUIT SIGTERM; exec {sfd}<> <(:); until read -t 3600 -u $sfd; do continue; done; - Action faîte en utilisant des signaux
  23. https://unsplash.com/fr/@roman_lazygeek - name: Shutdown GitLab Runner command: | function shutdown()

    { export RUNNER_TOKEN=$(sudo grep 'token =' /srv/gitlab-runner/config/config.toml | sed 's/token =//g' | tr -d '"') curl --request DELETE "https://gitlab.com/api/v4/runners" --form "token=$RUNNER_TOKEN" } trap 'shutdown' SIGINT SIGQUIT SIGTERM; exec {sfd}<> <(:); until read -t 3600 -u $sfd; do continue; done;
  24. https://unsplash.com/fr/@roman_lazygeek 🗑 Suppression de Runner - Action faite par l’utilisateur

    (s’il y pense 😇) - Action automatique quand le workspace est arrêté ou expiré
  25. https://unsplash.com/fr/@roman_lazygeek 🗑 Suppression de Runner tasks: - name: Shutdown GitLab

    Runner command: | function shutdown() { [...] } trap 'shutdown' SIGINT SIGQUIT SIGTERM; [...]
  26. https://unsplash.com/fr/@roman_lazygeek 🗑 Suppression de Runner tasks: - name: Shutdown GitLab

    Runner command: | function shutdown() { [...] } trap 'shutdown' SIGINT SIGQUIT SIGTERM; [...] - name: Terminal init: | echo '🦊 Install GitLab Runner' [...] alias sr='curl --request DELETE "https://gitlab.com/api/v4/runners" --form "token=$RUNNER_TOKEN"'
  27. Intérêts ? - Limiter sa consommation de CI avec de

    “vrais” pipelines - 💡 Pour les ateliers / formations - 💡 Avoir son Runner avec une configuration simple et adaptable à son besoin - Ne pas être dépendant de GitLab
  28. Késako ⁉, il crée son propre runner GitLab quand il

    démarre son environnement de dev Gitpod : 🤯 Repository GitLab : https://gitlab.com/jeanphi-baconnais/gitpod-create-gitlab-runner Cheatsheet GitLab Runner : https://dev.to/zenika/gitlab-cheatsheet-2-runners-2ib Cheatsheet Gitpod : https://dev.to/zenika/gitpod-cheatsheet-2ek6 Gitpod Issue d’action on stop : https://github.com/gitpod-io/gitpod/issues/3966