github-release-gradle-plugin icon indicating copy to clipboard operation
github-release-gradle-plugin copied to clipboard

Cannot get property 'sha' on null object

Open Hexeption opened this issue 6 years ago • 1 comments

I've been trying to get this plugin to work for the last few hours and this is the error I'm getting

screen shot 2019-03-07 at 04 13 30

build.gradle

buildscript {
    repositories {
        mavenLocal()
        mavenCentral()
        maven {
            name = "forge"
            url = "https://files.minecraftforge.net/maven"
        }
        maven {
            name = "sonatype"
            url = "https://oss.sonatype.org/content/repositories/snapshots/"
        }
        maven {
            url  "https://jcenter.bintray.com"
        }
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath 'net.minecraftforge.gradle:ForgeGradle:2.3+'
        classpath 'net.nemerosa:versioning:2.7.1'
        classpath "gradle.plugin.com.github.breadmoirai:github-release:2.2.4"
    }
}

apply plugin: 'java'
apply plugin: 'maven'
apply plugin: "idea"
apply plugin: 'net.minecraftforge.gradle.patcher'
apply plugin: 'net.minecraftforge.gradle.launch4j'
apply plugin: 'net.nemerosa.versioning'
apply plugin: "com.github.breadmoirai.github-release"

group 'kettlefoundation'
version 'git-' +  versioning.info.branch + "-" + versioning.info.build

repositories {
    clear()
    mavenCentral()
    maven {
        name = "forge"
        url = "https://files.minecraftforge.net/maven"
    }
    maven {
        name = "sonatype"
        url = "https://oss.sonatype.org/content/repositories/snapshots/"
    }
    maven {
        name 'minecraft'
        url 'https://libraries.minecraft.net/'
    }
    maven {
        name 'maven'
        url 'https://mvnrepository.com/artifact/'
    }
    maven {
        name 'KettleFoundation'
        url 'http://repo.hexeption.co.uk/artifactory/Kettle/'
    }
    flatDir {
        dirs 'src/main/resources'
    }
}

configurations{
    compile.extendsFrom exported
    libraries
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile(group: 'bukkit', name: 'bukkit', version: '1.12.2-R0.1')
}

jar{
    into('lib') {
        from configurations.libraries
    }
    exclude "**/configurations/**"
    exclude "**/META-INF/**"
    exclude "log4j2.xml"
}

minecraft {
    version = "1.12.2"
    mappings = "snapshot_nodoc_20171003"
    workspaceDir = "projects"
    versionJson = "jsons/1.12.2-dev.json"
    buildUserdev = true
    buildInstaller = false
    installerVersion = "1.5"

    def common = {
        patchPrefixOriginal "../src-base/minecraft"
        patchPrefixChanged "../src-work/minecraft"
        mainClassServer "net.minecraft.launchwrapper.Launch"
        tweakClassServer "net.minecraftforge.fml.common.launcher.FMLServerTweaker"
    }

    projects {
        forge {
            rootDir "forge/"
            patchDir "forge/patches/minecraft/"
            patchAfter "clean"
            genPatchesFrom "clean"
            genMcpPatches = false
            applyMcpPatches = false
            s2sKeepImports = true
            with common
        }

        kettle {
            rootDir "."
            patchDir "patches/"
            patchAfter "forge"
            genPatchesFrom "forge"
            genMcpPatches = true
            applyMcpPatches = true
            s2sKeepImports = true
            with common
        }
    }
}

sourceCompatibility = 1.8
tasks.generateXmlConfig.dependsOn installer
tasks.compileJava.enabled = false
tasks.build.dependsOn 'launch4j'
tasks.reobfuscate.setProperty("extraSrg",["PK: org/bukkit/craftbukkit org/bukkit/craftbukkit/v1_12_R1"])

installer {
    classifier = 'installer'
    from "forge/src/main/resources/forge_logo.png"
    rename "forge_logo\\.png", "big_logo.png"
}

launch4j {
    jar = installer.archivePath.canonicalPath
    outfile = file("build/distributions/${project.name}-${project.version}-installer-win.exe").canonicalPath
    icon = file('icon.ico').canonicalPath
    manifest = file('l4jManifest.xml').canonicalPath
    jreMinVersion = '1.8.0'
    initialHeapPercent = 5
    maxHeapPercent = 100
}

tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}

task signUniversal(type: SignJar, dependsOn: 'outputJar') {
    onlyIf {
        project.hasProperty('jarsigner')
    }

    def jarsigner = [:]

    if (project.hasProperty('jarsigner'))
        jarsigner = project.jarsigner

    alias = 'forge'
    exclude "paulscode/**"
    storePass = jarsigner.storepass
    keyPass = jarsigner.keypass
    keyStore = jarsigner.keystore
    inputFile = outputJar.archivePath
    outputFile = outputJar.archivePath
}
build.dependsOn signUniversal
installer.dependsOn signUniversal

outputJar {
    classifier = 'universal'

    manifest.attributes([
            "Implementation-Title": "Kettle",
            "Implementation-Version": version,
            "Main-Class": "net.minecraftforge.fml.relauncher.ServerLaunchWrapper",
            "TweakClass": "net.minecraftforge.fml.common.launcher.FMLTweaker",
            "Class-Path": getServerClasspath(file("jsons/1.12.2-rel.json"))
    ])
}

processJson {
    releaseJson = "jsons/1.12.2-rel.json"
    addReplacements([
            "@minecraft_version@": project.minecraft.version,
            "@version@": project.version,
            "@project@": "kettle",
            "@artifact@": "kf:kettle:${project.version}",
            "@universal_jar@": { outputJar.archiveName },
            "@timestamp@": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"),
    ])
}

extractForgeSources {
    exclude "**/SideOnly.java", "**/Side.java"
}

genGradleProjects {
    addCompileDep "junit:junit:4.12"
    addCompileDep "bukkit:bukkit:1.12.2-R0.1"
    addRepo("KettleFoundation", "http://repo.hexeption.co.uk/artifactory/Kettle/")
}

import groovy.json.JsonSlurper

import java.util.stream.Collectors

String getServerClasspath(File file) {
    def node = new JsonSlurper().parse(file)
    def out = new StringBuilder()
    node.versionInfo.libraries.each { lib ->
        if (lib.serverreq)
        {
            def split = lib.name.split(':')
            def group = split[0].replace('.', '/')
            def artifact = split[1]
            def version = split[2]
            out += "libraries/$group/$artifact/$version/$artifact-${version}.jar "
        }
    }
    out += "minecraft_server.1.12.2.jar"
    return out.toString()
}

task copyLibsToBuild(type: Copy) {
    from file("release/libraries.zip").canonicalPath
    into file("build/distributions/").canonicalPath
}

tasks.githubRelease.dependsOn 'copyLibsToBuild'
githubRelease {
    token = "0"
    owner = "KettleFoundation"
    repo = "Kettle"
    releaseName = "Kettle Dev " + versioning.info.branch + "-" + versioning.info.build
    body { """\
## Setup Info
Don't forget to download [Minecraft Server 1.12.2](https://launcher.mojang.com/mc/game/1.12.2/server/886945bfb2b978778c3a0288fd7fab09d315b25f/server.jar) 

(Rename it to `minecraft_server.1.12.2.jar`)

${(changelog().call().readLines().stream().map { "- $it" }.collect(Collectors.joining('\n', '## Changelog\n', '')))}
"""}
    prerelease = true
    releaseAssets = fileTree("build/distributions/").filter { it.name.endsWith("jar") || it.name.endsWith("zip") }
}

Hexeption avatar Mar 07 '19 04:03 Hexeption

This is still there in version 2.2.12. I noticed this happens when the last release on GitbHub is a draft.

gciatto avatar Mar 13 '20 08:03 gciatto