2
0

version.gradle 4.6 KB

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