Intégration continue – Introduction

l'intégration continue d'une application web

Quelques définitions pour débuter

Intégration continue

L’intégration continue est la pratique d’intégrer les changements des différents développeurs de l’équipe sur la branche principale le plus tôt possible.
Dans le meilleur des cas, l’intégration se fait plusieurs fois par jour.
Cela permet de s’assurer que le code sur lequel un développeur travaille n’est pas trop différent de celui des autres.
Cette pratique devrait être accompagnée de tests automatisés.

Déploiement continu

Le déploiement continu est relié à l’intégration continue. L’objectif est que l’application développée puisse être déployée en tout temps.
Idéalement, le déploiement devrait être automatisé vers un environnement de test ou de production si tous les tests automatisés passent.

Livraison continue

La livraison continue est la pratique d’avoir une base de code qui peut être déployée en tout temps vers un environnement de production.
En plus de s’assurer que l’application passe tous les tests, l’application doit contenir toutes les configurations nécessaires afin qu’elle soit livrée en production.
Plusieurs équipes poussent des changements, qui passent les tests automatisés, directement vers l’environnement de test ou de production afin d’avoir une boucle de développement rapide.

Intégration continue en détail

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.

https://fr.wikipedia.org/wiki/Integration_continue

L’automatisation

L’intégration continue repose souvent sur la mise en place d’une brique logicielle permettant l’automatisation de tâches :

  • Compilation,
  • Tests unitaires et fonctionnels,
  • Validation du produit,
  • Tests de performances…

À chaque changement du code, cette brique logicielle va exécuter un ensemble de tâches et produire un ensemble de résultats, que le développeur peut par la suite consulter.
Cette intégration permet ainsi de ne pas oublier d’éléments lors de la mise en production et donc ainsi améliorer la qualité du produit.

https://fr.wikipedia.org/wiki/Integration_continue

Prérequis de l’intégration continue

  • Le code source soit partagé (en utilisant des logiciels de gestion de versions tels que CVS, Subversion, git, etc).
  • Les développeurs intègrent (commit) quotidiennement
    (au moins) leurs modifications.
  • Des tests d’intégration sont développés pour valider l’application.

Les outils de l’intégration continue

Afin d’automatiser l’intégration ou le déploiement, plusieurs outils sont disponible. Certains sont hébergés dans le nuage (hosted) et d’autres peuvent être installés à l’intérieur de votre réseau (self-hosted).
On pense à :

  • Jenkins
  • Travis
  • TeamCity
  • CruiseControl
  • Codeship
  • Gitlab CI

D’autres outils, comme Phpunit, SonarQube ou Jacoco, peuvent être mis en place afin de superviser la qualité du code.

Les principaux avantages de l’intégration continue

  • Le test immédiat des modifications.
  • La notification rapide en cas de code incompatible ou manquant.
  • Les problèmes d’intégration sont détectés et réparés de façon continue, évitant les problèmes de dernière minute.
  • Une version est toujours disponible pour un test, une démonstration ou une distribution.
    https://fr.wikipedia.org/wiki/Integration_continue

Les bonnes pratiques

  • Maintenir un dépôt unique de code source versionné.
  • Automatiser les compilations.
  • Tout le monde commit tous les jours.
  • Maintenir un cycle de compilation court.
  • Tester dans un environnement de production cloné.
  • Rendre disponible facilement le dernier exécutable.
  • Automatiser le déploiement.

Les outils utiles pour l’intégration continue

Jenkins

Gitlab et Gitlab CI

Circle CI

  • Add-on Heroku disponible
  • Compte gratuit disponible
  • https://circleci.com/pricing/
  • 1,500 build minutes per month
  • 1 container
  • 1 concurrent build
  • Vidéo d’introduction
  • https://circleci.com/docs/continuous-deployment-with-heroku/

Travis

Exemple de fichier .travis.yml

 

Gitlab

Exemple de fichier .gitlab-ci.yml pour un projet angular-fullstack

Exemple de fichier .gitlab-ci.yml pour un projet Ruby

Gitlab Shared Runner

Shared Runners

If you use GitLab.com you can use Shared Runners provided by GitLab Inc.

These are special virtual machines that run on GitLab’s infrastructure and can build any project.

To enable Shared Runners you have to go to your project’s Settings > Runners and click Enable shared runners.

Read more on Shared Runners.

Codeship

Addon pour Heroku

  • https://elements.heroku.com/addons/codeship
  • https://devcenter.heroku.com/articles/codeship

Compatible avec

  • Github
  • Bitbucket

Forfait gratuit

  • Builds per Month 100
  • Concurrent Builds 1
  • Private Projects 5
  • Team Members per Project Unlimited
  • Premium Support
  • ParallelCI pipelines 1

Mot de la fin

Écrire du code de qualité …

C’est DIFFICILE
TRÈS DIFFICILE !!!

Ne tournez pas les coins ronds.
Appliquer les bonnes pratiques logicielles.

Recommandations

Intégrer votre code fréquemment (À tous les jours)

  • git pull
  • git commit -m

Mettre en place des tests unitaires. Un incontournable!

  • karma et jasmine
  • phpunit

Mettre en place un serveur d’intégration continue

  • Jenkins – gratuit et configurable

Planifiez vos projets sans négliger la qualité.

Comments

comments

0 réponses

Répondre

Want to join the discussion?
Feel free to contribute!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *