FORMATION CI/CD 21 Octobre 2021 - Cliquez pour ajouter du texte

La page est créée Rémi Gonçalves
 
CONTINUER À LIRE
FORMATION CI/CD 21 Octobre 2021 - Cliquez pour ajouter du texte
FORMATION CI/CD
 Cliquez pour ajouter du
 texte
 21 Octobre 2021
FORMATION CI/CD 21 Octobre 2021 - Cliquez pour ajouter du texte
Bienvenue !
Voici des ressources utiles pendant la formation:
• Le répo gitlab du TP : https://gitlab.viarezo.fr/ViaRezo/tp-cicd (la
 correction est sur la branche correction)
• La doc du gitlab : https://docs.gitlab.com/ee/ci/

 2
FORMATION CI/CD 21 Octobre 2021 - Cliquez pour ajouter du texte
Rappels de git
• Gitlab : serveur distant où l'on stocke le code
• Travailler à plusieurs sur le code, avec des branches, des
 commits, des merge requests....
• Mais que faire après avoir changé le code ?

 3
FORMATION CI/CD 21 Octobre 2021 - Cliquez pour ajouter du texte
La CI/CD - concepts
Intégration et développement continu
• Outil puissant proposé pour effectuer des modifications à
 chaque modification de son code sur le gitlab
• Permet de mettre en forme, tester, compiler et déployer son
 code

 4
FORMATION CI/CD 21 Octobre 2021 - Cliquez pour ajouter du texte
La CI/CD - les avantages

 5
FORMATION CI/CD 21 Octobre 2021 - Cliquez pour ajouter du texte
Création du fichier de CI/CD
• Créer à la racine le fichier .gitlab-ci.yml
• C'est un fichier en yaml qui définit des tâches à effectuer

 6
FORMATION CI/CD 21 Octobre 2021 - Cliquez pour ajouter du texte
Éxecution des tâches
• Les tâches seront éxecutées sur un gitlab runner, dans un
 docker

 7
FORMATION CI/CD 21 Octobre 2021 - Cliquez pour ajouter du texte
Contexte sur le projet du TP
• Un serveur web en express (javascript)
• Les commandes utiles sont définies dans le package.json. Par
 exemple, "npm run lint" lance le linter

 8
FORMATION CI/CD 21 Octobre 2021 - Cliquez pour ajouter du texte
CI: Linter
• Choisir une image docker de base (chez nous, node:14.6.0)
• Ajout d'une étape de linting: analyse de syntaxe du code et
 détection d'erreurs

 9
CI: Tests
• On va ensuite ajouter une tâche qui se fait en parallèle (au
 même "stage" que le lint): l'étape de tests
• Malheureusement, il y a des problèmes avec notre site... Il
 faudra résoudre les tests 

 10
CI: Tests
Il va falloir faire plusieurs choses:
• Installer les dépendances avec npm install
• Lancer les tests (npm run test)
• Définir des variables d'environnement (vous pouvez sans au
 début)
Attention ! Certaines de ces variables sont secrètes

 11
CI: Linting et tests
• A vous de jouer !
• N'hésitez pas à demander de l'aide et lisez le README jusqu'aux
 variables d'environnement

 12
CI: Installation des dépendances
• On ne veut pas installer les mêmes dépendances à chaque
 étape : on va utiliser des artifacts qui seront ensuite copiés
 automatiquement à chaque étape suivante
• On met cette étape en premier

 13
CD: Déploiement
• Le saint graal : déployer son application automatiquement
• Nous allons déployer notre application sur padawan.viarezo.fr

 14
CD: Déploiement
• Utilisation d'un token gitlab pour cloner notre projet et le
 mettre à jour grâce à "git pull" dans la CI/CD

 15
CD: Déploiement
• Nous allons utiliser ssh
• Cependant ssh est interactif pour mettre le mot de passe...
 nous utilisons donc ici sshpass
⚠️ sshpass est utilisé à cause du fonctionnement de padawan
mais ne sera pas nécessaire sur vos applications en production

 16
CD: Déploiement - préparation de l'image
Le script suivant est donc à utiliser pour installer sshpass et
configurer l'agent ssh

 17
CD: Déploiement - conditions de lancement
• On ne veut pas que le site se déploie à chaque push sur chaque
 branch
• On rajoute donc une condition pour que le job se lance, avec le
 mot clé only ou le mot clé rules

 18
CD: Déploiement - lancement de l'appli
Il faut maintenant faire les actions suivantes:
• Copier les node_modules sur la machine avec la commande
 scp
• Se connecter à la machine avec ssh
• Pull le répo git pour mettre le dossier à jour et lancer le site
 avec pm2 ( la commande à utiliser est "pm2 start
 launcher.json")

 19
CD: Déploiement - lancement de l'appli
• Bon courage !
• N'hésitez pas à poser des questions, vraiment
• Vous aurez réussi quand dans padawan, vous lancerez la
 commande suivante et que cela affichera ce qu'il y a de définit
 sur la branche main

 20
Pour aller plus loin : templating
• Certains jobs se répètent avec différentes variables
 d'environnement: templating avec .extends
• On peut ainsi utiliser des jobs très similaires mais avec leurs
 spécificités liées à la branche sur laquelle ils sont lancés par
 exemple

 21
Continuous Integration and Delivery

 22
Vous pouvez aussi lire