-
Notifications
You must be signed in to change notification settings - Fork 26
Home
- owner
- repo
- authorization
- tagName
- targetCommitish
- releaseName
- body
- draft
- prerelease
- releaseAssets
- overwrite
- allowUploadToExisting (since 2.2.2)
For every field, it may be set using any of the following methods
githubRelease {
// standard method call
field 'value'
field('value')
setField 'value'
setField('value')
field = 'value'
// using a closure for deferred computations
field { getValue() }
setField { getValue() }
}
githubRelease {
owner 'breadmoirai'
owner { 'breadmoirai' }
owner = 'breadmoirai'
setOwner('breadmoirai')
}
This field specifies the user or organization that the github repo belongs to.
By default, if this property is not set, it is inferred using the last part of the project.group value.
If
group = 'com.github.breadmoirai'
then
githubRelease {
owner = 'breadmoirai'
}
githubRelease {
repo 'github-release-gradle-plugin'
repo { 'github-release-gradle-plugin' }
repo = 'github-release-gradle-plugin'
setRepo('github-release-gradle-plugin')
}
This field specifies the name of the github repo.
If this field is not set, it attempts to use the project.name
or the rootProject.name
name = 'github-release-gradle-plugin'
then
githubRelease {
repo = 'github-release-gradle-plugin'
}
For authorization, either a token or username and password is required.
A token can be acquired from user settings > developer settings
on Github which must contain repo permissions.
In lieu of a token, the username and password can be used as shown below.
githubRelease {
token 'TOKEN'
token { 'TOKEN' }
token = 'TOKEN'
setToken('TOKEN')
authorization 'Token TOKEN'
...
authorization 'Basic ' + Base64.encoder.encodeToString('username:password'.bytes)
...
authorization {
def result = null
new SwingBuilder().edt {
dialog(modal: true,
title: 'Login to Github',
alwaysOnTop: true,
resizable: false,
locationRelativeTo: null,
pack: true,
show: true
) {
vbox {
label(text: "username")
def username = textField()
label(text: "password")
def password = passwordField()
button(defaultButton: true, text: 'Login', actionPerformed: {
result = 'Basic ' + Base64.encoder.encodeToString("$username.text:$password.password".bytes)
dispose()
})
}
}
}
return result
}
}
This field specifies the name of the git tag to use or create for this release.
By default this is set to "v$project.version"
githubRelease {
tagName 'v1.0.0'
tagName { 'v1.0.0' }
tagName = 'v1.0.0'
setTagName('v1.0.0')
}
This field specifies the target commit hash that this release should point to.
Be default, this is set to 'master'
githubRelease {
targetCommitish 'master'
targetCommitish { 'master' }
targetCommitish = 'master'
setTargetCommitish('master')
}
The name of the release.
By default, this is set to whatever the tagName is set to.
githubRelease {
releaseName 'v1.0.0'
releaseName { 'v1.0.0' }
releaseName = 'v1.0.0'
releaseName('v1.0.0')
}
The body of the release. By default, this is empty. However, we provide a changelog that attempts to retrieve the list of commits ranging from the most current to the release prior to this one.
githubRelease {
body 'Hello world!'
body { 'Hello world!' }
body = 'Hello world!'
setBody('Hello world!')
body changelog {
...
}
}
executable
is set to 'git'
by default as the changelog makes a call to git rev-list
to retrieve a list of past commits. If the git
executable is not available in the Path, the path to the executable must be set.
currentCommit
identifies the most recent commit tied to this release. By default, it is set to 'Head'
.
lastCommit
identifies the oldest commit that should be included. By default, this will make a call to the Github API and look for the most recent release before the current one and use that release's targetCommitish.
options
is a list of strings that is passed to the git rev-list
command. By default, this is set as ["--format=oneline", "--abbrev-commit", "--max-count=50"]
githubRelease {
body changelog {
executable 'git' //path to git executable
currentCommit 'HEAD' //optional
lastCommit 'HEAD~10' //optional
options(["--format=oneline", "--abbrev-commit", "--max-count=50", "graph"]) //optional
}
body {
changelog().call()
.readLines()
.stream()
.map{ "- $it" }
.collect(Collectors.joining('\n', '## Changelog\n', ''))
}
}
A boolean to mark this release as a draft or not.
By default, this value is set to false
.
githubRelease {
draft false
}
A boolean to mark this release as a prerelease or not.
By default, this value is set to false
.
githubRelease {
prerelease false
}
This is a FileCollection of the files that you would like to upload with your release.
githubRelease {
releaseAssets.from('build/libs')
FilenameFilter filter = { dir, filename -> filename.contains(project.version) }
releaseAssets = jar.destinationDir.listFiles filter
}
This field is used to determine if any existing releases should be overwritten or not.
githubRelease {
overwrite true
overwrite {
def result = null
new SwingBuilder().edt {
dialog(modal: true,
title: 'Overwrite Existing',
alwaysOnTop: true,
resizable: false,
locationRelativeTo: null,
pack: true,
show: true
) {
vbox {
label(text: 'An existing Github release has been found. Would you like to delete it?')
button(defaultButton: true, text: 'Yes', actionPerformed: {
result = true
dispose()
})
button(text: 'No', actionPerformed: {
result = false
dispose()
})
}
}
return result
}
}
This field is mutually exclusive to overwrite
. If a release already exists, this option will only upload releaseAssets
assets to that release. If overwrite
is set to true
, then overwrite
takes precedence and this field is ignored. By default, this value is set to false
.
githubRelease {
allowUploadToExisting true
}
Minimal configuration
githubRelease {
token getProperty('github.token')
FilenameFilter filter = { dir, filename -> filename.contains(project.version) }
releaseAssets = jar.destinationDir.listFiles filter
}