2 min read

Protéger vos tags avec Gitlab

Gitlab permet de définir des variables protégées mais elles ne sont pas accessibles pour les pipelines issues d'un tag Git, comme j'ai pu m'en rendre compte..

J’ai récemment modifié la pipeline d’un de mes projets versionné sur Gitlab pour que le job de déploiement ne soit effectué qu’à la création d’un tag et non à chaque commit fait sur la branche master. Ceci est possible grâce à l’utilisation du mot clé only dans mon fichier .gitlab-ci.yml

deploy:
 script:
   - yarn surge dist
 environment:
   name: production
 only:
   - tags
Exemple d'utilisation du mot clé only dans un fichier .gitlab-ci.yml

Pourtant lorsque j’ai ajouté mon premier tag à mon projet, son déploiement a échoué, car il se trouve que pour déployer mon projet je dois indiquer à mon hébergeur mes identifiants de connexion. Et comme je profite des runners partagés par Gitlab pour effectuer mes déploiements je dois utiliser des variables protégées, pour qu’elles soient transmises de manière sécurisé au runner effectuant le déploiement.

Or il se trouve que les variables protégées ne sont accessible que pour des jobs s’exécutant depuis une branche ou un tag protégé(e). Je devais alors trouver un moyen de protéger mon tag et les suivants pour être sur que mes déploiements futures fonctionneraient.

Pour créer un tag protégé il faut procéder de la manière suivante dans Gitlab :

  1. Accéder à la partie Repository des réglages de votre projet
  2. Sélectionner le tag à protéger ou utiliser un pattern pour protéger tous les tags correspondant à ce pattern (dans mon cas v* suffisait)

Dorénavant tout mes déploiements n’auront aucun soucis à accéder à mes variables protégées lorsqu’ils sont effectués à partir d’un tag protégé.

Liens

GitLab CI/CD environment variables | GitLab
Documentation for GitLab Community Edition, GitLab Enterprise Edition, Omnibus GitLab, and GitLab Runner.
Protected tags | GitLab
Documentation for GitLab Community Edition, GitLab Enterprise Edition, Omnibus GitLab, and GitLab Runner.