meetups

Carrefour : retour sur la personnalisation de JHipster pour l’entreprise

Sujets : JHipster, CI/CD, Kubernetes, Helm, micro-services

9h45 - 10h30

Par Yoan Hoareau (Carrefour). Merci ! Par Anthony Viard (Ippon Technologies). Merci !

La vidéo complète est en ligne sur la chaîne YouTube de Ippon Technologies.

Un petit historique pour commencer :

Bilan de l’utilisation de JHipster

Après deux années d’utilisation, voici ce qui a été apprécié :

Il y avait ceci dit des limites à l’utilisation de JHipster dans le contexte Carrefour, parfois le code généré ne convenait pas aux besoins de par les spécificités Carrefour, un travail important sur le CI/CD Carrefour et Angular Material pas natif avec JHipster (le front utilise Bootstrap).

Comment alors s’améliorer ? Anthony et Julien Dubois interviennent pour prendre la température et aider les équipes. Plusieurs points ont été ciblés en priorité :

Blueprint Carrefour

Qu’est-ce qu’un blueprint ?

C’est une solution proposée par la communauté, c’est donc open-source. Il existe un générateur de blueprints pour en créer et permettre de personnaliser la génération (en intervenant sur certains générateurs). Le blueprint se package en package npm.

Il faut avant tout définir le périmètre ;

Le périmètre défini était “production ready”, “less is more”, “JHipster like” et permettait la montée en compétences.

Quel modèle choisir ? Quelle est la cible ? Quel type d’application veut-on générer ? Une application de type starter pour les micro-services existait de base et a servi en partie de modèle pour la V1 avec d’abord du Traefik et OpenStack puis en V2 du Kubernetes avec Ingress. L’environnement est basé sur Kubernetes, Helm (pour définir des templates dans les configurations Kubernetes en fonction des environnements) et Jenkins.

Exemple de génération d’un projet monolithe chez Carrefour :

Concernant le Jenkinsfile généré il permet plusieurs étapes dans l’intégration continue via plusieurs images Docker :

L’application permet à travers Jenkins de gérer le continuous deployment pour manipuler les charts Helm à travers le client Helm.

Comment cela s’intègre dans l’écosystème Carrefour ? L’application est générée via le blueprint JHipster puis poussée sur le SCM et le CI/CD prend la main pour les étapes plus classiques de build, tests unitaires, qualité, sécurité du code avec Fortify et enfin le déploiement via Helm.

Et l’avenir ?

En bonus : Le JHipster-C4 CLI et les projets à venir. Comment utiliser le blueprint ? Avec npm i -g generation-jhipster-c4 puis jhipster-c4. Cela permet de récupérer la bonne version et utiliser le blueprint en ligne de commandes. Voir l’article d’Anthony pour ajouter un CLI à son blueprint JHipster. Ce qui n’a pas encore été fait : JHiOnline C4 et blueprint pour Angular Material.

Des contributions sur le projet JHipster ont été effectuées lors des derniers mois suite à l’expérience gagnée via Carrefour avec 8 issues et 20 pull requests mergées essentiellement sur la partie core et blueprint (proposition par exemple d’un sonar.properties utilisé par le pom, utile notamment en cas de séparation du front et du back).

Les projets JHipster Carrefour sur 2019 :

Carrefour souhaite accompagner les équipes sur l’utilisation du blueprint et recueillir du feedback tout en contribuant au projet JHipster.

De nombreux chantiers sont à venir :