Comment créer un changelog pour forge grâce au plugin ForgeChangelogGradlePlugin



  • Sommaire

    Introduction

    Vous souhaitez utiliser la nouvelle fonction de forge pour récupérer les versions de votre mod ? Voici comment faire grâce au plugin ForgeChangelogGradlePlugin.

    Pré-requis

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

    Code

    build.gradle :

    Première chose il va vous falloir ajouter le plugin, ajoutez ceci au début de votre build.gradle (après le bloc buildscript par exemple mais pas après) :

    plugins {
        id "fr.scarex.fcgp" version "1.0.4"
    }
    

    Ensuite il va vous falloir définir vos paramètres dans le bloc "forgeChangelog" comme ceci :

    forgeChangelog {
        clé = valeur
    }
    

    Voici une liste de tous les paramètres disponibles avec leur valeur par défaut :

    String changelogSource = "git" // la source utilisée pour générer le changelog, valeur possibles : git, jenkins(:url) (ici l'url n'est pas obligatoire si vous l'avez mis comme source autre part)
    
    TreeMap<String, TreeMap<String, String>> customVersions // Une liste de versions que vous pouvez rentrer manuellement
    
    String homepage = null // le lien pour télécharger votre mod qui apparaîtra dans le json
    
    Pattern versionPattern = Pattern.compile("(?i)(?<artifactName>[a-zA-Z_-]*)(?:\\-)?(?<version>(?<mcversion>(?:\\d+)(?:\\.\\d+)*)(?:\\-)((?:\\d+)(?:\\.\\d+)*))(?:\\-(?<classifier>[a-zA-Z1-9]+))?") // le pattern afin de déterminer la version de minecraft, par défaut c'est celui conseillé par forge. Il doit OBLIGATOIREMENT contenir le groupe mcversion et version
    
    String versioningSource = "git" // La source utilisée pour générer la liste des versions, valeurs possibles : git, jenkins(:url) (ici l'url n'est pas obligatoire si vous l'avez mis comme source autre part), maven:url
    
    String promosSource = "" // La source utilisée pour générer les dernières versions ainsi que celles recommandées, valeurs possibles : jenkins(:url) (ici l'url n'est pas obligatoire si vous l'avez mis comme source autre part)
    
    File customGitRepo = null // Spécifiez l'emplacement du repo git s'il est différent de l'endroit de votre projet
    
    TreeMap<String, String> promos = new TreeMap<>(Collections.reverseOrded()) // une liste des promos à ajouter manuellement
    
    File destination = null // VALEUR OBLIGATOIRE ! Spécifie l'emplacement du json à générer
    
    boolean prettyPrinting = true // Spécifie si le json doit être rendu de façon claire
    
    boolean generateLatestsFromVersions = true // indique s'il faut générer les dernières versions depuis les versions données
    
    boolean latestsAsRecommended = true // indique s'il faut mettre les dernières versions comme recommandées
    

    Donc par exemple pour un repo git, vous pouvez faire ceci :

    forgeChangelog {
        destination = file("changelog-${archivesBaseName}.json")
        homepage = "http://github.com/User/Repo/releases"
    }
    

    Pour un repo jenkins :

    forgeChangelog {
        destination = file("changelog-${archivesBaseName}.json")
        generateLatestsFromVersions = false
        changelogSource = "jenkins"
        versioningSource = "jenkins:lienVersVotreJenkins"
        promosSource = "jenkins"
    }
    

    Résultat

    Pour mon repo SCLib :

    {
        "homepage": "http://github.com/SCAREXgaming/SCLib/releases",
        "promos": {
        "1.7.10-recommended": "1.7.10-1.2.2",
        "1.7.10-latest": "1.7.10-1.2.2"
        },
        "1.7.10": {
        "1.7.10-1.2.2": "SCAREX : 1.2.2 : - added some CoFH mods for testing - added some source files - fixed bug : the configurator from Mekanism didn\u0027t work\nSCAREX : Renaming + fixed bug",
        "1.7.10-1.2.1": "SCAREX : Added test files\nSCAREX : Added Mekanism Testing things with jitpack.io\nSCAREX : Testing : added optional parameter when publishing\nSCAREX : Testing with install task\nSCAREX : New test",
        "1.7.10-1.2.0": "SCAREX : -Added blocks and items lists -Added energy blocks -Added abstract item\nSCAREX : Modified version",
        "1.7.10-1.1.2": "SCAREX : Nope",
        "1.7.10-1.1.1": "SCAREX : Testing things of jitpack.io",
        "1.7.10-1.1.0": "SCAREX : Added changelog again\nSCAREX : Finally added all the plugins I wanted",
        "1.7.10-1.0.5": "SCAREX : Trying to add changelog maker",
        "1.7.10-1.0.4": "SCAREX : ...\nSCAREX : ..\nSCAREX : Changed version",
        "1.7.10-1.0.3": "SCAREX : still testing\nSCAREX : always testing\nSCAREX : And again\nSCAREX : no comment",
        "1.7.10-1.0.1": "SCAREX : Added gradle wrapper",
        "1.7.10-1.0.0": "SCAREX : First commit\nSCAREX : Modified changelog"
        }
    }
    

    Pour le jenkins de FFMT-libs :

    {
        "homepage": "http://ci.mcnanotech.fr/job/FFMT-libs/",
        "promos": {
        "1.10.2-recommended": "1.7.0.176",
        "1.10.2-latest": "1.7.0.176"
        },
        "1.9.4": {
        "1.6.4.175": "Robin : bump version number for mc 1.9.4\n",
        "1.6.3.174": ""
        },
        "1.9": {
        "1.6.3.173": "Superloup10 : Update Forge, mappings, gradle - add gradle.properties\n",
        "1.6.3.172": "Superloup10 : Fix missing mapping\n",
        "1.6.3.170": "baumeyerkevin : Doc\n",
        "1.6.3.169": "baumeyerkevin : Fix BlockSittable\n",
        "1.6.3.168": "Superloup10 : Add registerBlock\n",
        "1.6.3.167": "baumeyerkevin : Update build.gradle\n",
        "1.6.3.166": "baumeyerkevin : Reverse last\n",
        "1.6.3.165": "baumeyerkevin : New option allowing to disable hats\n",
        "1.6.3.164": "baumeyerkevin : Update FFMTRegistry\n",
        "1.6.3.163": "baumeyerkevin : Update build\n\nbaumeyerkevin : Update to forge 1805\n",
        "1.6.3.162": "baumeyerkevin : Fix build\n",
        "1.6.3.160": ""
        },
        "1.8.9": {
        "1.6.2.159": "baumeyerkevin : Things\n",
        "1.6.2.158": "baumeyerkevin : Imporvement of 3D texts\n",
        "1.6.2.157": "baumeyerkevin : Fix encoding\n",
        "1.6.2.155": "baumeyerkevin : Update to mc 1.8.9, forge 1669, map 20160102\n"
        },
        "1.8.8": {
        "1.6.2.153": "Robin : fix drawTexture function\n",
        "1.6.2.152": "Robin : fix last commit\n",
        "1.6.2.150": "baumeyerkevin : Keep hovering text in screen\n",
        "1.6.2.149": "baumeyerkevin : Update to mc\u0026forge 1.8.8\n"
        },
        "1.8": {
        "1.6.1.148": "baumeyerkevin : Improve slider\n",
        "1.6.1.147": "Robin : java doc, again\n",
        "1.6.1.146": "Robin : fix some other javadoc error\n",
        "1.6.1.145": "Robin : fix some javadoc error\n",
        "1.6.1.144": "Robin : update gradle\n",
        "1.6.0.142": "baumeyerkevin : Change things\n",
        "1.6.0.141": "baumeyerkevin : New GUI\n",
        "1.6.0.140": "baumeyerkevin : Fix texture\n",
        "1.6.0.139": "baumeyerkevin : New gui system\n",
        "1.6.0.138": "baumeyerkevin : things\n",
        "1.6.0.137": "baumeyerkevin : Little fix\n\nbaumeyerkevin : Little fix\n",
        "1.6.0.136": "Robin : remove code about NHG\n",
        "1.6.0.135": "Robin : update forge, avoid to use reflexion for layer\n",
        "1.6.0.134": "jglrxavpok : Fixed crash on servers related to hats\n",
        "1.6.0.133": "",
        "1.6.0.132": "Robin : fix javadoc\n",
        "1.6.0.130": "",
        "1.6.0.129": "",
        "1.5.0.128": "",
        "1.5.0.127": "",
        "1.5.0.126": "",
        "1.5.0.125": "",
        "1.5.0.120": "",
        "1.5.0.119": "",
        "1.5.0.118": ""
        },
        "1.7.2": {
        "1.4.2.84": "",
        "1.4.2.83": "",
        "1.4.2.82": "",
        "1.4.2.81": "",
        "1.4.2.80": "",
        "1.4.2.79": "",
        "1.4.1.76": "",
        "1.4.1.75": "",
        "1.4.0.72": "",
        "1.4.0.71": "",
        "1.4.0.70": "",
        "1.4.0.69": "",
        "1.4.0.68": ""
        },
        "1.7.10": {
        "1.5.0.113": "",
        "1.5.0.112": "",
        "1.5.0.111": "",
        "1.5.0.110": "",
        "1.5.0.105": "",
        "1.5.0.103": "",
        "1.5.0.100": "",
        "1.4.4.99": "",
        "1.4.4.98": "",
        "1.4.4.97": "",
        "1.4.4.96": "",
        "1.4.4.95": "",
        "1.4.4.94": "",
        "1.4.4.93": "",
        "1.4.3.91": "",
        "1.4.3.90": "",
        "1.4.3.89": "",
        "1.4.3.88": "",
        "1.4.3.87": ""
        },
        "1.10.2": {
        "1.7.0.176": "Superloup10 : Bump version, forge version and mappings\n"
        }
    }
    

    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



  • Super tuto ;D