ForgeChangelogGradlePlugin : créer un changelog pour forge via gradle


  • ForgeChangelogGradlePlugin

    J'ai décidé suite au message de robin de créer un plugin pour gradle qui permettrait de créer un changelog via git (ou manuellement) pour ensuite le specifier dans le @Mod.

    Le plugin est donc terminé, rendez-vous ici.

  • Modérateurs

    Tu peux essayer de passer par la task JenkinsChangelog que tous les mods peuvent hériter.
    D'ailleurs, tu sais écrire des jsons avec Java ou tu as besoin d'aide pour ça ?


  • @'Superloup10':

    Tu peux essayer de passer par la task JenkinsChangelog que tous les mods peuvent hériter.
    D'ailleurs, tu sais écrire des jsons avec Java ou tu as besoin d'aide pour ça ?

    Le problème de cette task est qu'elle a besoinde Jenkins de ce que j'ai vu, or pas tout le monde a accès à un jenkins, et j'aimerais utiliser git au possible.

    Pour ça pas de problème (actuellement j'ai un petit problème mais je devrais arriver à le régler)

    EDIT : le problème est réglé

  • Modérateurs

    Du coup, actuellement, tu bloques où ?


  • @'Superloup10':

    Du coup, actuellement, tu bloques où ?

    Je bloque en fait sur comment récupérer la liste des versions, car beaucoup de mods ne spécifient pas la version de minecraft dans la version (comme FFMTLibs), pour l'instant j'ai décidé de générer ces versions via un pattern qui sera appliqué sur les versions récupérées soit sur maven soit sur git mais je suis pas trop fan de cette solution.

  • Modérateurs

    Tu peux get la version de minecraft comme étant celle indiqué ici.
    Ensuite pour la version du mod, c'est le même principe.


  • @'Superloup10':

    Tu peux get la version de minecraft comme étant celle indiqué ici.
    Ensuite pour la version du mod, c'est le même principe.

    Le problème c'est qu'à ce moment là il faut copier tout le repo pour ensuite récupérer cette valeur car elle peut être placée dans un fichier différent

  • Modérateurs

    Non, avec ForgeGradle, tu seras toujours obligé de mettre

    minecraft {
    version = "version_aléatoire" // Version aléatoire peut être lu depuis un fichier externe, mais il sera toujours indiqué dans le build.gradle
    }
    

    Donc pour y accéder, tu seras obligé de passer par ```
    project.minecraft.version


  • @'Superloup10':

    Non, avec ForgeGradle, tu seras toujours obligé de mettre

    minecraft {
    version = "version_aléatoire" // Version aléatoire peut être lu depuis un fichier externe, mais il sera toujours indiqué dans le build.gradle
    }
    

    Donc pour y accéder, tu seras obligé de passer par ```
    project.minecraft.version

    Oui mais dans tous les cas il faut compiler le projet (pas forcément le build mais le mettre en tant que sous-projet)


  • J'ai rajouté une fonctionnalité : on peut générer les versions via un repo maven (en revanche le changelog pour chaque version est vide puisqu'il n'est pas disponible sur maven)

    Par exemple pour le mod FFMT-libs :

    {
    "homepage": "http://ci.mcnanotech.fr/job/FFMT-libs/",
    "1.9.4": {
    "1.6.4.175-mc1.9.4": "",
    "1.6.3.174-mc1.9.4": ""
    },
    "1.9": {
    "1.6.3.173-mc1.9": "",
    "1.6.3.172-mc1.9": "",
    "1.6.3.170-mc1.9": "",
    "1.6.3.169-mc1.9": "",
    "1.6.3.168-mc1.9": "",
    "1.6.3.167-mc1.9": "",
    "1.6.3.166-mc1.9": "",
    "1.6.3.165-mc1.9": "",
    "1.6.3.164-mc1.9": "",
    "1.6.3.163-mc1.9": "",
    "1.6.3.162-mc1.9": "",
    "1.6.3.160-mc1.9": ""
    },
    "1.8.9": {
    "1.6.2.159-mc1.8.9": "",
    "1.6.2.158-mc1.8.9": "",
    "1.6.2.157-mc1.8.9": "",
    "1.6.2.155-mc1.8.9": ""
    },
    "1.8.8": {
    "1.6.2.153-mc1.8.8": "",
    "1.6.2.152-mc1.8.8": "",
    "1.6.2.150-mc1.8.8": "",
    "1.6.2.149-mc1.8.8": ""
    },
    "1.8": {
    "1.6.1.148-mc1.8": "",
    "1.6.1.147-mc1.8": "",
    "1.6.1.146-mc1.8": "",
    "1.6.1.145-mc1.8": "",
    "1.6.1.144-mc1.8": ""
    }
    }
    

  • J'ai ajouté la génération des versions via git : en revanche si vous souhaitez avoir le changelog de git pour l'instant vous êtes obligé d'avoir ajouté les tags correspondant aux versions car sinon on peut pas trouver les commits correspondants aux versions (j'ajouterai par la suite un moyen de générer ce changelog via les hash des commits).

    En revanche je suis bloqué sur un truc : comment générer les versions recommandées et les dernières (pour accéder à la dernière version j'avais pensé à comparer les versions néanmoins le problème est que ça générera la dernière version uniquement pour la dernière version de minecraft).

    Voici le code actuellement généré pour un repo git (ici l'exemple est donné via mon repo SCLib) :

    {
    "homepage": "http://github.com/SCAREXgaming/SCLib/releases",
    "1.7.10": {
    "1.7.10-1.0.0": "SCAREX : First commit\nSCAREX : Modified changelog",
    "1.7.10-1.0.1": "SCAREX : Added gradle wrapper",
    "1.7.10-1.0.3": "SCAREX : still testing\nSCAREX : always testing\nSCAREX : And again\nSCAREX : no comment",
    "1.7.10-1.0.4": "SCAREX : …\nSCAREX : ..\nSCAREX : Changed version",
    "1.7.10-1.0.5": "SCAREX : Trying to add changelog maker",
    "1.7.10-1.1.0": "SCAREX : Added changelog again\nSCAREX : Finally added all the plugins I wanted",
    "1.7.10-1.1.1": "SCAREX : Testing things of jitpack.io",
    "1.7.10-1.1.2": "SCAREX : Nope",
    "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.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.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"
    }
    }
    
  • Moddeurs confirmés Rédacteurs Administrateurs

    Version recommandée je pense qu'il faut jenkins.
    De même avec jenkins il serai possible de récupérer le message de commit et l'envoyer dans la version associée.


  • @'robin4002':

    Version recommandée je pense qu'il faut jenkins.
    De même avec jenkins il serai possible de récupérer le message de commit et l'envoyer dans la version associée.

    Je connais pas très bien l'API de Jenkins, si quelqu'un peut m'aider 😉

  • Moddeurs confirmés Rédacteurs Administrateurs

    Je ne l'ai jamais utilisé non plus.


  • Après le problème aussi c'est que y'a pas tout le monde qui a accès à un Jenkins

  • Moddeurs confirmés Rédacteurs Administrateurs

    C'est pas difficile à mettre en place.
    Tu peux aussi l'installer en local sur windows.


  • @'robin4002':

    C'est pas difficile à mettre en place.
    Tu peux aussi l'installer en local sur windows.

    Oui si c'est juste pour faire ça autant le faire manuellement (dans tous les cas on peut remplir le json manuellement)

  • Moddeurs confirmés Rédacteurs Administrateurs

    Je pense qu'un programme qui remplit le changelog automatiquement n'a qu'un intérêt si un CI est en place.

    Car bon, si tu build manuellement le mod en général tu ne fais pas un build à chaque commit, donc tu peux aussi remplir le changelog manuellement avec autre chose que le message de commit.


  • @'robin4002':

    Je pense qu'un programme qui remplit le changelog automatiquement n'a qu'un intérêt si un CI est en place.

    Car bon, si tu build manuellement le mod en général tu ne fais pas un build à chaque commit, donc tu peux aussi remplir le changelog manuellement avec autre chose que le message de commit.

    Ce que je veux dire c'est que tu peux toujours créer un script pour faire une partie, personnellement je préfère que ce programme soit totalement compatible avec git (car c'est quelque chose que tout le monde peut avoir) et non avec des choses qui utilisent un serveur.

    Je vais voir pour intégrer Jenkins.

    En attendant je vais utiliser un comparateur pour trouver toutes les dernières version pour chaque version de minecraft, et ces versions seront aussi automatiquement marquées comme recommandée.


  • Pour ce qui est de comparer les versions : c'est bon je l'ai ajouté.

    Actuellement je suis en train de voir pour l'API Jenkins, malheureusement je bloque à un endroit : le json d'une build ne donne pas un accès direct à la version, il ne donne qu'un accès direct à l'id du build ( https://ci.mcnanotech.fr/job/FFMT-libs/175/api/json ). Je voudrai donc savoir si vous auriez un moyen de récupérer cette version facilement ?