/* 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 { 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 } if (System.env.TRAVIS_PULL_REQUEST != null && System.env.TRAVIS_PULL_REQUEST != "false") { jmeBranchName += "-pr-" + System.env.TRAVIS_PULL_REQUEST } if (jmeBranchName != "v3.1") { 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.") } }