on duplique pas mal d'informations (venant de src/app.js)
les diff comportent des informations inutiles
les merge sont beaucoup plus difficiles à gérer
Si on ne le synchronise pas :
il faut penser à le générer quand src/app.js est modifié
il faut pour ça avoir les bonnes dépendances et un environnement propre
README
On ajoute /build/app.min.js dans .gitignore.
On n'est pas des animaux, on ajoute un fichier README qui documente :
les outils requis
comment installer les dépendances externes
comment construire le fichier /build/app.min.js
Problèmes potentiels
on n'a pas vu que le README a changé
on n'a pas vu que les versions des dépendances ont changé dans package.json
la procédure est cassée lorsqu'on la suit sur un environnement propre
l'application qui ira en production est produite sur la machine d'un des devs
...
CI/CD
Continuous Integration & Continuous Delivery
CI = vérifier à chaque modification de code source que le résultat des modifications ne produit pas de régression.
Usages courants :
vérifier qu'on peut construire et installer l'app
vérifier que les tests automatisés passent avec succès
déployer l'app en (pré)production
GitLab CI
Ajouter un fichier .gitlab-ci.yml au projet
C'est tout !
lint:
stage: test
script:
- npm install --quiet
- npm run lint
Docker
Docker est un outil qui peut empaqueter une application et ses dépendances dans un conteneur isolé, qui pourra être exécuté sur n'importe quel serveur Linux.
On peut facilement créer une image Docker qui contient tous nos outils préférés.
FROM debian:jessie
RUN curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
RUN apt-get update \
&& apt-get install --no-install-recommends -y \
nodejs
GitLab CI
Chaque tâche de GitLab CI peut être lancée dans une image Docker : on maitrise l'environnement d'exécution.
lint:
stage: test
image: myorg/myimage:latest
script:
- npm install --quiet
- npm run lint
tags:
- docker
Une fois que c'est terminé, on récupère le résultat et on jette le container à la poubelle !
GitLab CI
Autres avantages :
intégré à GitLab (UI, notifications, MR, ...)
tâches en séquence et en parallèle
suivi du log du build en temps réel
extraction des fichiers produits dans une archive
GitLab CI
Bilan
tous les devs doivent être capable de :
construire l'application (avec une recette identique)
la tester (dans un environnement identique)
✓ On utilise GitLab CI pour lancer la construction et les tests dans une image Docker.
Déploiement automatisé (CD)
On peut choisir d'exécuter certaines tâches uniquement dans certains cas :