Nouveaux patrons Gitlab CI pour JavaScript
Temps de lecture 2 min (400 mots)
Dans le cadre de son stage de fin d'étude à Logilab, Arnaud à été amené à travailler avec des projets JavaScript (CubicWebJS et react-admin-cubicweb) nécessitant un processus d'intégration continue (CI) qui s'exécute sur notre forge heptapod.
Pour éviter de répéter le code décrivant la CI, Arnaud a écrit plusieurs scripts à utiliser comme patrons dans les projets JavaScript. Ces scripts sont intégrés au projet gitlab-ci-templates. Ils supposent l'utilisation de nodejs et sont compatibles avec yarn et npm. La détection se fait automatiquement : si le fichier yarn.lock
est présent à la racine du projet, yarn est utilisé, sinon c'est npm. L'image de base utilisée pour tous ces scripts est node:latest
, si vous avez besoin d'une version spécifique, vous pouvez remplacer latest
par la version de votre choix en surchargeant le script dans votre projet.
Voici un bref descriptif des différents scripts disponibles :
- js-install : installe les dépendances listées dans le fichier
package.json
et génère un artifact avec le dossiernode_modules
(ou les dossiers si on est dans le cas d'un workspace yarn). Cette installation est utilisable par les étapes suivantes si elles incluentjs-install
en tant que dépendance. - js-lint : lance la commande
lint
spécifiée dans le fichierpackage.json
. - js-test : lance la commande
test
spécifiée dans le fichierpackage.json
. - js-build : construit le projet avec la commande
build
spécifiée dans le fichierpackage.json
. Il peut être utile de générer un artifact avec le résultat du build pour le rendre utilisable lors d'une autre étape. - npm-publish : publie le projet sur npmjs.com. Ce script n'est lancé que lorsqu'un tag est détecté et seulement si les scripts de test, lint et build précédents ont réussi (ces scripts étant optionnels). Si vous avez généré un artifact avec le résultat du build, il sera disponible ici pour publication. Ce script considère qu'il existe une variable d'enrivonnement
NPM_TOKEN
contenant le token de connexion pour la publication. Il est possible de spécifier ce token comme variable cachée dans GitLab (et donc dans Heptapod). - webpack-publish : compile le projet en utilisant webpack et génère un artifact avec le dossier
public
pour préparer le déploiement sur les Gitlab pages. Ce script n'est executé que sur la branchedefault
et seulement si les scripts de test, lint et build précédents ont réussi (ces scripts étant optionnels). Si vous avez généré un artifact avec le résultat du build, il sera disponible ici pour publication. - gitlab-pages : Publie le contenu du dossier
public
sur les Gitlab pages du projet. Ce script n'est executé que sur la branchedefault
. Pour l'utiliser dans vos projets, vous aurez besoin de définir vous-même ses dépendances pour pouvoir publier les résultats de compilation.
Voici un exemple de l'utilisation de ces scripts dans le projet react-admin-cubicweb :
N'hésitez pas à utiliser ces scripts dans vos projets JavaScript, ils sont faits pour ça !