Intégration/Déploiement Continue sur OpenShift

Aujourd’hui, je m’attaque à la problématique d’Intégration et de Déploiement Continue avec OpenShift. Mes interrogations sont les suivantes: Qu’apporte une plateforme Docker ? Quels sont les gains en productivité ? Quels intérêts pour les développeurs ? pour les Ops ? Quelles contraintes sur un projet classique JEE ? Bref, pour m’aider à y répondre, j’utiliserai le superbe projet CI/CD Demo on OpenShift de Siamak Sadeghianfar comme base. Il est très complet, merci Siamak 😉 . Cependant je n’ai pas résisté à y apporté une touche personnelle suite à quelques envies et incompatibilités… Mon environnement Windows 10 et la finalisation de MiniShift en 1.0-rc2 en sont probablement la cause.

Objectifs

Mon objectif principal est d’ accélérer les déploiements des applications Java sur des environnements prêt à consommer. La finalité est de déployer une version stable d’une application JEE dans un environnement « STAGE » après l’avoir testée et évaluée.

Pour cela, les outils doivent me permettre un certain nombre d’actions sur le logiciel en cours de développement:

  1. construire,
  2. vérifier la qualité,
  3. archiver,
  4. déployer
  5. exécuter
  6. tester
  7. mesurer.

Je vais utiliser 2 environnements différents, un pour les tests unitaires, l’autre pour les tests d’intégration. Openshift m’apportera son aide sur la gestion de ces environnements avec

  1. leur définition,
  2. le déploiement des machines,
  3. le portage des instances.

Quand à l’intégration continue (construction, mesure et archivage), les outils opensource Jenkins, Sonar et Nexus sont mes amis 😉 .

Ma vision globale de la problématique de CI/CD est celle-ci:

Toutefois, une précision de vocabulaire s’impose.

La notion d’environnement dans OpenShift est appelé PROJET (un namespace kubernetes). Cela est similaire à un sous-réseau où les instances dockers (pods) peuvent communiquer entre elles.

Dans la suite de l’article, je parlerai d’environnement pour PROJET « OpenShift » et projet pour PROJET « Maven ».

Lire la suite