1414 * limitations under the License.
1515 */
1616
17+ import groovy.xml.MarkupBuilder
18+
19+ import java.text.DecimalFormat
20+
1721plugins {
1822 id ' com.github.ben-manes.versions' version ' 0.20.0'
1923 id ' co.riiid.gradle' version ' 0.4.2'
@@ -120,9 +124,7 @@ task deploy(type: Copy) {
120124 into ' gocd/server/plugins/external'
121125}
122126
123- githubRelease. dependsOn assemble
124-
125- def getLatestTag (boolean isExperimental ) {
127+ static def getLatestTag (boolean isExperimental ) {
126128 try {
127129 def command = [" git" , " describe" , " --tags" , " --abbrev=0" ]
128130 if (! isExperimental) {
@@ -133,8 +135,6 @@ def getLatestTag(boolean isExperimental) {
133135 process. waitFor()
134136 def result = process. text
135137
136- println (" \n\n cmd: ${ command.join(" ")} Result: ${ result} " )
137-
138138 return result. trim()
139139 } catch (Exception e) {
140140 return null
@@ -162,6 +162,66 @@ def getCommitsSinceLastTag(String tag) {
162162 return hashStdOut. toString(). trim()
163163}
164164
165+ static String readableFileSize (long size ) {
166+ if (size <= 0 ) return " 0"
167+ final String [] units = [" B" , " KB" , " MB" , " GB" , " TB" ]
168+ int digitGroups = (int ) (Math . log10(size) / Math . log10(1024 ))
169+ return new DecimalFormat (" #,##0.#" ). format(size / Math . pow(1024 , digitGroups)) + " " + units[digitGroups]
170+ }
171+
172+ task previewGithubRelease () {
173+ doLast {
174+ def prerelease = ! " No" . equalsIgnoreCase(System . getenv(' PRERELEASE' ))
175+ def lastTag = getLatestTag(prerelease)
176+ def repo = ' docker-swarm-elastic-agents'
177+ def targetCommitish = project. gitRevision
178+ def assets = jar. outputs. files. files
179+ def tagName = " ${ project.fullVersion}${ prerelease ? '-exp' : ''} "
180+
181+ def releaseName = " ${ prerelease ? 'Experimental: ' : ''}${ project.fullVersion} "
182+ def changelogHeader = lastTag ? " Changelog ${ lastTag} ..${ project.fullVersion} " : " Changelog"
183+
184+ def changes = getCommitsSinceLastTag(lastTag). replaceAll(" \" " , " " ). stripIndent(). trim()
185+
186+ def previewFile = file(" ${ project.buildDir} /preview.html" )
187+ if (! previewFile. exists()) {
188+ previewFile. createNewFile()
189+ }
190+ def html = new MarkupBuilder (new FileWriter (previewFile))
191+ html. html {
192+ body {
193+ div {
194+ h1(repo)
195+ h3(releaseName)
196+ div {
197+ b(" Tag: " )
198+ span(tagName)
199+ }
200+ div {
201+ b(" Commit: " )
202+ span(targetCommitish. substring(0 , 7 ))
203+ }
204+
205+ div {
206+ h4(" Assets" )
207+ assets. each { div(it. getName() + " - " + readableFileSize(it. length())) }
208+ }
209+
210+ div {
211+ h4(changelogHeader)
212+ p {
213+ changes. split(" \n " ). each { div(it) }
214+ }
215+ }
216+ }
217+ }
218+ }
219+ }
220+ }
221+
222+ previewGithubRelease. dependsOn assemble
223+ githubRelease. dependsOn previewGithubRelease
224+
165225github {
166226 owner = System . getenv(' GITHUB_USER' ) ?: ' bob'
167227 repo = ' docker-swarm-elastic-agents'
0 commit comments