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

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

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 🤘

Jean-Phi Baconnais

February 02, 2023
Tweet

More Decks by Jean-Phi Baconnais

Other Decks in Technology

Transcript

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

    démarre son environnement de dev Gitpod : 🤯 Crédit Image : Very Tech Trip - 02/02/2023
  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. 👋 Ok c’est cool mais quel est le lien avec

    les 150 commits de modifications de 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
  8. 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. 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. 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. 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. 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. 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.
  15. 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. 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. 👍 Le faire en automatique à la suppression du workspace

    Issue https://github.com/gitpod-io/gitpod/issues/3966 🗑 Suppression de Runner
  18. - 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. 🗑 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. 🗑 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. 🗑 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. 🗑 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. - 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. 🗑 Suppression de Runner - Action faite par l’utilisateur (s’il

    y pense 😇) avec la fermeture de l’onglet - Action automatique quand le workspace est arrêté ou expiré
  25. 🗑 Suppression de Runner tasks: - name: Shutdown GitLab Runner

    command: | function shutdown() { [...] } trap 'shutdown' SIGINT SIGQUIT SIGTERM; [...]
  26. 🗑 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 : 🤯 - 02/02/2023 Crédit Image : Very Tech Trip 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
  29. Késako ⁉, il crée son propre runner GitLab quand il

    démarre son environnement de dev Gitpod : 🤯 - 02/02/2023 Crédit Image : Very Tech Trip Merci pour votre attention ! 🙏 JPhi_Baconnais