Dans cet article nous allons voir comment tester une pipeline Gitlab CI en local. Il n’est pas nécessaire d’installer un Gitlab en local; ce qui peut être ennuyeux avec la gestion des certificats SSL. Pouvoir tester son fichier .gitlab-ci.yml en local est très utile pour 2 raisons. D’un côté c’est plus rapide car il ne faut pas pousser son code sur un Gitlab distant et attendre qu’un runner soit disponible. D’un autre côté on ne pollue pas le repository Git distant avec d’innombrables commits de tests (on peut réécrire l’historique je sais bien) ou avec des notifications aux collègues.

Prenons par exemple le fichier .gitlab-ci.yml suivant:

1
2
3
4
5
6
7
build:
image: nodejs:8
stage: build
before_script:
- npm i
script:
- npm run build

Avec la commande suivante on peut directement tester sa tâche build en local:

1
gitlab-runner exec docker build

Lorsqu’on utilise Gitlab CI on faut parfois faire appel à du cache entre les stages. C’est possible d’en avoir avec la commande suivante:

1
gitlab-runner exec docker --docker-volumes `pwd`/cache:/cache build

On peut aussi se faire un petit Makefile pour se simplifier la vie:

1
2
3
4
5
6
7
8
9
10
.PHONY: clean

.DEFAULT: cache
gitlab-runner exec docker --docker-volumes `pwd`/cache:/cache [email protected]

cache:
mkdir [email protected]

clean:
rm -rf cache

Enfin, si vous voulez passer des variables d’environnement dans un stage de votre pipeline cela se fait ainsi:

1
gitlab-runner exec docker --env YOUR_ENV_VAR="" build