FORMATION CI/CD 21 Octobre 2021 - Cliquez pour ajouter du texte
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
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
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
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
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
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
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