Jour 1 : SCM et Outils de build
Introduction
Le concept de l’usine logicielle
Cycle de vie d’un projet : de la spécification à la production
Les principes et apports de l’intégration continue
Relations avec les méthodes agiles, avec DevOps
Particularités d’un projet Open Source
Principes des logiciels Open Source, mode de développement, types de licences
Facteurs de réussite d’un projet Open Source
Création de communautés, Outils de communication (blogs, Wikis, Tweets, SlideShare)
Importance de la documentation
Le socle transverse, l’outil de SCM
Les outils de gestion de sources : rôles et apports
La solution Git est ses particularités
Modèles de collaboration Gitflow et Fork. Leur contexte d’utilisation
Les outils les plus répandus : GitLab et GitHub
Atelier 1 :
Initialisation d’un dépôt
Création de branches de développement et de branches de features
Les outils de construction et les gestionnaires d’artefacts
Les phases classiques de la construction, compilation, test unitaires, packaging
Les phases annexes : génération de code, optimisation, documentation, tests d’intégration, analyse de code
Gestion des dépendances projet, gestionnaires d’artefacts, les dépôts publics et les dépôts d’entreprise
Modèle Maven et pom.xml ; Modèle npm et package.json
Les autres outils Ant, Gradle, Ivy, MSBuild, Composer, Yarn
Mise en place d’un dépôt d’entreprise avec Nexus
Atelier 2 :
Adaptation d’un cycle de build (Maven ou Yarn)
Construction back-end Java ou front-end JavaScript
Commentaires des fichiers produits : classes compilées, résultats des tests
Publication des snapshots dans Nexus
Jour 2 : Les Tests Logiciels
Introduction
Typologie des tests, types de tests et phases de construction
Les méthodes centrées sur les tests. Principes de l’XP Programming
Les tests unitaires
Principes du test unitaire, Les outils xUnit
Assertions, Matchers
Données de test, méthodes de call-back setUp et tearDown
Isolation de classes, Mocking et Stub, Pattern IoC et injection de dépendances
Atelier 3 :
Écriture d’une classe de test
Exécution dans l’IDE (jUnit ou Karma/Jasmine) et exécution par l’outil de construction
Les tests d’intégration
Principes du test d’intégration
Les systèmes embarqués (bases de données et serveurs)
Problématique de déploiement, l’exemple d’Arquilian
Atelier 4 :
Écriture d’une classe de tests d’intégration et intégration dans le cycle de construction
Exécution par l’outil de construction
Les tests fonctionnels
L’approche boîte noire des tests fonctionnels
Clients Web et clients JavaScript
Exemple de Selenium, Protractor, JMeter
Atelier 5 :
Tests de l’API Rest via JMeter, Tests de l’interface par Protractor
Phase de recette et tests d’acceptance
Objectifs des tests d’acceptance, le BDD
Rôle du client dans les tests d’acceptance, tests d’acceptance et méthodes agiles
L’exemple de Cucumber
Atelier 6 :
Mise en place d’un test d’acceptance
Jour 3 : L’intégration continue
Introduction
Principes de l’intégration continue, le serveur d’intégration continue
Le serveur comme outil de communication
Les étapes de mise en place
Provisionnement de ressources et relation avec les outils DevOps
La référence Jenkins, les autres outils
Le serveur Jenkins
Principes de plugins
Intégration avec GitHub, GitLab
Répartition des responsabilités avec Nexus, SonarQube
Les différents types de jobs
Enchaînement des jobs, passages de paramètres, jobs multi-configuration, récupération d’artefacts
Architecture maître/esclave et distribution des jobs
Atelier 7 :
Configuration système Jenkins et outils associés, Création de jobs
Analyse continue de la qualité
Métriques internes / métriques externes
Facteurs de qualité et métriques standards
La plateforme SonarQube
Tests de performance avec JMeter
Intégration dans Jenkins
Atelier 8 :
Configuration Sonar, Intégration de l’analyse, Création de jobs
Jour 4 : La mise en production
Release d’un logiciel
Numérotation des versions, gestion des tags
Branche de préparation de release
Publication des artefacts
Automatisation des releases avec Git/Maven/Nexus
Atelier 9 :
Automatisation du processus de release
Pipeline de déploiement
Déploiement continu et approche DevOps
Les pipelines appliqués aux branches GitFlow
Phase de promotion manuelle dans les pipelines
Tests post-déploiement
Atelier 10 :
Pipeline complet de déploiement Jenkins avec promotion manuelle
Révision de produit
Outils de suivi des bugs (Bugzilla, Trac, Jira)
Workflows de traitement
Revue de code avec Git
Gestion de backlog et de milestones
Atelier/Démonstration :
Workflow de traitement d’un ticket
Retours utilisateurs
Outils de suivi des utilisateurs
Gestion des retours utilisateurs
Outils d’animation de communauté
Atelier/Démonstration :
Produits de suivi de communauté
Étude de cas
Un projet quasiment complet sert de support aux ateliers. À chaque atelier, il est demandé aux participants de comprendre le code fourni et de le compléter afin d’atteindre l’objectif de l’énoncé. Cette méthodologie favorise une compréhension en profondeur de l’implémentation fournie dans un délai relativement court.
À la fin de chaque atelier, la correction complète est commentée. Le projet corrigé dans son intégralité peut alors servir de référence lors du retour du stagiaire dans son contexte professionnel.
Fonctionnellement, le projet propose une plateforme d’échange de fichiers entre membres d’une communauté. Il est composé d’un back-end REST Java (SpringBoot) et d’un front-end JavaScript (Angular 4). Les participants peuvent alors choisir la technologie dans laquelle ils sont les plus à l’aise lors des ateliers.