Publier son mod sur github et y accéder via jitpack.io



  • Sommaire

    Introduction

    Vous n'avez pas de repository maven ni de site web et vous aimeriez mettre à disposition vos mods pour tous le monde sur github et y accéder facilement par la suite, voici comment faire.

    Pré-requis

    • Comprendre le fonctionnement et l'utilité de gradle
    • Avoir un repo sur github

    Code

    Publier son mod sur github :

    Tout d'abord vous allez avoir besoin d'un token de connection que vous allez fournir au plugin, pour ça connectez vous sur Github et générez un token de connection avec un accès aux repo.

    Une fois ça fait il vous faut créer un fichier où vous mettrez cette information, personnellement je l'appellerai "private.properties" (il est important de mettre cette valeur dans un fichier externe pour pouvoir le retirer dans le .gitignore pour que le token ne se retrouve pas sur votre github), dedans mettez github_token=votreToken, comme ceci (où votreToken correspond au token généré précédemment) :

    github_token=votreToken
    

    Maintenant il nous faut ajouter le plugin :
    avant mavenCentral() ajoutez jcenter()
    après classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT' ajoutez classpath 'co.riiid:gradle-github-plugin:0.4.2'
    et après apply plugin: 'forge' ajoutez apply plugin: 'co.riiid.gradle'

    Ce qui devrait vous donnez quelque chose ressemblant à ceci :

    buildscript {
        repositories {
            jcenter()
            mavenCentral()
            maven {
                name = "forge"
                url = "http://files.minecraftforge.net/maven"
            }
            maven {
                name = "sonatype"
                url = "https://oss.sonatype.org/content/repositories/snapshots/"
            }
        }
        dependencies {
            classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
            classpath 'co.riiid:gradle-github-plugin:0.4.2'
        }
    }
    
    plugins {
        id "se.bjurr.gitchangelog.git-changelog-gradle-plugin" version "1.32"
    }
    
    apply plugin: 'forge'
    apply plugin: 'co.riiid.gradle'
    
    group = ""
    archivesBaseName = ""
    
    minecraft {
        // code retiré pour une meilleure compréhension
    }
    
    processResources
    {
        // code retiré pour une meilleure compréhension
    }
    

    Maintenant nous allons ajouter la condition pour voir si le fichier est présent (à placer à la fin de votre fichier build.gradle) :

    if (file('private.properties').exists()) {}
    

    Maintenant que ceci est fait nous allons ajouter 2 blocs de code :

    Nous allons ajouter la config afin de récupérer le token github

    // Config
        ext.privateConfigFile = file 'private.properties' // On spécifie le fichier
    
        privateConfigFile.withReader { // Et on le charge sous le nom privateConfig
            def p = new Properties()
            p.load(it)
            project.ext.privateConfig = new ConfigSlurper().parse p
        }
    

    Maintenant nous allons ajouter la publication sur github

    // Github release
        github {
            owner = 'votreNomDUtilisateurGithub'
            repo = 'leNomDuRepo'
            token = privateConfig.github_token // votre token
            tagName = version // la version de la release, ici on garde celle spécifiée pour générer le mod
            assets = [ // On ajoute tous les fichiers que l'on veut publier
                "build/libs/${archivesBaseName}-${version}-sources.jar", // Le fichier source (facultatif)
                "build/libs/${archivesBaseName}-${version}-dev.jar", // Le fichier pour les développeurs (facultatif)
                "build/libs/${archivesBaseName}-${version}.jar" // Le fichier de base
            ]
        }
    

    Cela devrait vous donner quelque chose comme ça à la fin de votre build.gradle :

    if (file('private.properties').exists()) {
        // Config
        ext.privateConfigFile = file 'private.properties'
    
        privateConfigFile.withReader {
            def p = new Properties()
            p.load(it)
            project.ext.privateConfig = new ConfigSlurper().parse p
        }
    
        // Github release
        github {
            owner = 'nomDUtilisateur'
            repo = 'votreRepo'
            token = privateConfig.github_token
            tagName = version
            assets = [
                "build/libs/${archivesBaseName}-${version}-sources.jar",
                "build/libs/${archivesBaseName}-${version}-dev.jar",
                "build/libs/${archivesBaseName}-${version}.jar"
            ]
        }
    }
    

    Maintenant que tous ça est fait vous pouvez publier votre mod grâce à la commande gradlew githubRelease

    Récupérer son mod via jitpack.io :

    Votre mod est publié sur github mais vous aimeriez y accéder via gradle très simplement, c'est là qu'intervient jitpack.io puisqu'il vous est impossible d'accéder directement au mod depuis github, jitpack va récupérer les sources de votre mod (je parle bien des sources et non de la release publiée précédemment) pour ensuite générer le repo maven grâce aux commandes gradlew install build publishToLocalMavenRepository.

    Donc si vous voulez utiliser cette fonctionnalité il faudra :

    • Ajouter le gradle wrapper sur github si ce n'est pas le cas (si vous ne le donnez pas avec, jitpack va utiliser la dernière version disponible et ça peut causer des problèmes)
    • Ajouter le plugin maven : à la suite de tous les plugins, ajoutez : apply plugin: 'maven'

    Il se peut que certains plugins soit incompatibles ou ne se téléchargent pas correctement, pour savoir si le mod a bien été généré, rendez-vous sur Jitpack, vous verrez alors une barre de recherche en haut, tapez ceci : VotreNomDUtilisateur/VotreRepo puis effectuez une recherche. Vous verrez alors une liste de toutes les versions disponibles : si le bouton "get it" est vert cela veut dire que le build du mod a réussi sinon envoyez les logs sur ce post et j'essaierai de vous dire ce qui ne va pas. Il se peut aussi que le mod ne soit pas encore généré, patientez un peu : un cercle vert va apparaître pour vous dire que le mod se génère.

    Une fois le mod généré, il va falloir demander à gradle de le télécharger, je vous conseille pour ça de lire mon tutoriel sur comment gérer les dépendances avec gradle afin de comprendre cette partie.

    Dans votre bloc "repositories", ajoutez ceci après TOUS les repositories (ce repo contient une très grande quantité de fichiers, il est donc conseillé de le placé en dernier afin d'optimiser le téléchargement des mods) :

    maven {
            name "Jitpack"
            url "https://jitpack.io"
        }
    

    Maintenant pour ajouter le mod voulut, rajoutez ceci dans le bloc "dependencies" :

    compile "com.github.NomDUtilisateur:Repo:Version"
    

    Par exemple pour mon mod SCLib, cela donnera compile "com.github.SCAREXgaming:SCLib:1.1.2"

    Bonus

    Si vous voulez ajoutez le changelog comme téléchargement, je vous conseille ceci :
    Retirer le changelog du repo grâce au .gitignore et ajouter le nom de votre fichier dans la liste assets du bloc github.

    Résultat

    Tout ce qui est donné dans ce tutoriel est appliqué sur mon repo https://github.com/SCAREXgaming/SCLib

    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


Log in to reply