version.gradle 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. /*
  2. Version Info Examples
  3. =====================
  4. Nightly Build Snapshot
  5. * git tag:
  6. * Full Version: 3.1-5124
  7. * POM Version: 3.1.0-SNAPSHOT
  8. * NBM Revision: 5124
  9. * NBM UC Suffix: nightly/3.1/plugins
  10. Nightly Build Snapshot (PBRIsComing branch)
  11. * git tag:
  12. * Full Version: 3.1-PBRIsComing-5124
  13. * POM Version: 3.1.0-PBRIsComing-SNAPSHOT
  14. * NBM Revision: 5124
  15. * NBM UC Suffix: PBRIsComing-nightly/3.1/plugins
  16. Alpha1 Release
  17. * git tag: v3.1.0-alpha1
  18. * Full Version: 3.1-alpha1
  19. * POM Version: 3.1.0-alpha1
  20. * NBM Revision: 0
  21. * NBM UC Suffix: stable/3.1/plugins
  22. Final Release
  23. * git tag: v3.1.0
  24. * Full Version: 3.1
  25. * POM Version: 3.1.0
  26. * NBM Revision: 0
  27. * NBM UC Suffix: stable/3.1/plugins
  28. */
  29. import java.text.SimpleDateFormat
  30. import org.ajoberstar.grgit.*
  31. buildscript {
  32. repositories {
  33. mavenCentral()
  34. }
  35. dependencies {
  36. classpath 'org.ajoberstar:gradle-git:1.2.0'
  37. }
  38. }
  39. ext {
  40. jmeRevision = 0
  41. jmeNbmRevision = 0
  42. jmeGitHash = ""
  43. jmeGitTag = ""
  44. jmeShortGitHash = ""
  45. jmeBuildDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date())
  46. jmeBranchName = "unknown"
  47. jmeFullVersion = "${jmeVersion}-UNKNOWN"
  48. jmePomVersion = "unknown"
  49. jmeNbmUcSuffix = "unknown"
  50. }
  51. def getReleaseInfo(String tag) {
  52. if (tag == null) {
  53. // not a tagged commit
  54. return null;
  55. }
  56. if (!tag.startsWith("v")) {
  57. // syntax error
  58. return null;
  59. }
  60. tag = tag.substring(1)
  61. String[] parts = tag.split("-", 2);
  62. String mainVersion;
  63. boolean prerelease;
  64. String releaseName = null;
  65. if (parts.length == 2) {
  66. // prerelease
  67. prerelease = true;
  68. mainVersion = parts[0];
  69. releaseName = parts[1];
  70. if (releaseName.size() == 0) {
  71. // syntax error
  72. return null;
  73. }
  74. } else if (parts.length == 1) {
  75. // final release
  76. prerelease = false;
  77. mainVersion = parts[0];
  78. } else {
  79. // error
  80. return null;
  81. }
  82. if (mainVersion.size() == 0) {
  83. // syntax error
  84. return null;
  85. }
  86. parts = mainVersion.split("\\.");
  87. if (parts.size() != 3) {
  88. // syntax error
  89. return null;
  90. }
  91. String baseVersion = parts[0] + "." + parts[1];
  92. return [
  93. "tag" : tag,
  94. "baseVersion" : baseVersion,
  95. "mainVersion" : mainVersion,
  96. "prerelease" : prerelease,
  97. "releaseName" : releaseName,
  98. "releaseSuffix": (prerelease ? "-${releaseName}": "")
  99. ]
  100. }
  101. task configureVersionInfo {
  102. try {
  103. def grgit = Grgit.open(project.file('.'))
  104. def head = grgit.head()
  105. jmeRevision = grgit.log(includes: [head]).size()
  106. jmeGitHash = head.id
  107. jmeShortGitHash = head.abbreviatedId
  108. jmeBranchName = grgit.branch.current.name
  109. jmeGitTag = grgit.tag.list().find { it.commit == head }
  110. if (jmeGitTag != null) {
  111. jmeGitTag = jmeGitTag.name
  112. } else {
  113. jmeGitTag = System.env.TRAVIS_TAG
  114. }
  115. def releaseInfo = getReleaseInfo(jmeGitTag)
  116. if (releaseInfo != null) {
  117. jmeFullVersion = "${releaseInfo.baseVersion}${releaseInfo.releaseSuffix}"
  118. jmePomVersion = "${releaseInfo.mainVersion}${releaseInfo.releaseSuffix}"
  119. jmeNbmRevision = "0"
  120. jmeNbmUcSuffix = "stable/${releaseInfo.baseVersion}/plugins"
  121. } else {
  122. // SNAPSHOT
  123. jmeFullVersion = jmeMainVersion
  124. jmePomVersion = jmeVersion
  125. if (System.env.TRAVIS_BRANCH != null) {
  126. jmeBranchName = System.env.TRAVIS_BRANCH
  127. }
  128. if (System.env.TRAVIS_PULL_REQUEST != null &&
  129. System.env.TRAVIS_PULL_REQUEST != "false") {
  130. jmeBranchName += "-pr-" + System.env.TRAVIS_PULL_REQUEST
  131. }
  132. if (jmeBranchName != "v3.1") {
  133. jmeFullVersion += "-${jmeBranchName}"
  134. jmePomVersion += "-${jmeBranchName}"
  135. jmeNbmUcSuffix = "${jmeBranchName}-"
  136. } else {
  137. jmeNbmUcSuffix = ""
  138. }
  139. jmeNbmUcSuffix += "nightly/" + jmeMainVersion + "/plugins"
  140. jmeFullVersion += "-${jmeRevision}"
  141. jmePomVersion += "-SNAPSHOT"
  142. jmeNbmRevision = jmeRevision
  143. }
  144. logger.warn("Full Version: ${jmeFullVersion}")
  145. logger.warn("POM Version: ${jmePomVersion}")
  146. logger.warn("NBM Revision: ${jmeNbmRevision}")
  147. logger.warn("NBM UC Suffix: ${jmeNbmUcSuffix}")
  148. } catch (ex) {
  149. // Failed to get repo info
  150. logger.warn("Failed to get repository info: " + ex.message + ". " + \
  151. "Only partial build info will be generated.")
  152. }
  153. }