Mercurial > public > develkit
annotate scripts/release.groovy @ 219:efa545c6dd65
DEP-11: implement release process as gradle rule
author | smith@nwoca.org |
---|---|
date | Fri, 01 Jul 2016 20:56:04 +0100 |
parents | 49a220a1bde0 |
children |
rev | line source |
---|---|
208 | 1 #!groovy |
216
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
2 import groovy.transform.Sortable |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
3 import groovy.transform.ToString |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
4 import groovy.transform.TupleConstructor |
208 | 5 |
6 /** | |
217
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
7 This script implements the SSDT branching strategy based on hg flow |
216
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
8 and dependency resolution locking. |
208 | 9 |
217
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
10 The intention is to automate of creation of correctly configured release branches. |
216
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
11 The script tries to do the right thing based on standard SSDT project structures, |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
12 but it is the user's responsibility to ensure it's correct. |
208 | 13 |
217
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
14 The script does NOT "hg push --new-branch". That step is left for you |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
15 if the branch was created correctly. |
208 | 16 |
17 */ | |
216
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
18 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
19 def branch = new BranchInfo() |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
20 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
21 println "Project:\n" |
208 | 22 |
216
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
23 println "\trepo\t${("hg path".execute().text.split('=') ?: ['', ''])[1].trim()}" |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
24 println "\tbranch\t$branch" |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
25 println "\tversion\t$branch.version" |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
26 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
27 println "-" * 40 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
28 println "" |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
29 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
30 if (args.size() < 1) { |
208 | 31 println """ |
217
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
32 usage: release.groovy {major|minor|patch|n.n.n}\n |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
33 e.g: release.groovy minor |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
34 |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
35 If "major", "minor" or "patch" is specified, then the release version is |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
36 calculated based on the current branch. Otherwise specify a specific version. |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
37 |
208 | 38 If release ends in ".0", then will create 'release' stream, otherwise 'hotfix'. |
216
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
39 For hotfix, current working branch should be the release branch being hotfix'ed. |
208 | 40 |
41 Recommend that this script be executed in a fresh clone of the repo. | |
42 | |
43 ** Any uncommitted changes in the working directory will be committed with | |
215
5bebb590b30e
DEP-11: determine project version based on branch
smith@nwoca.org
parents:
208
diff
changeset
|
44 the initial setting of the version. These are assumed to be |
208 | 45 'latest.integration' changes. |
46 """ | |
47 | |
48 System.exit(0) | |
49 } | |
50 | |
217
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
51 def releaseVersion |
216
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
52 |
217
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
53 if ( args[0] == 'major') { |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
54 releaseVersion = branch.version.nextMajor() |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
55 } else if ( args[0] == 'minor') { |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
56 releaseVersion = branch.version.nextMinor() |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
57 } else if ( args[0] == 'patch') { |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
58 releaseVersion = branch.version.nextPatch() |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
59 } else { |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
60 releaseVersion = new Version(*args[0].split('\\.')*.toInteger()) |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
61 } |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
62 |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
63 def hotfix = releaseVersion.patch > 0 |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
64 |
208 | 65 def stream = hotfix ? 'hotfix' : 'release' |
66 | |
217
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
67 println "Preparing to create $stream branch for version $releaseVersion" |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
68 println() |
208 | 69 |
70 checkForSnapshots() | |
71 | |
72 println "hg flow $stream start v${releaseVersion} --dry-run".execute().text | |
73 | |
74 println "Continue? Enter = Yes, ^C to cancel" | |
75 System.in.newReader().readLine() | |
76 | |
77 println "hg flow ${stream} start v${releaseVersion} --dirty".execute().text | |
78 | |
79 println "hg update ${stream}/v${releaseVersion}".execute().text | |
80 | |
216
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
81 println "Starting dependency lock via gradle... (please wait)" |
217
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
82 println "cmd /c gradlew.bat deleteGlobalLock generateGlobalLock saveGlobalLock".execute().text |
208 | 83 |
216
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
84 println 'hg commit -A release.lock -m "lock dynamic dependencies for release"'.execute().text |
208 | 85 |
216
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
86 println "Created $releaseVersion $stream branch with locked dynamic dependencies." |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
87 println " Verify the branch and release.lock file created correctly then push the new branch." |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
88 println " If any problems, then delete repo and clone a fresh copy repository." |
208 | 89 |
90 def checkForSnapshots() { | |
91 def lines = new File('gradle.properties').readLines() + new File('build.gradle').readLines() | |
92 def snapshots = lines.collect { it.trim() }.findAll{ | |
93 it.contains('.SNAPSHOT') && !it.startsWith('version=') || | |
94 it.contains('latest.') && (it.startsWith('compile') || it.startsWith('runtime')) | |
95 } | |
96 if (snapshots) { | |
97 println "project contains SNAPSHOT dependencies: \n\t" + snapshots.join('\n\t') | |
98 System.exit(1) | |
99 } | |
216
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
100 } |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
101 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
102 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
103 @TupleConstructor |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
104 @Sortable |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
105 class Version { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
106 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
107 Integer major = 0 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
108 Integer minor = 0 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
109 Integer patch = 0 |
217
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
110 Boolean snapshot = false |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
111 |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
112 Version nextMajor() { |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
113 new Version(major + 1, 0, 0) |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
114 } |
216
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
115 |
217
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
116 Version nextMinor() { |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
117 if (snapshot) { |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
118 new Version(major, minor , 0) |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
119 } else { |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
120 new Version(major, minor + 1, 0) |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
121 } |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
122 } |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
123 |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
124 Version nextSnapshot() { |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
125 new Version(major, minor + 1, 0,true) |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
126 } |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
127 |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
128 Version nextPatch() { |
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
129 new Version(major, minor, patch + 1) |
216
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
130 } |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
131 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
132 String toString() { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
133 "${major}.${minor}.${patch}${snapshot ? '.SNAPSHOT' : ''}" |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
134 } |
208 | 135 |
136 } | |
137 | |
216
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
138 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
139 @ToString(includes=['name','shortName','buildVersion','imageId','deployName'],includeNames= true) |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
140 class BranchInfo { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
141 def name |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
142 def stream = "none" |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
143 def buildNumber = "" |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
144 def changeset = "" |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
145 def version |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
146 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
147 BranchInfo(name = null) { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
148 this.name = name |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
149 if (!name) { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
150 this.name = determineName() ?: '' |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
151 } |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
152 this.name = this.name.replace('@', '-') |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
153 determineStream() |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
154 buildNumber = System.getenv('bamboo_buildNumber') ?: "" |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
155 changeset = System.getenv('bamboo_planRepository_revision') ?: "" |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
156 } |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
157 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
158 String getDefaultDependencyStatus() { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
159 return isRelease() ? 'release' : 'integration' |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
160 } |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
161 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
162 private boolean isRelease() { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
163 return stream in ['release', 'hotfix'] |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
164 } |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
165 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
166 def getShortName() { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
167 def result = name.contains('/') ? name.split('/')[1] : name |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
168 } |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
169 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
170 String getBuildVersion() { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
171 def v = isRelease() ? shortName - "v": "" |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
172 return v |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
173 } |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
174 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
175 def Version getVersion() { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
176 if (!version) { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
177 if (isRelease()) { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
178 version = new Version(*getBuildVersion().split('\\.')*.toInteger(), false) |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
179 } else { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
180 version = findSnapshotVersion() |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
181 } |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
182 } |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
183 return version |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
184 } |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
185 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
186 def getImageId() { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
187 (buildVersion ?: shortName.take(25)) + (buildNumber ? "-${buildNumber}" : "-0") |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
188 } |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
189 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
190 def getDeployName() { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
191 (buildVersion ?: shortName.take(25)).toLowerCase().collectReplacements { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
192 ('a'..'z').contains(it) || ('0'..'9').contains(it) || it == "-" ? null : '-' |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
193 } |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
194 } |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
195 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
196 def getHash() { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
197 generateMD5(name) |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
198 } |
217
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
199 |
216
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
200 def generateMD5(String s) { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
201 def digest = java.security.MessageDigest.getInstance("MD5") |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
202 digest.update(s.bytes); |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
203 new BigInteger(1, digest.digest()).toString(16).padLeft(32, '0') |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
204 } |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
205 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
206 private findSnapshotVersion() { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
207 def versions = "hg branches --closed".execute().text.split('\n').findAll { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
208 it.startsWith( 'release') || it.startsWith( 'hotfix') |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
209 }.collect { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
210 it.replaceAll('\\s+',' ').split(' ')[0].split('/')[1] - 'v' |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
211 }.collect { |
217
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
212 new Version(*it.split('\\.')*.toInteger(),true) |
216
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
213 }.sort { v1, v2 -> v2 <=> v1 } |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
214 |
217
49a220a1bde0
DEP-11: allow keywords to calculate release version based on current branch
smith@nwoca.org
parents:
216
diff
changeset
|
215 return versions ? versions.first().nextSnapshot() : new Version().nextSnapshot() |
216
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
216 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
217 } |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
218 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
219 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
220 def determineName() { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
221 try { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
222 def branch = "hg branch".execute().text.trim() |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
223 def rawParents = 'hg parents'.execute().text |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
224 def parent = rawParents.split('\n').find { it.startsWith("branch") }?.split(":")?.getAt(1)?.trim() |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
225 return parent ?: branch |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
226 } catch (e) { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
227 ['.hg/branch', '../.hg/branch'].findResult { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
228 new File(it).exists() ? new File(it).text : null |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
229 } |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
230 } |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
231 } |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
232 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
233 void determineStream() { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
234 def flowConfig = new File('.hgflow').exists() ? new File('.hgflow') : new File('../.hgflow') |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
235 if (flowConfig.exists()) { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
236 def flows = new Properties() |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
237 flows.load(flowConfig.newReader()) |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
238 flows.stringPropertyNames().each { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
239 if (!it.startsWith("[") && name.startsWith(flows.getProperty(it))) { |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
240 stream = it |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
241 } |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
242 } |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
243 } |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
244 } |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
245 |
b628d49d2891
DEP-11: change name of lock file for release branch. update release script to depend on new resolution and dependency locking
smith@nwoca.org
parents:
215
diff
changeset
|
246 } |