Blog - Vincent PECQUERIE

Une gestion des versions automatiques avec Semantic Release


Une gestion des versions automatiques avec Semantic Release

Dans le développement de sites web, maintenir un suivi rigoureux du changelog et des versions peut vite devenir fastidieux. Grâce à des outils comme Semantic Release, cette tâche peut être automatisée, libérant ainsi du temps et garantissant une gestion efficace des versions et des changements. Dans le cas de ce site, c'est donc tout naturellement un élément à tester et intégrer.

Qu'est-ce que Semantic Release ?

Semantic Release est un outil de versioning et de gestion des changelogs conçu pour simplifier le processus de publication des versions de logiciels. Il suit les principes du versioning sémantique, ce qui signifie qu'il attribue automatiquement des numéros de version en fonction des types de changements apportés au code : majeur, mineur et correctif.

Comment ça fonctionne ?

Le processus avec Semantic Release est transparent et fluide. Une fois configuré dans le workflow de développement, chaque fois qu'un nouveau commit est fusionné dans la branche principale du dépôt (par exemple, la branche "main" ou "master"), Semantic Release analyse les modifications apportées, détermine le type de version à publier (majeure, mineure ou correctif), génère un changelog détaillé et publie automatiquement la nouvelle version du logiciel.

Avantages de l'utilisation de Semantic Release

  1. Automatisation : Plus besoin de gérer manuellement les numéros de version ou de rédiger les changelogs. Semantic Release s'occupe de tout.
  2. Précision : Les versions sont attribuées en fonction des modifications réelles du code, assurant ainsi un suivi précis de l'évolution du logiciel.
  3. Efficacité : En libérant les développeurs de la tâche fastidieuse de gestion des versions, Semantic Release permet de se concentrer sur le développement de fonctionnalités et l'amélioration du code.
  4. Transparence : Les changelogs générés fournissent une vue claire et détaillée de ce qui a été modifié dans chaque version, facilitant ainsi la communication avec les utilisateurs finaux et les autres membres de l'équipe.

Et concrètement ?

  1. Installation des dépendances nodejs (Semantic Release avec différents plugins + Replace Json Property pour le changement de version dans le package.json)
    npm install --save-dev \
        replace-json-property \
        semantic-release \
        @semantic-release/changelog \
        @semantic-release/commit-analyzer \
        @semantic-release/exec \
        @semantic-release/git \
        @semantic-release/gitlab \
        @semantic-release/npm \
        @semantic-release/release-notes-generator
    
  2. Déclaration de la configuration dans un fichier dédié .releaserc:
    {
      "pkgRoot": "dist/portfolio",
      "branches": [
         {
            "name": "main"
         },
         {
            "name": "develop",
            "prerelease": "beta"
         }
      ],
      "plugins": [
         "@semantic-release/changelog",
         "@semantic-release/commit-analyzer",
         "@semantic-release/release-notes-generator",
         [
            "@semantic-release/exec",
            {
               "prepareCmd": "VERSION=${nextRelease.version} npm run adjust-version"
            }
         ],
         [
            "@semantic-release/git",
            {   
               "assets": [
                  "package.json",
                  "CHANGELOG.md"
               ],
               "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
            }
         ],
         "@semantic-release/gitlab"
      ]
    }
    
  3. Configuration de la pipeline CI/CD:
       # Ajouter l'étape suivante dans la partie `script` 
       - npx semantic-release
    

    Exemple :
    image: node:lts
    before_script:
    - npm ci
    pages:
      script:
       - npx semantic-release
       - npm run generate
      artifacts:
         paths:
          - public
         rules:
           - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
    
  4. Dernière étape, il faut définir une variable GITLAB_TOKEN dans les variables de la pipeline. Le token applicatif doit avoir les droits api, read_api, read_user, read_repository, write_repository, read_registry et write_registry.
  5. Si vous respectez la notation de commit Karma, vous aurez alors gestion automatisée des numéros de version.

Conclusion

Semantic Release est un outil puissant qui simplifie grandement la gestion des versions et des changelogs dans le développement de sites web. En automatisant ce processus, il permet aux développeurs de se concentrer sur ce qui compte vraiment : créer un code de qualité et offrir une expérience utilisateur exceptionnelle. Si vous n'avez pas encore essayé Semantic Release, je vous encourage vivement à le faire. Vous ne serez pas déçu.

Liens Utiles :

Article publié le 6 mars 2024 par Vincent PECQUERIE.
Conformément à la licence CC-BY-NC, vous êtes autorisé (hors usage commerciale) à reprendre tout ou partie de l'article en citant l'auteur.

Me contacter...

Lieu de résidence

769 Avenue de l'Épée
Montréal, QC, H2V 3V1

Adresse E-mailAdresse E-mail pour me joindre

contact@vincent-p.fr

© CC-BY-NC - Vincent PECQUERIE