github-release-gradle-plugin
github-release-gradle-plugin copied to clipboard
Cannot get property 'sha' on null object
I've been trying to get this plugin to work for the last few hours and this is the error I'm getting

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") }
}
This is still there in version 2.2.12. I noticed this happens when the last release on GitbHub is a draft.