Client
Le client est une entreprise technologique mondiale qui produit et fournit des solutions de gestion d'infrastructure à des entreprises dans divers secteurs industriels, y compris l'automobile et les communications.
Défi
Le développement a été chronophage pour le client ces dernières années. D'abord, le client dispose d'une large gamme de solutions d'infrastructure nécessitant des tests réguliers, des mises à jour et de nouvelles versions chaque trimestre. L'envergure du travail est massive, sans parler de l'échelle des produits du client. Le fait que les équipes chargées du développement soient basées dans différents lieux complique également le flux de travail global. L'équipe d'expérience numérique, dont la mission est de soutenir l'infrastructure pour les développeurs et les clients, avait clairement besoin d'aide pour optimiser et automatiser le processus CI/CD.
Le client attendait un flux de travail CI/CD plus rapide, automatisé et facile à maintenir, adapté à différents projets. Suite à une collaboration réussie dans le passé, l'équipe d'Elinext a rejoint le projet, ajoutant trois développeurs à l'équipe.
À propos de la Solution
La solution est un pipeline contenant un ensemble d'actions automatisées pour exécuter le processus de développement.
Ces actions représentent des instruments pour effectuer les tâches suivantes : construction, déploiement, analyse et intégration.
L'avantage d'utiliser un pipeline commun est sa flexibilité — il peut être appliqué à n'importe quel projet. Avant cette solution, les développeurs devaient créer des pipelines séparés pour chaque composant, ce qui entraînait du code dupliqué et une utilisation inefficace du temps de travail.
Les équipes de développement peuvent modifier le pipeline selon leurs besoins. Par exemple, elles peuvent enrichir une solution existante avec de nouvelles fonctionnalités. Il suffit d'ajouter quelques lignes de code au lieu de créer un programme séparé.
Une autre fonctionnalité disponible dans la solution est la possibilité de sauter certaines étapes de construction. C'est une fonctionnalité utile lorsque le développeur a besoin de voir uniquement les résultats d'une analyse ou de déployer certaines branches, indépendamment des paramètres par défaut.
La solution a été créée en utilisant Jenkins, un serveur d'automatisation open-source pour la construction et le déploiement de logiciels. Globalement, le projet a pris cinq phases pour être complété.
Phase 1 — Conception. Collecte des exigences et détermination de la manière dont les utilisateurs finaux interagiront avec la solution une fois finalisée.
Phase 2 — Tâches de Scannage. Création de trois tâches de scan pour vérifier les composants pour leur vulnérabilités :
- Blackduck — identifie les composants open-source et les analyse pour les problèmes de conformité et les risques.
- Coverity — détecte les vulnérabilités de sécurité dans le code écrit par les développeurs d'Elinext.
- Sonar — analyse la qualité du code source.
Les tâches de scan peuvent fonctionner en parallèle et n'affectent pas le reste du pipeline. Les mêmes tâches de scan peuvent être appliquées à différents composants, optimisant ainsi le temps des développeurs. Nous les avons testées plus tard en appelant des tâches à partir d'une variété de pipelines existants pour rechercher des défauts tels que des paramètres manquants ou des configurations incorrectes.
Phase 3 — POC. Création de la première itération d'un pipeline commun qui supporterait plusieurs types de construction, principalement des constructions Java utilisant soit Maven soit Gradle.
Phase 4 — Bibliothèque Partagée. Déplacement du code vers une bibliothèque centralisée crée une opportunité pour les équipes de développement de déclencher certaines tâches à partir d'un pipeline au lieu de les créer à partir de zéro à chaque fois.
Tous les changements effectués dans la bibliothèque sont centralisés là-bas. Cela signifie que lorsqu'un développeur implémente une correction dans la bibliothèque partagée, les changements s'appliquent automatiquement à tous les composants. La fonctionnalité du pipeline commun a été ensuite étendue pour supporter tous les types de construction.
Phase 5 — Retour d'Information. Collecte des retours des clients et correction des problèmes avec notre travail sur le pipeline.
Résultats
Le projet a duré plus de six mois et a apporté des résultats satisfaisants pour le client — le temps de développement a été réduit de 40 % du début à la fin. De plus, cela a mené à une optimisation des coûts, car il y a moins besoin d'utiliser du matériel pour le processus de développement. Le pipeline est un outil flexible qui permet de configurer les composants plus rapidement et plus facilement, sans affecter la qualité ou les mesures de sécurité.