Skip to content

Commit

Permalink
Use git tagging to mark major versions.
Browse files Browse the repository at this point in the history
  • Loading branch information
Indemnity83 committed Jul 11, 2017
1 parent 27bfae9 commit a60ebed
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 169 deletions.
6 changes: 1 addition & 5 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
language: java
jdk:
- openjdk7
- oraclejdk8

branches:
only:
- master
- develop
- /^(?i:release).*$/
- /^(?i:support).*$/
- /^(?i:hotfix)-.*$/

install: ./gradlew setupCIWorkspace -S
script: ./gradlew build curse
Expand Down
6 changes: 0 additions & 6 deletions application.properties

This file was deleted.

200 changes: 42 additions & 158 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -13,45 +13,30 @@ buildscript {
}
dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
classpath 'com.moowork.gradle:gradle-node-plugin:0.10'
classpath 'org.ajoberstar:gradle-git:1.3.0'
}
}

apply plugin: 'forge'
apply plugin: 'curseforge'
apply plugin: 'com.moowork.node'

import org.ajoberstar.grgit.*
import java.util.regex.Pattern

ext.repo = Grgit.open(project.file('.'))
loadProperties()

version = project.mcversion + '-' + version_major + '.' + version_minor + '.' + version_patch + '.' + getBuildNumber()
if (project.buildQualifier != 'release') {
version = project.version + '-' + project.buildQualifier
}
group= "com.indemnity83.irontank"
archivesBaseName = "irontank"
def versionInfo = getGitVersion()

minecraft {
version = project.mcversion + "-" + project.forgeversion
runDir = "eclipse"

replace '@VERSION@', version_major + '.' + version_minor + '.' + version_patch
replace '@BUILD_NUMBER@', getBuildNumber()
version = "1.7.10-10.13.4.1448-1.7.10"
runDir = "run"
}

curse.enabled = isInteresting()
curse {
apiKey = System.getenv("CURSE_API_KEY")
projectId = '236226'
apiKey = "${System.getenv().CURSE_API_KEY}"
releaseType = project.buildQualifier
changelog = repo.log(maxCommits: 1).fullMessage.get(0)
relatedProject 'buildcraft'
releaseType = 'beta'
changelog = 'Empty'
}

version = "${project.minecraft.version}-${versionInfo['IronTanks.version']}"
group = "com.indemnity83.irontank"
archivesBaseName = "irontank"

repositories {
ivy {
name "BuildCraft"
Expand Down Expand Up @@ -92,152 +77,51 @@ processResources
include 'mcmod.info'

// replace version and mcversion
expand 'version':version_major + '.' + version_minor + '.' + version_patch + '.' + getBuildNumber(), 'mcversion':project.minecraft.version
expand 'version':project.version, 'mcversion':project.minecraft.version
}

// copy everything else, thats not the mcmod.info
from(sourceSets.main.resources.srcDirs) {
exclude 'mcmod.info'
}
}

node {
version = '0.12.7'
download = true
}

def nodeBin = '.' + File.separator + 'node_modules' + File.separator + '.bin' + File.separator
def conventionalChangelog = nodeBin + 'conventional-changelog'
def conventionalRecommendedBump = nodeBin + 'conventional-recommended-bump'


task installConventionalChangelog(type: NpmTask) {
dependsOn nodeSetup

outputs.upToDateWhen {
return file(conventionalChangelog).exists()
}

args = ['install', 'conventional-changelog']
}

task installConventionalRecommendedBump(type: NpmTask) {
dependsOn nodeSetup

outputs.upToDateWhen {
return file(conventionalChangelog).exists()
}

args = ['install', 'conventional-recommended-bump']
}

task generateChangelog(type:Exec) {
dependsOn installConventionalChangelog
executable = new File(conventionalChangelog)
def argsList = ["-p", "angular", "-i", "CHANGELOG.md", "-w", "-r", "0"]
args = argsList
}

task recommendBump(type:Exec) {
dependsOn installConventionalRecommendedBump
executable = new File(conventionalRecommendedBump)
def argsList = ["-p", "angular"]
args = argsList
}

def loadProperties() {
println('loading application.properties')

file("application.properties").withReader { reader ->
def userProps = new Properties()
userProps.load(reader)

for (Map.Entry property in userProps) {
project.ext[property.getKey()] = property.getValue()
}
}

project.ext["buildQualifier"] = "beta"

def String branch = getBranch()
if (branch == "master") {
project.ext["buildQualifier"] = "release"
}

if (branch == "release" || branch == "support") {
project.ext["buildQualifier"] = "alpha"
// generate version.properties file from the git version data earlier
doLast {
def propsFile = new File(destinationDir, 'version.properties')
def properties = new Properties()
properties.putAll(versionInfo)
properties['IronTanks.build.mcversion'] = project.minecraft.version
properties.store(propsFile.newWriter(), null)
}
}

def getBuildNumber() {
return "$System.env.BUILD_NUMBER" != "null" ? "$System.env.BUILD_NUMBER" : "${repo.head().abbreviatedId}"
}

def getBranch() {
return "$System.env.BUILD_BRANCH" != "null" ? "$System.env.BUILD_BRANCH" : "${repo.getBranch().getCurrent().getName()}"
}

def saveVersion() {
ant.propertyfile(
file: "application.properties") {
entry( key:"version_major", type:"int", value: version_major)
entry( key:"version_minor", type:"int", value: version_minor)
entry( key:"version_patch", type:"int", value: version_patch)
// This is a special task for pulling the version information from git and the environment (for BUILD_NUMBER)
def getGitVersion()
{
def out = [:]

// call git command.
def outStream = new ByteArrayOutputStream()
def result = exec {
executable = 'git'
args = [ 'describe', '--long']
standardOutput = outStream
}
project.version = version_major + '.' + version_minor + '.' + version_patch + '.' + getBuildNumber()
printNextVersion()
}

def printNextVersion() {
println '*************************************************************'
println 'The next build will be version: ' + project.version
println '*************************************************************'
}

task bumpMajor << {
project.version_major = Integer.parseInt(project.version_major) + 1
project.version_minor = "0"
project.version_patch = "0"
saveVersion()
}

task bumpMinor << {
project.version_minor = Integer.parseInt(project.version_minor) + 1
project.version_patch = "0"
saveVersion()
}

task bumpPatch << {
project.version_patch = Integer.parseInt(project.version_patch) + 1
saveVersion()
}
def fullVersion = outStream.toString().trim()
def matcher = fullVersion =~ /(\d+).(\d+)-(\d+)-(.*)/

task echoVersion << {
printNextVersion()
}
def maj = matcher[0][1]
def min = matcher[0][2]
def rev = matcher[0][3]
def bn = System.getenv("PROMOTED_NUMBER") ?: System.getenv("BUILD_NUMBER") ?: "dev"

task echoLastChange << {
println repo.log(maxCommits: 1).fullMessage.get(0)
}
out['IronTanks.build.major.number'] = maj.toString()
out['IronTanks.build.minor.number'] = min.toString()
out['IronTanks.build.revision.number'] = rev.toString()
out['IronTanks.build.githash'] = matcher[0][4].toString()
out['IronTanks.build.number' ] = bn.toString()
out['IronTanks.version' ] = "${maj}.${min}.${rev}.${bn}".toString()

def isInteresting() {
def String log = repo.log(maxCommits: 1).fullMessage.get(0).toString()
if (log.startsWith("fix") || log.startsWith("feat")) {
println "commit is \"${repo.log(maxCommits: 1).shortMessage.get(0).toString()}\", that sounds interesting..."
return true
}

if (log.contains("BREAKING")) {
println "commit lists a breaking change, this is interesting..."
return true
}

def String branch = getBranch()
if (branch == "master" || branch.startsWith("release")) {
println "building " + getBranch() + ", this is interesting..."
return true
}

println "Build is boring"
return false
return out
}

0 comments on commit a60ebed

Please sign in to comment.