Skip to content

Commit

Permalink
actually upload assets to GitHub releases (#29)
Browse files Browse the repository at this point in the history
  • Loading branch information
ToppleTheNun authored Feb 22, 2022
1 parent 80f44b5 commit b281769
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 17 deletions.
3 changes: 1 addition & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,6 @@ dependencies {
// shipkit
implementation("org.shipkit:shipkit-auto-version:_")
implementation("org.shipkit:shipkit-changelog:_")
implementation("org.shipkit:shipkit-auto-version:_")

// test logger plugin
implementation("com.adarshr:gradle-test-logger-plugin:_")
Expand All @@ -130,7 +129,7 @@ dependencies {
implementation("io.github.gradle-nexus:publish-plugin:_")

// github api
implementation("org.kohsuke:github-api:1.301")
implementation("org.kohsuke:github-api:_")
}

val generateChangelog = tasks.getByName<org.shipkit.changelog.GenerateChangelogTask>("generateChangelog") {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,23 @@
package dev.mythicdrops.gradle.release

import org.gradle.api.DefaultTask
import org.gradle.api.file.ConfigurableFileCollection
import org.gradle.api.logging.Logger
import org.gradle.api.logging.Logging
import org.gradle.api.provider.Property
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.InputFiles
import org.gradle.api.tasks.TaskAction
import org.kohsuke.github.GitHubBuilder
import java.io.File
import java.nio.file.Files

abstract class MythicDropsGitHubReleaseAssetUploadTask : DefaultTask() {
companion object {
private val LOG: Logger = Logging.getLogger(MythicDropsGitHubReleaseAssetUploadTask::class.java)
}

@get:InputFile
abstract val asset: File

@get:Input
abstract val contentType: Property<String>
@get:InputFiles
abstract val assets: ConfigurableFileCollection

@get:Input
abstract val githubApiUrl: Property<String>
Expand All @@ -35,12 +33,21 @@ abstract class MythicDropsGitHubReleaseAssetUploadTask : DefaultTask() {

@TaskAction
open fun uploadGitHubReleaseAsset() {
if (assets.isEmpty) {
LOG.lifecycle("Not uploading assets to GitHub as none have been configured")
return
}

val github = GitHubBuilder().withOAuthToken(githubToken.get()).build()
val githubRepository = github.getRepository(repository.get())
?: throw IllegalArgumentException("${repository.get()} does not exist")
val githubRelease = githubRepository.getReleaseByTagName(releaseTag.get())
?: throw IllegalArgumentException("Release by tag name ${releaseTag.get()} does not exist")
val githubAsset = githubRelease.uploadAsset(asset, contentType.get())
LOG.lifecycle("Asset uploaded to GitHub release. You can download it at: ${githubAsset.browserDownloadUrl}")

assets.forEach {
val contentType = Files.probeContentType(it.toPath())
val githubAsset = githubRelease.uploadAsset(it, contentType)
LOG.lifecycle("Asset uploaded to GitHub release. You can download it at: ${githubAsset.browserDownloadUrl}")
}
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
package dev.mythicdrops.gradle.release

import org.gradle.api.file.ConfigurableFileCollection
import org.gradle.api.provider.Property

/**
* Configuration for creating a GitHub release for MythicDrops Gradle projects.
*
* @property repository GitHub repository for the project (e.g., MythicDrops/kindling)
* @property assets Any assets to upload to GitHub on release
*/
open class MythicDropsReleaseGitHubExtension {
var repository: String = ""
interface MythicDropsReleaseGitHubExtension {
val repository: Property<String>

val assets: ConfigurableFileCollection
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,16 +32,17 @@ open class MythicDropsReleaseGitHubPlugin : Plugin<Project> {
releaseTag.set("v${target.version}")
repository.set(githubReleaseExtension.repository)
githubToken.set(System.getenv("GITHUB_TOKEN"))
assets.from(githubReleaseExtension.assets)
}
target.tasks.withType<GenerateChangelogTask>().configureEach {
previousRevision = target.extra.get("shipkit-auto-version.previous-tag")?.toString()
githubToken = System.getenv("GITHUB_TOKEN")
repository = githubReleaseExtension.repository
repository = githubReleaseExtension.repository.get()
}
target.tasks.withType<GithubReleaseTask>().configureEach {
dependsOn(target.tasks.getByName("generateChangelog"))
finalizedBy(target.tasks.getByName("githubReleaseAssetUpload"))
repository = githubReleaseExtension.repository
repository = githubReleaseExtension.repository.get()
changelog = target.tasks.getByName<GenerateChangelogTask>("generateChangelog").outputFile
githubToken = System.getenv("GITHUB_TOKEN")
newTagRevision = System.getenv("GITHUB_SHA")
Expand Down
2 changes: 1 addition & 1 deletion version.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
version=2.2.*
version=2.3.*
1 change: 0 additions & 1 deletion versions.properties
Original file line number Diff line number Diff line change
Expand Up @@ -44,5 +44,4 @@ version.org.jlleitschuh.gradle..ktlint-gradle=10.2.1

version.io.github.gradle-nexus..publish-plugin=1.1.0

## unused
version.org.kohsuke..github-api=1.301

0 comments on commit b281769

Please sign in to comment.