gitlab runner (Powershell)

https://jeremyberglund.com/docker-gitlab-runner

 

Créer un Gitlab Runner avec Docker

  1. Installer docker desktop
    1. Téléchargez l'installateur
    2. Installez Docker puis ouvrez CMD et tapez docker version (Est-ce qu'il fonctionne correctement?)
  2. Étant donné que Docker n'a pas été conçu pour windows, vous devrez activer Hyper-V s'il n'est pas déjà activé sur la machine hôte.
    1. Le moyen le plus simple d'utiliser PowerShell. Ouvrez un terminal PowerShell en tant qu'administrateur
    2. Exécutez Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
    3. Redémarrez la machine
  3. Vous devrez choisir un répertoire à utiliser comme répertoire «home» de votre runner Gitlab. Cela stockera les fichiers de configuration ou tout ce dont le coureur a besoin pour persister
    1. J'aime utiliser C:\gitlab-runner
    2. Ajouter un répertoire config dans le nouveau “home” (par ex. C:\gitlab-runner\config)
  4. Ensuite, nous allons créer un conteneur Docker pour le runner, qui récupérera les tâches CI à partir des dépôts Gitlab, puis fera tourner d'autres conteneurs Docker pour chaque tâche CI individuelle qu'il traite.
    1. Exécutez la commande suivante pour créer un nouveau conteneur Docker pour le runner gitlab
docker run -d --name gitlab-runner --restart always -v C:\gitlab-runner\config:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner:latest
  • -d dit au conteneur de s'exécuter en arrière-plan (de cette façon, nous pouvons continuer à utiliser le terminal)
  • --name gitlab-runner – Spécifier le nom du conteneur que nous créons (dans ce cas, nous l'appelons gitlab-runner, mais c'est un champ libre)
  • --restart always – Redemarrer le container automatiquement
  • -v C:\gitlab-runner\config:/etc/gitlab-runner – Ici, nous montons un volume entre la machine hôte et le conteneur. Ce dossier partagé sera l'endroit où le conteneur stocke ses fichiers de configuration afin qu'ils persistent même après l'arrêt du conteneur. Si vous avez utilisé une autre maison de conteneur, remplacez  C:\gitlab-runner\ par le dossier que vous avez utilisé.
  • -v /var/run/docker.sock:/var/run/docker.sock – permet au runner de faire tourner des conteneurs Docker en tant que conteneurs frères au lieu de conteneurs enfants (approche Docker-in-Docker)
  • gitlab/gitlab-runner – le nom de l'image Docker que nous allons télécharger puis faire tourner

Maintenant que le conteneur avec le runner gitlab est en cours d'exécution, nous devons enregistrer le runner avec Gitlab

Vous aurez besoin d'un jeton de votre dépôt Gitlab. Depuis votre dépôt, accédez à Paramètres > CI / CD. Trouvez la section coureurs (runners) et cherche le jeton. 

docker run --rm -t -i -v C:\gitlab-runner\config:/etc/gitlab-runner gitlab/gitlab-runner register --non-interactive --executor "docker" --docker-image alpine:latest --url "https://gitlab.com/" --registration-token "REGISTRATION_TOKEN" --description "docker-runner" --run-untagged="true" --locked="false"

Assurez-vous de remplacer "REGISTRATION_TOKEN" par le jeton d'enregistrement que vous avez récupéré plus tôt. Si vous utilisez une version privée de Gitlab, remplacez l'url "https://gitlab.com" par votre propre URL Gitlab.

J'ai défini ce coureur sur l'image du docker «alpine:latest» si aucune image n'est spécifiée dans le fichier .gitlab-ci.yml du projet. N'hésitez pas à choisir une image différente si cela répond à vos besoins.

Activer "execution en parallel"

À moins que vous ne souhaitiez exécuter une seule compilation à la fois, vous souhaiterez activer la concurrence pour votre runner gitlab.

  1. Ouvrez %RUNNER_HOME%/config/config.toml
  2. La première ligne: concurrent: 1 — remplacez-le par le nombre de builds que vous souhaitez pouvoir exécuter en parallèle

Débogage

docker logs gitlab-runner – afficher les logs (Journal)

(en utilisant Docker 18.09.2 et Gitlab Runner 11.10.1), il y a un problème où si Docker redémarre, lorsque le conteneur gitlab-runner tourne automatiquement, il ne rattachera pas correctement le volume de configuration.

Exécutez simplement docker restart gitlab-runner  et il redémarrera avec le volume correctement attaché.

 

docker run --rm -t -i -v C:\docker\gitlab-runner\config:/etc/gitlab-runner gitlab/gitlab-runner register --non-interactive --executor "docker" --docker-image alpine:latest --url "https://gitlab.com/" --registration-token "SELNACLSALTc4RVLcpBkCt2EkzkcGvh" --description "docker-runner" --run-untagged="true" --locked="false"