Créer un changelog grâce à git et gradle



  • Sommaire

    Introduction

    Vous souhaitez donner un changelog à vos utilisateurs pour voir les dernières modifications et votre mod est disponible sur un repo git tel que github ? Alors voici un petit tuto qui vous permettra d'en créer simplement.

    Pré-requis

    • Comprendre globalement l'utilité de gradle et son fonctionnement

    Code

    build.gradle :

    Au tout début de votre build.gradle, après le block "buildscript", ajoutez ceci :

    plugins {
        id "se.bjurr.gitchangelog.git-changelog-gradle-plugin" version "1.32"
    }
    

    Cela va ajouter le plugin.

    Ensuite rajoutez cette condition à la toute fin :

    plugins.withType(se.bjurr.gitchangelog.plugin.gradle.GitChangelogGradlePlugin.class) {
    }
    

    Cette condition nous permet d'exécuter le code uniquement si le plugin est chargé correctement.

    Maintenant il ne vous reste plus qu'à rajouter ce code à l'intérieur des crochets :

    task makeChangelog(type: se.bjurr.gitchangelog.plugin.gradle.GitChangelogTask) { // "makeChangelog" sera le nom à appeler pour générer le changelog, vous pouvez mettre ce que vous voulez
            filePath = "CHANGELOG.html" // filePath correspond à la destination du changelog
            untaggedName = "Current release ${project.version}" // untaggedName est la valeur qui sera générée en haut du changelog pour préciser la version courante du mod
            templateContent = file('changelog.mustache').getText('UTF-8') // ici on indique que le format sera à lire dans le fichier changelog.mustache
        }
    

    changelog.mustache :

    Ce fichier va vous permettre de formater les données récupérées via git, voici le format que j'utilise pour générer une page web simple :

    {{#tags}}
    <h1>{{name}}</h1>
    {{#issues}}
     {{#hasIssue}}
      {{#hasLink}}
    <h3>{{name}} [{{issue}}]({{link}}) {{title}}</h3>
      {{/hasLink}}
      {{^hasLink}}
    <h3>{{name}} {{issue}} {{title}}</h3>
      {{/hasLink}}
     {{/hasIssue}}
     {{^hasIssue}}
    <h3>{{name}}</h3>
     {{/hasIssue}}
    
     <h2>Commits :</h2>
     {{#commits}}
    <a href="https://github.com/SCAREXgaming/SCLib/commit/{{hash}}"><h3>{{{messageTitle}}} by {{authorName}} at {{commitTime}}</h3></a>
    
    <ul>{{#messageBodyItems}}
    <li>{{.}}</li>
    {{/messageBodyItems}}
    </ul>
    
     {{/commits}}
    
    {{/issues}}
    {{/tags}}
    

    Pour que vous compreniez mieux comment créer ce fichier, voici la documentation où se trouvent toutes les valeurs utilisables.

    Voilà, maintenant il ne vous reste plus qu'à générer votre changelog grâce à gradlew makeChangelog.

    Résultat

    Example de changelog avec le format montré au-dessus

    Crédits

    Rédaction :

    • SCAREX

    Correction :

    Creative Commons
    Ce tutoriel de SCAREX publié sur Minecraft Forge France est mis à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International

    retourRetour vers le sommaire des tutoriels



  • Maisss tu es une vrai machine a écrire !?!



  • @'moscaphone421':

    Maisss tu es une vrai machine a écrire !?!

    ça prend pas beaucoup de temps à écrire, il me reste encore un tuto à faire là.


  • Rédacteurs

    Bon tutoriel, c'est très utile (bien que je préfère le format de changelog de forge, le tien a une trop grosse écriture, je sais qu'on peut changer)
    En tout cas nice ce tuto


  • Administrateurs

    J'imagine qu'il y a moyen d'adapter pour générer le changelog pour le système de maj de forge ?


  • Rédacteurs

    Et je me disais aussi, pas obligé d'appeler le fichier changelog.mustach, il faut juste mettre le même nom que dans le build.gradle ?



  • @'BrokenSwing':

    Bon tutoriel, c'est très utile (bien que je préfère le format de changelog de forge, le tien a une trop grosse écriture, je sais qu'on peut changer)
    En tout cas nice ce tuto

    On peut tout changer, perso j'ai fait un petit truc en html mais tu peux faire ce que tu veux au format que tu veux.

    @'robin4002':

    J'imagine qu'il y a moyen d'adapter pour générer le changelog pour le système de maj de forge ?

    C'est à dire ? Je crois que le changelog de forge est généré via Jenkins, mais en théorie on peut faire ce que l'on veut.

    @'BrokenSwing':

    Et je me disais aussi, pas obligé d'appeler le fichier changelog.mustach, il faut juste mettre le même nom que dans le build.gradle ?

    Je l'ai pas précisé mais c'est évident. Après il faut juste faire attention au format car le plugin est compatible avec différents formats.


  • Administrateurs

    c'est à dire générer un json comme celui-ci : http://dl.mcnanotech.fr/FFMT/libs/version.json
    (dans le @Mod, il y a un String pour indiquer ce json (updateUrl si mes souvenir sont bon), cela permet d'utiliser le système de vérification de mise à jour intégré à forge pour son propre mod).
    Actuellement je le modifie la main, c'est bien chiant x)



  • @'robin4002':

    c'est à dire générer un json comme celui-ci : http://dl.mcnanotech.fr/FFMT/libs/version.json
    (dans le @Mod, il y a un String pour indiquer ce json (updateUrl si mes souvenir sont bon), cela permet d'utiliser le système de vérification de mise à jour intégré à forge pour son propre mod).
    Actuellement je le modifie la main, c'est bien chiant x)

    Quand je parle du format, je parle du format d'entrée. Pour ce qui est de la sortie on peut mettre tout ce que l'on veut (je vais essayer de faire quelque chose qui puisse générer un json comme ça)

    EDIT : de ce que j'ai vu malheureusement c'est plus compliqué car il est impossible pour le plugin de regrouper par version de minecraft. Et il est impossible de placer correctement les virgules, désolé.



  • @'robin4002':

    c'est à dire générer un json comme celui-ci : http://dl.mcnanotech.fr/FFMT/libs/version.json
    (dans le @Mod, il y a un String pour indiquer ce json (updateUrl si mes souvenir sont bon), cela permet d'utiliser le système de vérification de mise à jour intégré à forge pour son propre mod).
    Actuellement je le modifie la main, c'est bien chiant x)

    J'ai décidé de me lancer dans le projet de réaliser ce plugin, si tu as quelques idées en tête je prends 😉