S9 DOSI Plateforme d'intégration continue

Présentation

La production de logicielle à échelle industrielle entraîne de nombreux challenges, entre la nécessité de travailler en équipe (parfois à distance), de s’assurer de la qualité des livrables ou bien encore de toujours mettre à disposition une version stable d’un projet pour validation ou recette. Ce cours permet d’introduire une suite d’outils (IntelliJ, Git, Maven/Gradle, Jenkins, SonarQube, Docker, …) et de méthodes permettant de réduire ces complications et d'automatiser le processus de développement.

Pré-requis nécessaires

  • Système d’exploitation Linux et langage de commande bash
  • Programmation Java

Objectifs

Ce cours permet d’appréhender un environnement de développement industrialisé et de mettre en pratique les concepts de l'intégration continue :

  • Coder et compiler à l’aide d’un IDE comme IntelliJ.
  • Travailler en équipe, gérer les versions de son travail, gérer les conflits de code avec Git.
  • Gérer ses dépendances et uniformiser ses builds grâce à Maven ou Gradle.
  • Dockeriser la chaîne de développement des applications, depuis le poste du développeur jusqu’aux environnements de tests et d’’intégration.
  • Intégrer ses modifications en continue avec gitlab-ci.
  • Mesurer et améliorer la qualité de ses développements grâce à SonarQube.
  • Comprendre les principes de l'intégration continue et son importance dans le cycle de vie du développement logiciel.
  • Mettre en place et configurer un pipeline d'intégration continue.
  • Automatiser les tests unitaires et d’intégration, l'analyse de code et le déploiement.

Compétences visées

  • Savoir utiliser un environnement de développement industriel.
  • Maîtriser les outils d'intégration continue
  • Être capable de mettre en place et de gérer un pipeline d'intégration continue.
  • Comprendre les bonnes pratiques de développement en équipe et de gestion de versions.
  • Savoir automatiser les tâches de build, de test et de déploiement.
  • Être capable d'analyser et d'améliorer la qualité du code.