2
0

version.gradle 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  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. jmeVersionTag = "unknown"
  51. }
  52. def getReleaseInfo(String tag) {
  53. if (tag == null) {
  54. // not a tagged commit
  55. return null;
  56. }
  57. if (!tag.startsWith("v")) {
  58. // syntax error
  59. return null;
  60. }
  61. tag = tag.substring(1)
  62. String[] parts = tag.split("-", 2);
  63. String mainVersion;
  64. boolean prerelease;
  65. String releaseName = null;
  66. if (parts.length == 2) {
  67. // prerelease
  68. prerelease = true;
  69. mainVersion = parts[0];
  70. releaseName = parts[1];
  71. if (releaseName.size() == 0) {
  72. // syntax error
  73. return null;
  74. }
  75. } else if (parts.length == 1) {
  76. // final release
  77. prerelease = false;
  78. mainVersion = parts[0];
  79. } else {
  80. // error
  81. return null;
  82. }
  83. if (mainVersion.size() == 0) {
  84. // syntax error
  85. return null;
  86. }
  87. parts = mainVersion.split("\\.");
  88. if (parts.size() != 3) {
  89. // syntax error
  90. return null;
  91. }
  92. String baseVersion = parts[0] + "." + parts[1];
  93. return [
  94. "tag" : tag,
  95. "baseVersion" : baseVersion,
  96. "mainVersion" : mainVersion,
  97. "prerelease" : prerelease,
  98. "releaseName" : releaseName,
  99. "releaseSuffix": (prerelease ? "-${releaseName}": "")
  100. ]
  101. }
  102. task configureVersionInfo {
  103. try {
  104. def grgit = Grgit.open(project.file('.'))
  105. def head = grgit.head()
  106. jmeRevision = grgit.log(includes: [head]).size()
  107. jmeGitHash = head.id
  108. jmeShortGitHash = head.abbreviatedId
  109. jmeBranchName = grgit.branch.current.name
  110. jmeGitTag = grgit.tag.list().find { it.commit == head }
  111. if (jmeGitTag != null) {
  112. jmeGitTag = jmeGitTag.name
  113. } else {
  114. jmeGitTag = System.env.TRAVIS_TAG
  115. }
  116. def releaseInfo = getReleaseInfo(jmeGitTag)
  117. if (releaseInfo != null) {
  118. jmeFullVersion = "${releaseInfo.baseVersion}${releaseInfo.releaseSuffix}"
  119. jmePomVersion = "${releaseInfo.mainVersion}${releaseInfo.releaseSuffix}"
  120. jmeNbmRevision = "0"
  121. jmeNbmUcSuffix = "stable/${releaseInfo.baseVersion}/plugins"
  122. jmeVersionTag = releaseInfo.releaseName ?: "";
  123. } else {
  124. // SNAPSHOT
  125. jmeFullVersion = jmeMainVersion
  126. jmePomVersion = jmeVersion
  127. if (System.env.TRAVIS_BRANCH != null) {
  128. jmeBranchName = System.env.TRAVIS_BRANCH
  129. }
  130. if (System.env.TRAVIS_PULL_REQUEST != null &&
  131. System.env.TRAVIS_PULL_REQUEST != "false") {
  132. jmeBranchName += "-pr-" + System.env.TRAVIS_PULL_REQUEST
  133. }
  134. if (jmeBranchName != "master") {
  135. jmeFullVersion += "-${jmeBranchName}"
  136. jmePomVersion += "-${jmeBranchName}"
  137. jmeNbmUcSuffix = "${jmeBranchName}-"
  138. } else {
  139. jmeNbmUcSuffix = ""
  140. }
  141. jmeNbmUcSuffix += "nightly/" + jmeMainVersion + "/plugins"
  142. jmeFullVersion += "-${jmeRevision}"
  143. jmePomVersion += "-SNAPSHOT"
  144. jmeNbmRevision = jmeRevision
  145. jmeVersionTag = "SNAPSHOT"
  146. }
  147. logger.warn("Full Version: ${jmeFullVersion}")
  148. logger.warn("POM Version: ${jmePomVersion}")
  149. logger.warn("NBM Revision: ${jmeNbmRevision}")
  150. logger.warn("NBM UC Suffix: ${jmeNbmUcSuffix}")
  151. } catch (ex) {
  152. // Failed to get repo info
  153. logger.warn("Failed to get repository info: " + ex.message + ". " + \
  154. "Only partial build info will be generated.")
  155. }
  156. }