J'expliquais un système de construction proposé (Gradle / Artifactory / Jenkins / Chef) à l' un de nos architectes supérieurs, et il a fait un commentaire à moi que je sorte de désaccord avec, mais je suis pas assez expérimenté pour vraiment pesée sur.
Ce projet crée une bibliothèque Java (JAR) en tant qu'artefact pouvant être réutilisé par d'autres équipes. Pour la gestion des versions, j'aimerais utiliser l'approche sémantique de:
<major>.<minor>.<patch>
Où patch
indique un correctif de bogue / urgence, minor
indique les versions à compatibilité ascendante, et major
indique soit des refactorisations massives de l'API et / ou des modifications incompatibles avec les versions antérieures.
En ce qui concerne la livraison, voici ce que je veux: un développeur commet du code; cela déclenche une construction dans un environnement QA / TEST. Certains tests sont exécutés (certains automatisés, certains manuels). Si tous les tests réussissent, une génération de production publie le fichier JAR dans notre référentiel interne. À ce stade, le fichier JAR doit être mis à jour correctement, et je pensais utiliser le build.number
fichier généré automatiquement et fourni par notre outil de CI pour agir en tant que numéro de correctif.
Ainsi, le versioning serait en réalité:
<major>.<minor>.<build.number>
Là encore, où build.number
est fourni par l'outil de CI.
L'architecte a rejeté cet argument, affirmant que l'utilisation du numéro de build de CI constituait un "abus" du versioning sémantique.
Ma question est la suivante: est-ce correct et si oui, pourquoi? et si non, pourquoi pas?
la source
Une des raisons est que le correctif peut nécessiter plusieurs versions. Par conséquent, si vous avez la version 5.7 et que vous souhaitez la corriger vers la version 5.7.1, mais que vos deux premiers correctifs de bogues ne parviennent pas à se créer lorsqu'ils sont soumis au système CI, à 5.7.3 avant de publier votre premier patch!
La solution consiste simplement à utiliser 4 chiffres (comme le sont généralement les systèmes Microsoft). Le 4ème est un numéro de build et est utilisé "pour information seulement". Généralement, les gens y mettent le numéro de version du référentiel (s’ils utilisent SVN, TFS ou un logiciel similaire), ce qui est très pratique, car vous pouvez vérifier le commit exact utilisé pour construire les fichiers binaires. Si vous ne possédez pas une telle chose, alors le nombre de build de CI est une approximation raisonnable (car vous espérez que votre système de CI peut mémoriser les numéros de build et le lier à l'historique des pensions, mais vous ne comptez pas sur le CI. système en les mémorisant - vous ne pouvez jamais supprimer les anciennes versions).
Une chose à noter, le schéma Microsoft pour la gestion des versions utilise la 3ème position pour les numéros de build. Chrome utilise un seul numéro. Ubuntu utilise la date. Il n'y a pas de "standard" à utiliser , sauf que tous les nombres doivent être incrémentés.
la source