diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e8de46389..e21fce7a4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -74,6 +74,43 @@ jobs: ORG_GRADLE_PROJECT_version: ${{ needs.version.outputs.version }} ORG_GRADLE_PROJECT_group: ${{ vars.GRADLE_GROUP }} + + publish-gradle: + name: Publish Processing Plugins to Gradle Plugin Portal + runs-on: ubuntu-latest + needs: version + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Setup Processing + uses: ./.github/actions/setup + + - name: Publish plugins to Gradle Plugin Portal + run: ./gradlew publishPlugins + env: + GRADLE_PUBLISH_KEY: ${{ secrets.GRADLE_PUBLISH_KEY }} + GRADLE_PUBLISH_SECRET: ${{ secrets.GRADLE_PUBLISH_SECRET }} + + ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.SIGNING_IN_MEMORY_KEY }} + ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_IN_MEMORY_KEY_PASSWORD }} + + ORG_GRADLE_PROJECT_version: ${{ needs.version.outputs.version }} + ORG_GRADLE_PROJECT_group: ${{ vars.GRADLE_GROUP }} + + - name: Publish internal plugins to Gradle Plugin Portal + run: ./gradlew -c gradle/plugins/settings.gradle.kts publishPlugins + env: + GRADLE_PUBLISH_KEY: ${{ secrets.GRADLE_PUBLISH_KEY }} + GRADLE_PUBLISH_SECRET: ${{ secrets.GRADLE_PUBLISH_SECRET }} + + ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.SIGNING_IN_MEMORY_KEY }} + ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_IN_MEMORY_KEY_PASSWORD }} + + ORG_GRADLE_PROJECT_version: ${{ needs.version.outputs.version }} + ORG_GRADLE_PROJECT_group: ${{ vars.GRADLE_GROUP }} + ORG_GRADLE_PROJECT_publishingGroup: ${{ vars.GRADLE_GROUP }} + release-windows: name: (windows/${{ matrix.arch }}) Create Processing Release runs-on: ${{ matrix.os }} diff --git a/gradle/plugins/library/build.gradle.kts b/gradle/plugins/library/build.gradle.kts index d2707eef4..f70338b4e 100644 --- a/gradle/plugins/library/build.gradle.kts +++ b/gradle/plugins/library/build.gradle.kts @@ -1,12 +1,17 @@ plugins { - `java-gradle-plugin` + id("com.gradle.plugin-publish") version "2.0.0" kotlin("jvm") version "2.2.20" } gradlePlugin { + website = "https://processing.org/" + vcsUrl = "https://github.com/processing/processing4" plugins { create("processing.library") { - id = "org.processing.library" + id = project.properties.getOrElse("publishingGroup", { "org.processing" }).toString() + ".library" + displayName = "Processing Library Plugin" + description = "Gradle plugin for building Processing libraries" + tags = listOf("processing", "library", "dsl") implementationClass = "ProcessingLibraryPlugin" } } diff --git a/java/gradle/build.gradle.kts b/java/gradle/build.gradle.kts index 0171384f4..a3ab597e7 100644 --- a/java/gradle/build.gradle.kts +++ b/java/gradle/build.gradle.kts @@ -21,15 +21,20 @@ dependencies{ testImplementation(libs.junit) } -// TODO: CI/CD for publishing the plugin to the Gradle Plugin Portal gradlePlugin{ + website = "https://processing.org/" + vcsUrl = "https://github.com/processing/processing4" plugins{ create("processing.java"){ - id = "org.processing.java" + id = "$group.java" + displayName = "Processing Plugin" + description = "Gradle plugin for building Processing sketches" + tags = listOf("processing", "sketch", "dsl") implementationClass = "org.processing.java.gradle.ProcessingPlugin" } } } + publishing{ repositories{ mavenLocal() @@ -38,4 +43,9 @@ publishing{ url = uri(project(":app").layout.buildDirectory.dir("resources-bundled/common/repository").get().asFile.absolutePath) } } +} +// Grab the group before running tests, since the group is used in the test configuration and may be modified by the publishing configuration +val testGroup = group.toString() +tasks.withType().configureEach { + systemProperty("project.group", testGroup) } \ No newline at end of file diff --git a/java/gradle/src/test/kotlin/ProcessingPluginTest.kt b/java/gradle/src/test/kotlin/ProcessingPluginTest.kt index 7ffeeecb5..c67725e99 100644 --- a/java/gradle/src/test/kotlin/ProcessingPluginTest.kt +++ b/java/gradle/src/test/kotlin/ProcessingPluginTest.kt @@ -20,7 +20,7 @@ class ProcessingPluginTest{ val sketchFolder = directory.newFolder("sketch") directory.newFile("sketch/build.gradle.kts").writeText(""" plugins { - id("org.processing.java") + id("${System.getProperty("project.group")}.java") } """.trimIndent()) directory.newFile("sketch/settings.gradle.kts")