Travis est un outil d’intégration continue (CI : continuous integration) parfaitement intégré à Github, et qui plus est totalement gratuit pour les projets open source comme LeCoinDuProf. Chaque fois qu’une personne soumettra une merge request pour votre projet, vous pourrez vous assurer que tous les tests (unitaires, end to end, etc…) passent correctement avant d’accorder le merge. Ça ne vous dispensera pas d’une relecture complète de la merge request, mais ça informera immédiatement le contributeur qui aurait oublié de lancer les tests de sa pleine retrocompatibilité avec le projet.
Pour activer Travis sur un projet Angular, deux étapes sont nécessaires :
Créer un compte Travis
Rendez-vous sur https://travis-ci.com et utilisez le bouton « Sign-up with Github » et suivez la procédure jusqu’au bout pour appairer votre compte Github et votre compte Travis. Puis activez Travis pour le ou les repos de votre choix.
Configurer Travis pour votre projet Angular
A la racine de votre projet, créez un fichier .travis.yml contenant
dist: trusty sudo: false language: node_js node_js: - '8' addons: apt: sources: - google-chrome packages: - google-chrome-stable cache: directories: - ./node_modules install: - npm install script: - npm run test -- --watch=false --no-progress --browsers=ChromeHeadlessNoSandbox
Ce fichier donne l’instruction à Travis de lancer une image de la distribution Trusty, sur laquelle un nvm est installé (voir Gérer de multiples versions de node avec nvm pour les curieux) et de commander l’installation de la version 8 de node, ainsi que le navigateur chrome en mode headless nécessaire pour lancer les tests en ligne de commande.
L’instruction est également donnée de conserver le répertoire node_modules entre les builds pour réduire la durée des étapes de npm install.
Enfin, npm lance les tests en demandant explicitement l’utilisation du navigateur ChromeHeadlessNoSandbox.
Il faut donc maintenant configurer ce navigateur qui n’est pas disponible par défaut sur Angular. Pour cela, éditez src/karma.conf.js et ajoutez une section customLaunchers comme celle-ci :
... reporters: [...], customLaunchers: { ChromeHeadlessNoSandbox: { base: 'ChromeHeadless', flags: ['--no-sandbox'] } }, ...
Vous bénéficiez maintenant de l’analyse de Travis avant d’accepter ou pas une merge request.
Les modifications apportées à LeCoinDuProf dans le cadre de la mise en place de Travis sont disponibles sur le commit https://github.com/AlanCrevon/LeCoinDuProf/commit/49aba74812c54fee1c6489772be81b82da5aa4e7
Trackbacks / Pingbacks