You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
168 lines
4.6 KiB
168 lines
4.6 KiB
/*
|
|
Version Info Examples
|
|
=====================
|
|
|
|
Nightly Build Snapshot
|
|
* git tag:
|
|
* Full Version: 3.1-5124
|
|
* POM Version: 3.1.0-SNAPSHOT
|
|
* NBM Revision: 5124
|
|
* NBM UC Suffix: nightly/3.1/plugins
|
|
|
|
Nightly Build Snapshot (PBRIsComing branch)
|
|
* git tag:
|
|
* Full Version: 3.1-PBRIsComing-5124
|
|
* POM Version: 3.1.0-PBRIsComing-SNAPSHOT
|
|
* NBM Revision: 5124
|
|
* NBM UC Suffix: PBRIsComing-nightly/3.1/plugins
|
|
|
|
Alpha1 Release
|
|
* git tag: v3.1.0-alpha1
|
|
* Full Version: 3.1-alpha1
|
|
* POM Version: 3.1.0-alpha1
|
|
* NBM Revision: 0
|
|
* NBM UC Suffix: stable/3.1/plugins
|
|
|
|
Final Release
|
|
* git tag: v3.1.0
|
|
* Full Version: 3.1
|
|
* POM Version: 3.1.0
|
|
* NBM Revision: 0
|
|
* NBM UC Suffix: stable/3.1/plugins
|
|
*/
|
|
|
|
import java.text.SimpleDateFormat
|
|
import org.ajoberstar.grgit.*
|
|
|
|
buildscript {
|
|
repositories {
|
|
mavenCentral()
|
|
}
|
|
dependencies {
|
|
classpath 'org.ajoberstar:gradle-git:1.2.0'
|
|
}
|
|
}
|
|
|
|
ext {
|
|
jmeRevision = 0
|
|
jmeGitHash = ""
|
|
jmeGitTag = ""
|
|
jmeShortGitHash = ""
|
|
jmeBuildDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date())
|
|
jmeBranchName = "unknown"
|
|
jmeFullVersion = "${jmeVersion}-UNKNOWN"
|
|
jmePomVersion = "unknown"
|
|
}
|
|
|
|
def getReleaseInfo(String tag) {
|
|
if (tag == null) {
|
|
// not a tagged commit
|
|
return null;
|
|
}
|
|
if (!tag.startsWith("v")) {
|
|
// syntax error
|
|
return null;
|
|
}
|
|
tag = tag.substring(1)
|
|
|
|
String[] parts = tag.split("-", 2);
|
|
String mainVersion;
|
|
boolean prerelease;
|
|
String releaseName = null;
|
|
|
|
if (parts.length == 2) {
|
|
// prerelease
|
|
prerelease = true;
|
|
mainVersion = parts[0];
|
|
releaseName = parts[1];
|
|
if (releaseName.size() == 0) {
|
|
// syntax error
|
|
return null;
|
|
}
|
|
} else if (parts.length == 1) {
|
|
// final release
|
|
prerelease = false;
|
|
mainVersion = parts[0];
|
|
} else {
|
|
// error
|
|
return null;
|
|
}
|
|
|
|
if (mainVersion.size() == 0) {
|
|
// syntax error
|
|
return null;
|
|
}
|
|
|
|
parts = mainVersion.split("\\.");
|
|
if (parts.size() != 3) {
|
|
// syntax error
|
|
return null;
|
|
}
|
|
|
|
String baseVersion = parts[0] + "." + parts[1];
|
|
|
|
return [
|
|
"tag" : tag,
|
|
"baseVersion" : baseVersion,
|
|
"mainVersion" : mainVersion,
|
|
"prerelease" : prerelease,
|
|
"releaseName" : releaseName,
|
|
"releaseSuffix": (prerelease ? "-${releaseName}": "")
|
|
]
|
|
}
|
|
|
|
task configureVersionInfo {
|
|
try {
|
|
def grgit = Grgit.open(project.file('.'))
|
|
def head = grgit.head()
|
|
jmeRevision = grgit.log(includes: [head]).size()
|
|
jmeGitHash = head.id
|
|
jmeShortGitHash = head.abbreviatedId
|
|
jmeBranchName = grgit.branch.current.name
|
|
jmeGitTag = grgit.tag.list().find { it.commit == head }
|
|
|
|
if (jmeGitTag != null) {
|
|
jmeGitTag = jmeGitTag.name
|
|
} else {
|
|
if (System.env.APPVEYOR_REPO_TAG == "true") {
|
|
jmeGitTag = System.env.APPVEYOR_REPO_TAG_NAME
|
|
} else {
|
|
jmeGitTag = System.env.TRAVIS_TAG
|
|
}
|
|
}
|
|
|
|
def releaseInfo = getReleaseInfo(jmeGitTag)
|
|
if (releaseInfo != null) {
|
|
jmeFullVersion = "${releaseInfo.baseVersion}${releaseInfo.releaseSuffix}"
|
|
jmePomVersion = "${releaseInfo.mainVersion}${releaseInfo.releaseSuffix}"
|
|
} else {
|
|
// SNAPSHOT
|
|
jmeFullVersion = jmeMainVersion
|
|
jmePomVersion = jmeVersion
|
|
if (System.env.TRAVIS_BRANCH != null) {
|
|
jmeBranchName = System.env.TRAVIS_BRANCH
|
|
} else if (System.env.APPVEYOR_REPO_BRANCH != null) {
|
|
jmeBranchName = APPVEYOR_REPO_BRANCH
|
|
}
|
|
if (System.env.TRAVIS_PULL_REQUEST != null &&
|
|
System.env.TRAVIS_PULL_REQUEST != "false") {
|
|
jmeBranchName += "-pr-" + System.env.TRAVIS_PULL_REQUEST
|
|
} else if (System.env.APPVEYOR_PULL_REQUEST_NUMBER != null) {
|
|
jmeBranchName += "-pr-" + System.env.APPVEYOR_PULL_REQUEST_NUMBER
|
|
}
|
|
if (jmeBranchName != "master") {
|
|
jmeFullVersion += "-${jmeBranchName}"
|
|
jmePomVersion += "-${jmeBranchName}"
|
|
}
|
|
jmeFullVersion += "-${jmeRevision}"
|
|
jmePomVersion += "-SNAPSHOT"
|
|
}
|
|
|
|
logger.warn("Full Version: ${jmeFullVersion}")
|
|
logger.warn("POM Version: ${jmePomVersion}")
|
|
} catch (ex) {
|
|
// Failed to get repo info
|
|
logger.warn("Failed to get repository info: " + ex.message + ". " + \
|
|
"Only partial build info will be generated.")
|
|
}
|
|
}
|
|
|