version: new versioning scheme for tags

experimental
Kirill Vainer 9 years ago
parent fda40563c5
commit c6336c0781
  1. 2
      build.gradle
  2. 4
      common.gradle
  3. 2
      gradle.properties
  4. 19
      jme3-core/build.gradle
  5. 201
      version.gradle

@ -61,7 +61,7 @@ task libDist(dependsOn: subprojects.build) << {
} }
task createZipDistribution(type:Zip,dependsOn:["dist","libDist"], description:"Package the nightly zip distribution"){ task createZipDistribution(type:Zip,dependsOn:["dist","libDist"], description:"Package the nightly zip distribution"){
archiveName "jME" + jmeFullVersion + ".zip" archiveName "jME" + releaseInfo.fullVersion + ".zip"
into("/") { into("/") {
from {"./dist"} from {"./dist"}
} }

@ -6,7 +6,7 @@ apply plugin: 'java'
apply plugin: 'maven' apply plugin: 'maven'
group = 'com.jme3' group = 'com.jme3'
version = jmePomVersion version = releaseInfo.pomVersion
sourceCompatibility = '1.6' sourceCompatibility = '1.6'
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8' [compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
@ -33,7 +33,7 @@ dependencies {
jar { jar {
manifest { manifest {
attributes 'Implementation-Title': 'jMonkeyEngine', attributes 'Implementation-Title': 'jMonkeyEngine',
'Implementation-Version': jmeFullVersion 'Implementation-Version': releaseInfo.fullVersion
} }
} }

@ -2,8 +2,6 @@
jmeVersion = 3.1.0 jmeVersion = 3.1.0
# Version used for application and settings folder, no spaces! # Version used for application and settings folder, no spaces!
jmeMainVersion = 3.1 jmeMainVersion = 3.1
# Version addition pre-alpha-svn, Stable, Beta
jmeVersionTag = SNAPSHOT
# Increment this each time jmeVersionTag changes but jmeVersion stays the same # Increment this each time jmeVersionTag changes but jmeVersion stays the same
jmeVersionTagID = 0 jmeVersionTagID = 0

@ -35,16 +35,15 @@ task updateVersionPropertiesFile << {
def verfile = file('src/main/resources/com/jme3/system/version.properties') def verfile = file('src/main/resources/com/jme3/system/version.properties')
verfile.text = "# THIS IS AN AUTO-GENERATED FILE..\n" + verfile.text = "# THIS IS AN AUTO-GENERATED FILE..\n" +
"# DO NOT MODIFY!\n" + "# DO NOT MODIFY!\n" +
"build.date=${jmeBuildDate}\n" + "build.date=${releaseInfo.buildDate}\n" +
"git.revision=${jmeRevision}\n" + "git.revision=${releaseInfo.revision}\n" +
"git.branch=${jmeBranchName}\n" + "git.branch=${releaseInfo.branch}\n" +
"git.hash=${jmeGitHash}\n" + "git.hash=${releaseInfo.hash}\n" +
"git.hash.short=${jmeShortGitHash}\n" + "git.hash.short=${releaseInfo.shortHash}\n" +
"git.tag=${jmeGitTag}\n" + "git.tag=${releaseInfo.tag}\n" +
"name.full=jMonkeyEngine ${jmeFullVersion}\n" + "name.full=jMonkeyEngine ${releaseInfo.fullVersion}\n" +
"version.full=${jmeFullVersion}\n" + "version.full=${releaseInfo.fullVersion}\n" +
"version.number=${jmeVersion}\n" + "version.number=${releaseInfo.version}\n"
"version.tag=${jmeVersionTag}"
} }
compileJava.dependsOn(updateVersionPropertiesFile) compileJava.dependsOn(updateVersionPropertiesFile)

@ -2,29 +2,21 @@
Version Info Examples Version Info Examples
===================== =====================
Nightly Build Snapshot Nightly Build Snapshot (no git tag)
* Full Version: 3.1-5124 * Full Version: 3.1.0-5124
* POM Version: 3.1.0-SNAPSHOT * POM Version: 3.1.0-SNAPSHOT
* NBM Revision: 5124
* NBM UC Suffix: nightly/3.1/plugins
Nightly Build Snapshot (PBRIsComing branch) Nightly Build Snapshot (PBRIsComing branch) (no git tag)
* Full Version: 3.1-PBRIsComing-5124 * Full Version: 3.1.0-PBRIsComing-5124
* POM Version: 3.1.0-PBRIsComing-SNAPSHOT * POM Version: 3.1.0-PBRIsComing-SNAPSHOT
* NBM Revision: 5124
* NBM UC Suffix: PBRIsComing-nightly/3.1/plugins
Alpha1 Release Alpha1 Release (git tag: v3.1-alpha1)
* Full Version: 3.1-alpha1 * Full Version: 3.1.0-alpha1
* POM Version: 3.1.0-alpha1 * POM Version: 3.1.0-alpha1
* NBM Revision: 1
* NBM UC Suffix: stable/3.1/plugins
Final Release Final Release (git tag: v3.1)
* Full Version: 3.1 * Full Version: 3.1.0
* POM Version: 3.1.0 * POM Version: 3.1.0
* NBM Revision: 5
* NBM UC Suffix: stable/3.1/plugins
*/ */
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
@ -35,83 +27,156 @@ buildscript {
mavenCentral() mavenCentral()
} }
dependencies { dependencies {
classpath 'org.ajoberstar:gradle-git:1.2.0' classpath 'org.ajoberstar:gradle-git:1.4.1'
} }
} }
ext { ext {
jmeRevision = 0 releaseInfo = null;
jmeNbmRevision = 0
jmeGitHash = ""
jmeGitTag = ""
jmeShortGitHash = ""
jmeBuildDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date())
jmeBranchName = "unknown"
jmeFullVersion = "${jmeVersion}-UNKNOWN"
jmePomVersion = "unknown"
jmeNbmUcSuffix = "unknown"
} }
task configureVersionInfo { enum ReleaseType {
try { Unknown,
def grgit = Grgit.open(project.file('.')) Snapshot,
jmeRevision = grgit.log(includes:['HEAD']).size() PreRelease,
jmeGitHash = grgit.head().id Release;
jmeShortGitHash = grgit.head().abbreviatedId }
jmeBranchName = grgit.branch.current.name
jmeGitTag = grgit.describe() class ReleaseInfo {
if (jmeGitTag == null) jmeGitTag = ""
String tag;
String version;
String releaseName;
ReleaseType releaseType;
String buildDate;
String branch;
String hash;
String shortHash;
int revision;
String fullVersion;
String pomVersion;
ReleaseInfo(String version, Grgit repo) {
loadBuildDate();
loadRepoInfo(version, repo);
}
ReleaseInfo(String version) {
loadBuildDate();
loadUnknownInfo(version);
}
final void loadBuildDate() {
this.buildDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
}
final void loadUnknownInfo(String version) {
this.releaseType = ReleaseType.Unknown;
this.version = version;
this.releaseName = "unknown";
this.tag = "";
this.revision = 0;
this.branch = "unknown";
this.hash = "";
this.shortHash = "";
this.fullVersion = "${version}-UNKNOWN";
this.pomVersion = "${version}-UNKNOWN";
}
final void loadRepoInfo(String version, Grgit repo) {
this.releaseType = ReleaseType.Snapshot;
this.version = version;
Commit head = repo.head();
this.revision = repo.log(includes:[head]).size();
this.hash = head.id;
this.shortHash = head.abbreviatedId;
this.branch = repo.branch.current.name;
Tag gitTag = repo.tag.list().find { it.commit == head }
if (gitTag != null){
this.tag = gitTag.name;
} else {
this.tag = "";
}
if (System.env.TRAVIS_BRANCH != null) { if (System.env.TRAVIS_BRANCH != null) {
jmeBranchName = System.env.TRAVIS_BRANCH this.branch = System.env.TRAVIS_BRANCH
} }
if (System.env.TRAVIS_TAG != null) { if (System.env.TRAVIS_TAG != null) {
jmeGitTag = System.env.TRAVIS_TAG this.tag = System.env.TRAVIS_TAG
} }
if (System.env.TRAVIS_PULL_REQUEST != null && if (System.env.TRAVIS_PULL_REQUEST != null && System.env.TRAVIS_PULL_REQUEST != "false") {
System.env.TRAVIS_PULL_REQUEST != "false") { this.branch += "-pr-" + System.env.TRAVIS_PULL_REQUEST
jmeBranchName += "-pr-" + System.env.TRAVIS_PULL_REQUEST
} }
jmeFullVersion = jmeMainVersion loadTagInfo(this.tag);
jmePomVersion = jmeVersion
if (jmeBranchName != "master") { this.fullVersion = version;
jmeFullVersion += "-${jmeBranchName}" if (this.branch != "master") {
jmePomVersion += "-${jmeBranchName}" this.fullVersion += "-${branch}";
}
jmeNbmUcSuffix = "${jmeBranchName}-" switch (this.releaseType) {
} else { case ReleaseType.Snapshot:
jmeNbmUcSuffix = "" this.pomVersion = "${fullVersion}-SNAPSHOT";
this.fullVersion += "-${revision}";
break;
case ReleaseType.PreRelease:
this.pomVersion = "${fullVersion}-${releaseName}";
this.fullVersion += "-${releaseName}";
break;
case ReleaseType.Release:
this.pomVersion = "${fullVersion}";
break;
}
} }
if (jmeVersionTag == "SNAPSHOT") { final void loadTagInfo(String tag) {
jmeNbmUcSuffix += "nightly" this.tag = tag;
} else {
jmeNbmUcSuffix += "stable" if (tag == null || !tag.startsWith("v")) {
return;
} }
jmeNbmUcSuffix += "/" + jmeMainVersion + "/plugins" String[] parts = tag.split("-");
if (parts.length == 2) {
if (parts[0].size() < 1 || parts[1].size() < 1) {
return;
}
if (jmeVersionTag == "SNAPSHOT") { releaseType = ReleaseType.PreRelease;
jmeFullVersion += "-${jmeRevision}" version = parts[0].substring(1);
jmePomVersion += "-SNAPSHOT" releaseName = parts[1];
jmeNbmRevision = jmeRevision } else if (parts.length == 1) {
} else if (jmeVersionTag == "") { if (parts[0].size() < 1) {
jmeNbmRevision = jmeVersionTagID return;
} else {
jmeFullVersion += "-${jmeVersionTag}"
jmePomVersion += "-${jmeVersionTag}"
jmeNbmRevision = jmeVersionTagID
} }
logger.warn("Full Version: ${jmeFullVersion}") releaseType = ReleaseType.Release;
logger.warn("POM Version: ${jmePomVersion}") version = parts[0];
logger.warn("NBM Revision: ${jmeNbmRevision}") }
logger.warn("NBM UC Suffix: ${jmeNbmUcSuffix}") }
public String toString() {
return "tag = ${tag}, base_ver = ${baseVersion}, main_ver = ${mainVersion}, " +
"prerelease = ${prerelease}, release_name = ${releaseName}"
}
}
task configureVersionInfo {
try {
def repo = Grgit.open(project.file('.'))
releaseInfo = new ReleaseInfo(jmeVersion, repo);
logger.warn("Full Version: ${releaseInfo.fullVersion}")
logger.warn("POM Version: ${releaseInfo.pomVersion}")
} catch (ex) { } catch (ex) {
// Failed to get repo info // Failed to get repo info
logger.warn("Failed to get repository info: " + ex.message + ". " + \ logger.warn("Failed to get repository info: " + ex.message + ". " + \
"Only partial build info will be generated.") "Only partial build info will be generated.")
releaseInfo = new ReleaseInfo(jmeVersion);
} }
} }

Loading…
Cancel
Save