Integration continue et déploiement automatisé

24
L’intégration continue et les outils pour les développeurs

Transcript of Integration continue et déploiement automatisé

Page 1: Integration continue et déploiement automatisé

L’intégration continue et les outils pour les développeurs

Page 2: Integration continue et déploiement automatisé

Satisfaire vos clients

En combien de temps êtes vous capable de publier le correctif d’un bug sur votre application web ?

Comment leur garantir un service ininterrompu, même durant les mises à jours ?

Un pic de traffic sur votre site ? Comment allez vous pouvoir grossir rapidement ? L’hébergement Cloud ne donne pas toutes les réponses !

Page 3: Integration continue et déploiement automatisé

D’importants coûts de déboggage

Page 4: Integration continue et déploiement automatisé

Un code difficile à maintenir

« Cette fonction prend plusieurs centaines de lignes, je ne la comprend pas »

« Toute une partie de notre code n’est jamais appelée »

« Pourtant ça fonctionne sur ma machine ! »

Page 5: Integration continue et déploiement automatisé

Comment développer des logiciels ou des applications web

Mieux, Plus rapidement, à Moindre coût ?

Page 6: Integration continue et déploiement automatisé

Les solutions au problèmes

1. Former les développeurs

3. Garantir le bon déploiement en l’automatisant

2. Garantir la qualité du code

Page 7: Integration continue et déploiement automatisé

1. Former les développeurs

Livrer le code plus souvent

Demander de respecter des conventions lors du développement

Utiliser des gestionnaires de paquets pour les dépendances

Tester le code réalisé

Page 8: Integration continue et déploiement automatisé

2. Garantir la qualité du code

Garantir le bon fonctionnement de l’application avant de la publier sur un environnement similaire à la production (mises à jours…)

- Compilation - Création de la base de donnée - Exécution des tests - Inspection du code

Page 9: Integration continue et déploiement automatisé

3. Garantir le bon déploiement en l’automatisant

Préparer un nouveau serveur en quelques minutes

Mettre à jour l’application sans downtime

Etre capable d’effectuer un rollback en quelques secondes

Générer et mettre en ligne la documentation

Page 10: Integration continue et déploiement automatisé

Le développeur au centre de tout

Page 11: Integration continue et déploiement automatisé

GIT au centre de tout

Page 12: Integration continue et déploiement automatisé

Je push sur GIT

La qualité du code est analysée

Si l’analyse qualité est réussie, le code est mis en production

Trois étapes simples

Page 13: Integration continue et déploiement automatisé

Problème : Tout le contenu que je push ne dois pas immédiatement être publié.

Page 14: Integration continue et déploiement automatisé

Le GIT Flow

Page 15: Integration continue et déploiement automatisé

Par conséquent seule la branche master est publiée. Pour autant, toutes les branches doivent être testées, et

inspectées.

Page 16: Integration continue et déploiement automatisé

Que faire en cas d’échec de la validation ?

Ne jamais mettre en production

Prévenir le développeur concerné par l’erreur (celui qui a effectué le commit)

Page 17: Integration continue et déploiement automatisé

Intégration Continue

Page 18: Integration continue et déploiement automatisé

Un service d’intégration continue c’est quoi ?

Crée une machine virtuelle

La configure comme votre environnement de production

Exécute les tests / inspections que vous lui ordonner d’exécuter

Page 19: Integration continue et déploiement automatisé

Un service d’intégration continue c’est quoi ?

Page 20: Integration continue et déploiement automatisé

Deux types de configurations

Un fichier .yml dans mon repository git (Travis, CircleCI)

Configurer directement depuis le site internet (Codeship)

Page 21: Integration continue et déploiement automatisé

GIT Flow

Page 22: Integration continue et déploiement automatisé

git branch -> Lister toutes les branches

git branch something -> Créer une branche something

git checkout something -> Aller sur la branche something

Gestion des branches en GIT

git merge something -> Merge la branche something avec ma branche courante

git branch -d something -> Supprime la branche

Page 23: Integration continue et déploiement automatisé

Déploiement Continue

Page 24: Integration continue et déploiement automatisé

Ansible

Puppet

Chef