| Task name | Depends on | Type | Description |
|---|---|---|---|
| githubPublish | wooga.gradle.github.publish.tasks.GithubPublish |
Copies files and folder configured to temp directory and uploads them to github release |
The plugin will only add one task githubPublish which needs further configuration before it executes.
To authenticate with github you need to set either the userName and token parameter in the github plugin extension or in the GithubPublish task configuration.
If you specify the values in the extension configuration all tasks of type wooga.gradle.github.publish.tasks.GithubPublish will be configured with these values by default. You can create multiple publish tasks with different credentials or repository values.
You can also use github-api.kohsuke.org authentication fallback logic fromCredentials or fromEnvironment.
kohsuke api docs fromEnvironment
The following environment variables are recognized:
GITHUB_LOGIN: username like 'kohsuke'
GITHUB_PASSWORD: raw password
GITHUB_OAUTH: OAuth token to login
GITHUB_ENDPOINT: URL of the API endpoint
The publishing process works in three steps.
CopySpec to temp directory. You can use all of the copy tasks methods, except into and destinationDir.temp directory and zip all directories (archive name is ${directory.name}.zip) and copy files to second temp dirtemp directorybuild.gradle (publish single file)
githubPublish {
description "publish a single file"
from "testFiles/file1.txt"
tagName = "singleFile"
}
In this example the plugin will upload only a single file referenced.
build.gradle (publish all files in directory)
githubPublish {
description "publish all files in a directory"
from "testFiles/dirWithFiles"
tagName = "allFilesInDirectory"
}
Gradle will iterate through dirWithFiles directory and upload all files located in this directory.
build.gradle (publish directory as zip)
githubPublish {
description "publish a directory as zip"
from("testFiles/dirWithFiles") {
into "package"
}
tagName = "directoryAsZip"
}
Here gradle will publish one zip package.zip to github.
build.gradle (publish files and directories)
githubPublish {
description "publish a directory as zip"
description "publish all files in folder. Folders inside will get zipped before upload"
from("testFiles")
tagName = "wholeStructure"
}
build.gradle (publish files in configuration)
dependencies {
archive files("testFiles/files1/file1")
archive files("testFiles/file1.txt")
}
githubPublish {
description "publish a configuration"
from(configurations.archive)
tagName = "configuration"
}
The type wooga.gradle.github.base.tasks.Github can be used to build generic tasks who can access the github API through github-api.kohsuke.org. It implements the wooga.gradle.github.base.GithubSpec interface and handles the basic github client creation and authentication.
The task type is usable for scripted tasks or can be extended. You should then use wooga.gradle.github.base.tasks.internal.AbstractGithubTask instead.
Along with the properties from wooga.gradle.github.base.GithubSpec the task gives access to client and, if repositoryName is set, to repository property.
create repos
task customGithubTask(type:wooga.gradle.github.base.tasks.Github) {
doLast {
def builder = client.createRepository("Repo")
builder.description("description")
builder.autoInit(false)
builder.licenseTemplate('MIT')
builder.private_(false)
builder.issues(false)
builder.wiki(false)
builder.create()
}
}
update files
task customGithubTask(type:wooga.gradle.github.base.tasks.Github) {
doLast {
def content = repository.getFileContent("$file")
content.update("$updatedContent", "update release notes")
}
}