Déployer un runner GitLab sur Clever Cloud

Philippe Charrière
4 min readJan 21, 2018

--

Clever Cloud (https://www.clever-cloud.com/) est une plateforme de type PaaS sur laquelle vous pouvez déployer facilement vos WebApps par un simple git push de votre code source (cf. https://www.clever-cloud.com/doc/clever-cloud-overview/add-application/).

Mais vous pouvez déployer autre chose que du code. Et en ce dimanche pluvieux, j’ai décidé de déployer un runner GitLab sur Clever Cloud. Un runner GitLab, c’est l’exécutable qui par exemple, va faire les builds de votre projet, va exécuter les tests à chaque commits… et enfin qui va “discuter” avec GitLab CI pour donner les résultats de builds, tests, … à la plateforme GitLab (GitLab.com ou votre propre instance).

Les possibilités sont nombreuses. Mais aujourd’hui je vais me limiter à un simple runner de type “shell” qui va télécharger les dépendances de mon projet node.js et lancer les tests.

Il vous faut un projet nodejs

Voici un exemple de projet que vous pouvez utiliser:

https://gitlab.com/wey-yu/hello

Pour lancer les tests du projet il suffit de lancer la commande npm test

Pour activer l’intégration continue (la partie CI) dans votre projet GitLab, il vous suffit d’ajouter un fichier .gitlab-ci.yml à la racine de votre projet

C’est maintenant que nous allons avoir besoin d’un runner.

Préparation du projet pour l’utilisation d’un runner

Allez dans les settings de votre projet et choisissez CI/CD puis déroulez la partie Runners settings (en cliquant sur le bouton Expand) et vous allez ainsi obtenir 2 paramètres importants:

  • l’url de votre instance GitLab
  • un token qui permettra au runner de “donner” des informations à votre instance

Donc notez bien ce token, il va vous servir dans la définition de notre runner.

⚠️ Ensuite, très important, allez définir un “Personal Access Token” dans les settings de votre profil GitLab (et conservez ce deuxième token quelque part).

Création du runner

Pour créer mon runner sur Clever Cloud je vais utiliser un Dokerfile et un fichier de script shell que je déploierais comme une application sur Clever Cloud. Donc, créez un répertoire my-runner avec les 2 fichiers suivants:

Le Dockerfile va essentiellement servir à installer le gitlab-runner et nodejs avec npm, puis lancer le fichier go.sh :

Que fait go.sh?

  • Le script récupère la liste des runners en cours avec l’API GitLab (d’où l’importance de l’access token) et récupère l’id du runner en faisant une recherche sur la description du runner
  • Ensuite on supprime cette entrée (toujours avec l’API), si la liste était vide cela génèrera une erreur (mais ce n’est pas bloquant)
  • Remarque: je fais cette suppression car à chaque redémarrage de notre application, nous allons créer un nouvel enregistrement de runner, c’est donc pour éviter une accumulation inutile
  • Ensuite le runner s’enregistre auprès de l’instance GitLab avec la commande gitlab-runner register
  • Puis il démarre avec la commande gitlab-runner run
  • Et enfin je lance un serveur http car la plateforme Clever Cloud s’attend à lancer une WebApp qui écoute sur 8080 (sinon la plateforme refusera de lancer mon application)

Déployons le runner sur Clever Cloud

  • dans le répertoire my-runner faire un git init puis un git add . et enfin un git commit -m “add my runner”
  • Ensuite aller sur la plateforme Clever Cloud et créez une application Docker avec les variables d’environnement suivantes:
  • La plateforme vas vous fournir une url git à ajouter à votre projet pour pouvoir le déployer (par ex: git remote add clever git+ssh://git@push-par-clevercloud-customers.services.clever-cloud.com/app_1beaf11c-0303-4a12-a668-45c43e431462.git)
  • Vous pouvez donc déployer: git push -u clever master
  • Patientez un petit peu
  • Une fois que votre déploiement est terminé, vous pouvez retourner sur votre projet GitLab

Et dans les settings vous verrez que votre runner est bien enregistré:

Lancer un pipeline

Maintenant, allez dans la rubrique CI/CD de votre repository, sélectionnez la sous-rubrique Pipelines:

Cliquez sur le bouton “Run Pipeline”. Vous allez ensuite pouvoir créer un pipeline.

Donc cliquez sur le bouton “Create Pipeline”. Cela va déclencher la création du pipeline et le démarrer en commençant par l’installation des dépendances:

En cliquant sur le job qui vous intéresse (une étape du pipeline) vous obtenez le détail de ce qui a été exécuté par le runner:

Dorénavant, à chaque fois que vous “pousserez” des commits sur master le pipeline sera déclenché.

Voilà, c’est tout simple. Maintenant vous savez déployer des runners immutables sur Clever Cloud 🙂

--

--