Workflow

Intégration et déploiement continue

Session 2

Qu’est-ce que c'est ?

L'intégration continue est un ensemble de pratiques utilisées en génie logiciel consistant à vérifier à chaque modification de code source que le résultat des modifications ne produit pas de régression dans l'application développée.

Workflow de traitement du code

Vérifier chaque commit pour garantir la stabilité.

Tester toute l'application

  • Identifier les étapes
  • Créer un contexte de test fiable
  • Rendre les tests reproductibles

Réduire au minimum

Garantir que l'application fonctionne dans un environnement simple.

L'environnement d'exécution

Éphémère, reconstructible, léger, complet, identique à la production, le plus simple possible...

Docker à la rescousse

  • Virtualisation
  • Encapsulation
  • Légèreté (Alpine Linux)

Des outils spécifiques

Task runner

Gulp, Phing, Ant, Make, Grunt...

Tests unitaires

PHPUnit, Atoum, QUnit, UnitJS...

Tests d'intégration

Behat, Selenium...

Plaforme d'intégration continue

TravisCI, GitlabCI, Jenkins, Hudson, TeamCity...

Un workflow

Déploiement et sécurité

Droits d'accès aux serveurs

  • Des comptes utilisateurs spécifiques et limités.
  • Ne pas oublier l'utilisateur www-data
  • sudo n'est pas un ennemi

Droits d'accès à la BDD

  • Permissions et limitations
  • Un utilisateur pour les backups ?

SSH, Rsync et autres...

Se connecter à / aux machines pour mettre à jour le code et la configuration...

Orchestration

Scripter l'installation serveur

  • Normalisation de l'environnement
  • Maitrise des packages installés
  • Reproductibilité

Des outils ?

Cycle de déploiement
Environnements

Sur dev, en automatique

Pas de contraintes, possibilité de tester rapidement.

Sur qa, à la main

S'assurer que ca fonctionne sur DEV avant de lancer le déploiement.

prod, uniquement avec un tag

  • Versionning à la rescousse
  • Un tag est une version figée stable
  • Test sur les environnements précédent

Migrations, BDD et seeds

  • Versionner les modifications
  • Ajouter / retirer les migrations
  • Vérification d'intégrité
  • Déploiement des données par défaut