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 :
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 -
Super tuto ;D