“Usine Logicielle”, “Environnements de développement intégré”, “Intégration Continue” sont des termes assez vagues qui parlent globalement de la même chose : livrer un logiciel.

L’idée principale est de ne plus dépendre d’un développeur pour compiler, tester, livrer, archiver, déployer… Le développeur est là pour produire du code ! Avec une usine en place, il devient facile de travailler avec une dizaine de développeurs provenant d’équipes différentes et de permettre au chef de projet de garder un oeil sur les métriques de qualité et sur les livrables.

Une usine n’est pas réservée aux grosses applications Java et aux grosses entreprises, nous avons déjà mis en place des usines pour déployer automatiquement un site web, des applications PHP ou Python. On peut simplement produire une archive zip du projet, un paquet système (RPM) voir directement un serveur complet !

Le site web de Jeci est sauvegardé sur Git et déployé automatiquement sur les serveurs d’OVH grâce à Gitlab-ci et Docker.

Automatiser les livraisons

  • gagner du temps, car tout est automatisé
  • réduire le risque d’erreur, car il n’y a pas d’intervention humaine
  • péréniser la procédure, car on ne dépend pas du savoir d’un développeur, ni de ce qu’il a installé sur son ordinateur !
  • faciliter les tests et la recette, avec la mise à jour automatique des serveurs de test et la création d’un environnement de recette remis à zéro à chaque livraison
  • maitriser les dépendances du projet
  • améliorer la qualité des livrables, ils ont toujours la même structure, la documentation est regénérée à chaque fois, on conserve l’historique des livrables

Mise en oeuvre

Pour cela je vous assiste dans la mise en place d’une usine logicielle :

  1. Suivi des versions : On utilise Git pour suivre les modifications sur le code source, permettre un retour en arrière, isoler des développements sur des branches, permettre la revue de code, etc. On utilise des versions en ligne (Github, Bitbucket), ou des logiciels libres (Gitlab)
  2. Automatiser la Compilation : avec la mise en place de scripts de compilation (Bash, MakeFile, Gradle, Maven) déclenchés automatiquement par les outils d’intégration continue (Jenkins, Gitlab-ci, Travis)
  3. Qualité de Code : Le service d’intégration continue peut déclencher les tests unitaires ou d’intégration (sur Docker), mais également lancer une analyse de code via SonarQube par exemple.
  4. Déploiement : Déploiement Automatique vers les serveurs de tests ou d’intégration, et déploiement à la demande sur les serveurs de production. Livraison automatique des livrables sur les plateformes dédiées.


Projets

Alfresco Docker Cloud

Production-ready Alfresco system running in Docker.

JBake Docker

Unofficial Docker Image for JBake