Aujourd'hui, nous passons à l'histoire du terme, discutons des difficultés de mise en œuvre de CI et fournissons quelques outils populaires pour vous aider à travailler avec.
/ Flickr / Altug Karakoc / CC BY / Photo modifiéeDurée
Intégration continue - Une approche du développement d'applications, impliquant un assemblage fréquent du projet et des tests de code.
L'objectif est de rendre le processus d'intégration prévisible et de détecter les bugs et erreurs potentiels à un stade précoce afin de disposer de plus de temps pour les corriger.
Le terme intégration continue est apparu pour la première fois en 1991. Il a été introduit par le créateur du langage UML, Grady Booch. L'ingénieur a introduit le concept CI dans le cadre de sa propre pratique de développement -
la méthode Butch . Cela impliquait un raffinement incrémentiel de l'architecture dans la conception de systèmes orientés objet. Grady n'a décrit aucune exigence d'intégration continue. Mais plus tard dans son livre "
Object-Oriented Analysis and Design with Applications ", il a dit que la tâche de la méthodologie est d'accélérer la sortie des "versions internes".
L'histoire
En 1996, CI a été adopté par les créateurs de la méthodologie de
programmation extrême (XP) -
Kent Beck et
Ron Jeffries . L'intégration continue est devenue l'un des douze principes clés de leur approche. Les fondateurs de XP ont clarifié les exigences de la méthodologie CI et ont noté la nécessité de monter le projet plusieurs fois par jour.
Au début des années 2000,
Martin Fowler, l' un des fondateurs d'Agile Alliance, a commencé à promouvoir la méthodologie d'intégration continue. Ses expériences avec CI ont mené au premier outil logiciel de l'industrie - CruiseControl. L'utilitaire a été créé par un collègue de Martin - Matthew Fommel (Matthew Foemmel).
Le cycle de génération dans l'outil est implémenté comme un démon, vérifiant périodiquement le système de contrôle de version pour les changements dans la base de code. La solution peut être téléchargée aujourd'hui - elle est distribuée sous une licence de type BSD.
Avec l'avènement des logiciels pour CI, de plus en plus d'entreprises ont commencé à adopter cette pratique. Selon une étude Forrester [p. 5 du
rapport ], en 2009, 86% des cinquante entreprises technologiques interrogées ont utilisé ou mis en œuvre des méthodes d'IC.
Aujourd'hui, l'intégration continue est pratiquée par des organisations d'un large éventail d'industries. En 2018, un grand fournisseur de cloud a mené une enquête auprès des informaticiens des entreprises des secteurs des services, de l'éducation et de la finance. Sur les six mille répondants, 58% ont déclaré utiliser les outils et les principes de l'IC dans leur travail.
Comment ça marche
La base de l'intégration continue est deux outils - un système de contrôle de version et un serveur CI. Ce dernier peut être un périphérique physique ou une machine virtuelle dans un environnement cloud. Les développeurs téléchargent un nouveau code une ou plusieurs fois par jour. Le serveur CI le copie automatiquement avec toutes les dépendances et effectue l'assemblage. Après - lance l'intégration et les tests unitaires. Si les tests réussissent, le système CI déploie le code.
Le schéma général du processus peut être représenté comme suit:

La méthodologie CI a un certain nombre d'exigences pour les développeurs:
- Résolvez les problèmes immédiatement. Ce principe est venu à CI de la programmation extrême. Les corrections de bogues sont une priorité absolue pour les développeurs.
- Automatisez les processus. Les développeurs et les gestionnaires doivent constamment rechercher les goulots d'étranglement dans le processus d'intégration et les éliminer. Par exemple, les tests sont souvent le «goulot d'étranglement» de l'intégration.
- Construisez le plus souvent possible. Une fois par jour pour synchroniser le travail d'équipe.
Difficultés de mise en œuvre
Le premier problème concerne les coûts d'exploitation élevés. Même si une entreprise utilise des outils CI ouverts (dont nous parlerons plus tard), elle devra toujours dépenser de l'argent pour soutenir l'infrastructure. Cependant, la technologie cloud peut être la solution.
Ils simplifient l'assemblage de configurations informatiques multi-échelles. De plus, les entreprises ne
paient que pour les ressources utilisées, ce qui permet d'économiser sur l'infrastructure.
Selon des enquêtes [p
. 14 de l'
article ], l'intégration continue alourdit la charge des salariés de l'entreprise (au moins pour la première fois). Ils doivent apprendre de nouveaux outils et leurs collègues ne contribuent pas toujours à la formation. Par conséquent, vous devez faire face à de nouveaux cadres et services lors de vos déplacements.
La troisième difficulté concerne les problèmes d'automatisation. Il est confronté à des organisations avec une grande quantité de code hérité qui n'est pas couvert par des tests automatisés. Cela conduit au fait que le code est simplement réécrit avant l'implémentation complète de CI.
/ Flickr / theilr / CC BY-SAQui utilise
Un des premiers avantages de la méthodologie a été apprécié par les géants de l'informatique. Google
utilise l'intégration continue depuis le milieu des années 2000. CI implémenté pour résoudre le problème des retards dans le moteur de recherche. L'intégration continue a permis d'identifier et de résoudre rapidement les problèmes. Désormais, CI est utilisé par tous les services du géant informatique.
L'intégration continue aide également les petites entreprises, et les outils CI sont également utilisés par les organisations financières et médicales. Chez Morningstar, par exemple, les services d'intégration continue ont aidé à corriger les vulnérabilités 70% plus rapidement. Et la plate-forme médicale Philips Healthcare a pu doubler la vitesse des mises à jour des tests.
Les outils
Voici quelques outils populaires pour CI:
- Jenkins est l'un des systèmes CI les plus populaires. Il prend en charge plus d'un millier de plugins pour l'intégration avec divers VCS, plateformes cloud et autres services. Nous utilisons également Jenkins dans 1cloud: l'outil est inclus dans notre système DevOps . Il vérifie régulièrement la succursale Git pour les tests.
- Buildbot est un framework python pour écrire vos propres processus d'intégration continue. La configuration initiale de l'outil est assez compliquée, mais elle est compensée par les larges possibilités de personnalisation. Parmi les avantages du cadre, les utilisateurs distinguent sa faible intensité de ressources.
- Concourse CI est un serveur de Pivotal qui utilise des conteneurs Docker. Concourse CI s'intègre à tous les outils et systèmes de contrôle de version. Les développeurs notent que le système est adapté pour travailler dans des entreprises de toute taille.
- Gitlab CI est un outil intégré au système de contrôle de version GitLab. Le service s'exécute dans le cloud et utilise des fichiers YAML pour la configuration. Comme Concourse, Gitlab CI utilise des conteneurs Docker qui aident à isoler les différents processus les uns des autres.
- Codeship est un serveur CI basé sur le cloud qui fonctionne avec GitHub, GitLab et BitBucket. La plate-forme ne nécessite pas de configuration initiale longue - des processus CI prédéfinis standard sont disponibles dans Codeship. Pour les petits projets (jusqu'à 100 builds par mois) et les projets open source, Codeship est disponible gratuitement.
Documents de notre blog d'entreprise: