Browse Source

Implemented correct versioning to be able to release updates through the SDK itself.

MeFisto94 9 years ago
parent
commit
fb2ae73961
4 changed files with 204 additions and 26 deletions
  1. 25 24
      build.gradle
  2. 2 2
      gradle.properties
  3. 6 0
      upload.gradle
  4. 171 0
      version.gradle

+ 25 - 24
build.gradle

@@ -3,6 +3,8 @@ import groovy.xml.MarkupBuilder
 import java.util.zip.ZipFile
 
 apply from: 'gradle/libs/digest.gradle'
+apply from: file('version.gradle')
+//apply from: file('upload.gradle')
 
 
 if (!hasProperty('mainClass')) {
@@ -22,8 +24,7 @@ repositories {
 
 }
 
-ext.jmeFullVersion = "3.1.0-beta1" //3.1.0-SNAPSHOT
-ext.jmeNbmRevision = 0
+ext.jmeEngineVersion = "3.1.0-beta1" // Specify the Engine Version to be used.
 
 configurations {
     corelibs
@@ -34,31 +35,31 @@ configurations {
 
 dependencies {
 
-    corelibs dep("org.jmonkeyengine:jme3-core:$jmeFullVersion",true,true)
-    corelibs dep("org.jmonkeyengine:jme3-desktop:$jmeFullVersion", true, true)
-    corelibs dep("org.jmonkeyengine:jme3-lwjgl:$jmeFullVersion", true, true)
-    corelibs dep("org.jmonkeyengine:jme3-effects:$jmeFullVersion", true, true)
-    corelibs dep("org.jmonkeyengine:jme3-blender:$jmeFullVersion", true, true)
+    corelibs dep("org.jmonkeyengine:jme3-core:$jmeEngineVersion",true,true)
+    corelibs dep("org.jmonkeyengine:jme3-desktop:$jmeEngineVersion", true, true)
+    corelibs dep("org.jmonkeyengine:jme3-lwjgl:$jmeEngineVersion", true, true)
+    corelibs dep("org.jmonkeyengine:jme3-effects:$jmeEngineVersion", true, true)
+    corelibs dep("org.jmonkeyengine:jme3-blender:$jmeEngineVersion", true, true)
 
-    corelibs dep("org.jmonkeyengine:jme3-jbullet:$jmeFullVersion", true, true)
+    corelibs dep("org.jmonkeyengine:jme3-jbullet:$jmeEngineVersion", true, true)
     corelibs dep(fileTree("lib"), false, false)
-    corelibs dep("org.jmonkeyengine:jme3-jogg:$jmeFullVersion", true, true)
+    corelibs dep("org.jmonkeyengine:jme3-jogg:$jmeEngineVersion", true, true)
 
-    corelibs dep("org.jmonkeyengine:jme3-networking:$jmeFullVersion", true, true)
-    corelibs dep("org.jmonkeyengine:jme3-niftygui:$jmeFullVersion", true, true)
-    corelibs dep("org.jmonkeyengine:jme3-plugins:$jmeFullVersion", true, true)
-    corelibs dep("org.jmonkeyengine:jme3-terrain:$jmeFullVersion", true, true)
+    corelibs dep("org.jmonkeyengine:jme3-networking:$jmeEngineVersion", true, true)
+    corelibs dep("org.jmonkeyengine:jme3-niftygui:$jmeEngineVersion", true, true)
+    corelibs dep("org.jmonkeyengine:jme3-plugins:$jmeEngineVersion", true, true)
+    corelibs dep("org.jmonkeyengine:jme3-terrain:$jmeEngineVersion", true, true)
 
-    optlibs dep("org.jmonkeyengine:jme3-bullet:$jmeFullVersion", true, true)
-    optlibs dep("org.jmonkeyengine:jme3-jogl:$jmeFullVersion", true, true)
-    optlibs dep("org.jmonkeyengine:jme3-android:$jmeFullVersion", true, true)
-    optlibs dep("org.jmonkeyengine:jme3-ios:$jmeFullVersion", true, true)
-    optlibs dep("org.jmonkeyengine:jme3-android-native:$jmeFullVersion", true, true)
-    optlibs dep("org.jmonkeyengine:jme3-bullet-native:$jmeFullVersion", true, true)
-    optlibs dep("org.jmonkeyengine:jme3-bullet-native-android:$jmeFullVersion", true, true)
-    testdatalibs dep("org.jmonkeyengine:jme3-testdata:$jmeFullVersion", false, false)
+    optlibs dep("org.jmonkeyengine:jme3-bullet:$jmeEngineVersion", true, true)
+    optlibs dep("org.jmonkeyengine:jme3-jogl:$jmeEngineVersion", true, true)
+    optlibs dep("org.jmonkeyengine:jme3-android:$jmeEngineVersion", true, true)
+    optlibs dep("org.jmonkeyengine:jme3-ios:$jmeEngineVersion", true, true)
+    optlibs dep("org.jmonkeyengine:jme3-android-native:$jmeEngineVersion", true, true)
+    optlibs dep("org.jmonkeyengine:jme3-bullet-native:$jmeEngineVersion", true, true)
+    optlibs dep("org.jmonkeyengine:jme3-bullet-native-android:$jmeEngineVersion", true, true)
+    testdatalibs dep("org.jmonkeyengine:jme3-testdata:$jmeEngineVersion", false, false)
 
-    examplelibs dep("org.jmonkeyengine:jme3-examples:$jmeFullVersion", false, true)
+    examplelibs dep("org.jmonkeyengine:jme3-examples:$jmeEngineVersion", false, true)
 
 }
 
@@ -476,7 +477,7 @@ copyTestSources.outputs.dir "JME3TestsTemplate/src/"
 copyTestSources.outputs.dir "JME3TestsTemplateAndroid/src/"
 
 ant.properties['plugins.version'] = jmeVersion
-ant.properties['app.version']= jmeFullVersion
+ant.properties['app.version']= jmePomVersion
 ant.properties['nbm.revision']= jmeNbmRevision
 
 task overrideHarness(dependsOn: checkPlatformConfig) << {
@@ -526,7 +527,7 @@ overrideHarness.inputs.files([ 'netbeans/harness/launchers/app.exe', 'netbeans/h
 task buildSdk(dependsOn: [copyBaseLibs, copyProjectLibs, createProjectXml, createBaseXml, copyTestSources, overrideHarness]) <<{
     ant.propertyfile(file: "nbproject/project.properties") {
         entry( key: "plugins.version", value: "${jmeVersion}")
-        entry( key: "app.version", value: "${jmeFullVersion}")
+        entry( key: "app.version", value: "${jmePomVersion}")
         entry( key: "nbm.revision", value: "${jmeNbmRevision}")
     }
     ant.ant(dir: ".", antfile: "build.xml", target: "build")

+ 2 - 2
gradle.properties

@@ -3,9 +3,9 @@ jmeVersion = 3.1.0
 # Version used for application and settings folder, no spaces!
 jmeMainVersion = 3.1
 # Version addition pre-alpha-svn, Stable, Beta
-jmeVersionTag = SNAPSHOT
+#jmeVersionTag = SNAPSHOT
 # Increment this each time jmeVersionTag changes but jmeVersion stays the same
-jmeVersionTagID = 0
+#jmeVersionTagID = 0
 
 # specify if JavaDoc should be built
 buildJavaDoc = true

+ 6 - 0
upload.gradle

@@ -0,0 +1,6 @@
+task copySshKnownHosts(type: Copy) {
+    from 'private/known_hosts'
+    into System.properties['user.home'] + '/.ssh'
+}
+
+uploadArchives.dependsOn copySshKnownHosts

+ 171 - 0
version.gradle

@@ -0,0 +1,171 @@
+/*
+ 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
+    jmeNbmRevision  = 0
+    jmeGitHash      = ""
+    jmeGitTag       = ""
+    jmeShortGitHash = ""
+    jmeBuildDate    = new SimpleDateFormat("yyyy-MM-dd").format(new Date())
+    jmeBranchName   = "unknown"
+    jmeFullVersion  = "${jmeVersion}-UNKNOWN"
+    jmePomVersion   = "unknown"
+    jmeNbmUcSuffix  = "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}"
+            jmeNbmRevision = "0"
+            jmeNbmUcSuffix = "stable/${releaseInfo.baseVersion}/plugins"
+        } 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 != "master") {
+                jmeFullVersion += "-${jmeBranchName}"
+                jmePomVersion  += "-${jmeBranchName}"
+                jmeNbmUcSuffix = "${jmeBranchName}-"
+            } else {
+                jmeNbmUcSuffix = ""
+            }
+            jmeNbmUcSuffix += "nightly/" + jmeMainVersion + "/plugins"
+            jmeFullVersion += "-${jmeRevision}"
+            jmePomVersion  += "-SNAPSHOT"
+            jmeNbmRevision = jmeRevision
+        }
+            
+        logger.warn("Full Version: ${jmeFullVersion}")
+        logger.warn("POM Version: ${jmePomVersion}")
+        logger.warn("NBM Revision: ${jmeNbmRevision}")
+        logger.warn("NBM UC Suffix: ${jmeNbmUcSuffix}")
+    } catch (ex) {
+        // Failed to get repo info
+        logger.warn("Failed to get repository info: " + ex.message + ". " + \
+                    "Only partial build info will be generated.")
+    }
+}