Skip to content

Commit 2413e9d

Browse files
authored
Merge pull request #94 from bdpiparva/github-release-task
Added preview release task
2 parents 5fa9588 + 92dc1b8 commit 2413e9d

1 file changed

Lines changed: 65 additions & 5 deletions

File tree

build.gradle

Lines changed: 65 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@
1414
* limitations under the License.
1515
*/
1616

17+
import groovy.xml.MarkupBuilder
18+
19+
import java.text.DecimalFormat
20+
1721
plugins {
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+
165225
github {
166226
owner = System.getenv('GITHUB_USER') ?: 'bob'
167227
repo = 'docker-swarm-elastic-agents'

0 commit comments

Comments
 (0)