Intégration continue ([wikipedia w])
-
L'intégration continue (continuous Integration) est une pratique de développement où les membres d’une équipe intègre fréquemment (au moins une fois par jour) leur travail
-
Un outil automatique est chargé de vérifier et de détecter les problèmes d’intégration au plus tôt
-
Est issu d'Extreme Programming
-
S’appuie généralement sur un serveur d’intégration continue
-
en général avec un outil de gestion de versions
-
tous les développeurs doivent utiliser ce référentiel
-
tout ce qui est nécessaire à la compilation doit se trouver dans le référentiel (tests, fichier de propriétés, scripts SQL, …)
-
limiter l’utilisation des branches (favoriser la branche principale)
-
ne placer aucun produit de la compilation dans le référentiel
-
chaque tâche répétitive doit être automatisée (création de la BD, …) \art{(à partir d’une machine vierge, un checkout et une unique commande doit permettre d’obtenir un système utilisable)}
-
l’outil doit permettre de ne recompiler que ce qui est nécessaire
-
l’outil doit permettre de définir différentes cibles
-
le système de compilation de l’IDE ne suffit pas
-
un ensemble de tests automatisés doit être disponible
-
la compilation doit inclure l’exécution des tests
-
l’échec d’un test doit être reporté comme un échec de la compilation
-
des validations fréquentes favorisent une détection rapide des problèmes d’intégration
-
validation fréquente
-
donc moins d’endroits où les conflits peuvent se produire
-
donc détection plus rapide des problèmes
-
-
des validations fréquentes encouragent les développeur à découper leur travail en tâches
-
permet d’avoir une compilation de référence
-
la validation dépend de la réussite de cette compilation
-
c’est en général le rôle du serveur d’intégration continue
-
le serveur notifie le développeur de la réussite de la compilation
-
chaque différence avec l’environnement de production peut conduire à des résultats de tests différents
-
parfois difficile mais il faut s’en approcher au maximum
-
chacun doit pouvoir utiliser la dernière version du système
-
le but de l’intégration continue est de faciliter la communication
-
tout le monde doit voir l’état de la branche principale (compilation en cours, échec de la compilation, …)
-
et les changements apportés
-
L’intégration continue ne dépend pas d’un outil
-
C’est une pratique qui doit être acceptée par l’équipe de développement
-
la dernière version du code dans le référentiel doit toujours compiler et passer tous les tests
-
le code doit être validé fréquemment
-
-
Processus
-
avant la validation, s’assurer que la compilation et les tests réussissent
-
prévenir l’équipe de ne pas mettre à jour le référentiel à cause de l’intégration en cours
-
valider
-
aller sur la machine d’intégration, récupérer la dernière version du référentiel et s’assurer que la compilation et les tests réussissent
-
prévenir l’équipe que les mises à jour peuvent reprendre
-
-
Un outil d’intégration continue permet d’automatiser l’étape 4
Gestion des binaires ([wikipedia w])
-
Le dépôt de binaires permet de centraliser l’entreposage et la distribution des résultats de la compilation
-
Il doit s’intégrer avec:
-
le serveur d’intégration continue,
-
le système de build utilisé.
-
-
Il gère également le contrôle d’accès aux différents paquets
Java | Python |
---|---|
Déploiement ([wikipedia w])
-
La livraison continue (continuous delivery) est une approche visant à
-
produire un logiciel en cycles courts,
-
pouvoir livrer le logiciel à tout moment.
-
-
La construction, les tests et la distribution doivent être plus fréquent
-
Cette approche s’appuie sur un déploiement fiable et reproductible
-
La décision de déployer reste manuelle
-
Un pipeline de déploiement couvre trois aspects
Visibilité Toutes les phases du processus de la livraison sont visibles par tous les membres de l’équipe
Feedback Les problèmes doivent être remontés au plus tôt à l’équipe
Automatisation Toute version du logiciel peut être déployée sur n’importe quelle plate-forme automatiquement
-
La construction du projet est décomposée en étapes successives
-
chaque étape améliore la confiance dans le logiciel
-
les premières étapes fournissent un feedback rapidement
-
-
Le déploiement continu (continuous deployment) doit permettre de déployer automatiquement en production tout changement
-
Peut conduire à mettre à jour le système en production plusieurs fois par jour
-
L'Infrastructure as code consiste à gérer et installer les infrastructures (serveur physique, machine virtuelle, …) en utilisant des fichiers de description exécutables par la machine
-
Ces descriptions sont ensuite ajoutées dans le VCS pour maintenir les différentes versions
-
C’est une réponse à la question du passage à l’échelle pour l’installation de machines
-
Une machine virtuelle (VM) est une émulation d’un système informatique
-
Elles permettent d’optimiser l’usage des serveurs physiques et apporte de la souplesse
-
La virtualisation au niveau du système d’exploitation permet de mettre en place des espaces isolés nommés conteneur
-
Dans un conteneur, les processus sont isolés et l’OS propose un mécanisme de gestion des ressources
-
C’est une version évoluées du mécanisme de chroot disponible sous Unix