# Versions de logiciels
# Episode 1 : les dépendances obsolètes
---
## Qu'est-ce qu'une version
---
## Semver
- [Gestion sémantique de version](https://semver.org/lang/zh-CN/) : un standard :
- [maven](http://maven.apache.org/pom.html#dependency-version-requirement-specification)
- github
---
## Semver : principes
- n° version = `MAJEUR.MINEUR.CORRECTION-préversion` :
- MAJEUR : entier incrémenté quand modif **non** rétrocompatible
- MINEUR : entier incrémenté quand modif rétrocompatible
- CORRECTION : entier incrémenté quand correction bogue
- préversion : chaîne alphanumérique (info sur la version)
---
## Semver : principes
- Ordre lexicographique entre les versions
- Quand on incrémente `MAJEUR`, raz `MINEUR` et `CORRECTION` ...
- Définir une API publique précise
- Ne jamais modifier une version publiée
- Modifications non rétro-compatibles (suppression...) :
1. Publier une version mineure avec `@Deprecated`
2. Publier la version majeure avec la modif
---
## Versions des dépendances dans **Maven** : bonnes pratiques
- Les n° de versions sont des properties
- Toutes les properties sont centralisées dans le pom parent du projet
- **Supprimer les dépendances inutiles**
---
## Spring boot dependencies
Hériter de :
```
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.6.RELEASE</version>
```
---
## La nécessité des montés de version
---
## La galère des montés de version : ~~dependaboat~~ -> dependabot
- Qu'est-ce que c'est :
- Automate de vérification des dépendances obsolètes
- compatible maven, yarn, npm...
- Signale les vulnérabilités ?
- Possibilité d'automatiser la mise à jour des pom
- [Page DAAP](http://architecture-applicative.gitlab-pages.insee.fr/documentation/services_ingenierie/developpement/dependabot/)
- [Documentation](https://docs.github.com/en/free-pro-team@latest/github/administering-a-repository/keeping-your-dependencies-updated-automatically)
---
## Comment le mettre en oeuvre sur gitlab.insee.fr
- De manière autonome :
- Cloner [le projet du DOT](https://gitlab.insee.fr/outils-transverses/services-dev/dependabot)
- Paramétrer un pipeline sur ce projet pour vérifier le projet cible :
- Chemin du projet cible
- Token pour merge requests
- Token pour scanner repo github
- Merge request
- Mode de notification
- planification
---
## Lire les résultats
- Fichier
- Merge request
## Avertissement
---
## Aller plus loin
- Sécurité
- Dépendances en fin de vie
---
## Après
Gérer la version de votre application :
- afficher la version
- incrémenter automatiquement la version
{"metaMigratedAt":"2023-06-15T16:14:27.169Z","metaMigratedFrom":"Content","title":"Versions de logiciels","breaks":true,"contributors":"[{\"id\":\"97bffc1a-181f-4ccb-956c-fb0fdc5fa2b9\",\"add\":3548,\"del\":868}]"}