Skip to content

[RUN-4638] Migrate publishing from Maven Central to PackageCloud#90

Merged
Jesus-Osuna-M merged 1 commit into
mainfrom
RUN-4638-publish-to-packagecloud
Jul 21, 2026
Merged

[RUN-4638] Migrate publishing from Maven Central to PackageCloud#90
Jesus-Osuna-M merged 1 commit into
mainfrom
RUN-4638-publish-to-packagecloud

Conversation

@Jesus-Osuna-M

Copy link
Copy Markdown
Contributor

Jira ticket

RUN-4638 (subtask of RUN-4570)

Description

Migrate docker publishing from Maven Central (Sonatype) to PackageCloud, applying the same design already validated on rundeck-plugins/sshj-plugin#136 and the other already-migrated rundeck-plugins repos. Part of the RUN-4570 Maven Central publishing limits resolution — plugins account for the bulk of the file/release count on Maven Central, but no external project depends on them as Maven dependencies.

  • Removed nexusPublish/nexusPublishing. Unlike other migrated repos, this one doesn't apply the java plugin, and nexus-publish was the one transitively providing the build/assemble/check lifecycle tasks that defaultTasks and tasks.named('build') depend on here — added id 'base' explicitly so removing nexus-publish doesn't break ./gradlew build.
  • Point the PackageCloud maven repo at the configurable PKGCLD_REPO_URL env var (with a fallback to the real rundeck-plugins repo), replacing the half-migrated PackageCloudTest block that pointed at rundeckpro-test.
  • Dropped Gradle-side GPG signing (sign(publishing.publications)): PackageCloud's Maven endpoint rejects the checksum Gradle auto-generates for .asc signature files (422 Unprocessable Entity). Sign and upload via gpg CLI + curl instead, directly in release.yml — the same mechanism validated end-to-end on sshj-plugin.
  • release.yml: replaced the "Publish to Maven Central" step with "Publish to PackageCloud" + a "Sign and upload GPG signatures" step. Since docker publishes a zip-based artifact (pluginZip) with its Maven extension overridden to .jar, the signing step signs the local docker-<version>.zip and uploads the signature as docker-<version>.jar.asc to match the published coordinates.

Testing instructions

  • Merge this PR.
  • Tag a version to trigger the release workflow.
  • Verify the artifact and its .asc signature land under org/rundeck/plugins/docker/<version>/ on PackageCloud.
  • Verify ./gradlew build still succeeds without PKGCLD_REPO_URL set.

Maven Central's free publishing limits are being hit org-wide (RUN-4570);
plugins account for most of the file/release count and nothing depends on
them as Maven dependencies, so rundeck-plugins repos are moving to
PagerDuty's PackageCloud instead. Same design already validated on
sshj-plugin, http-step, and other rundeck-plugins repos.

Signing moves out of Gradle's signing plugin into a manual gpg+curl step in
the release workflow: Gradle auto-generates a checksum for every publication
artifact including .asc signature files, and PackageCloud's Maven endpoint
422s on the checksum-of-a-signature-file, aborting the publish task.

Also adds the 'base' plugin explicitly: this repo doesn't apply 'java', and
the removed nexus-publish plugin was the one transitively providing the
build/assemble/check lifecycle tasks that defaultTasks and tasks.named('build')
depend on here.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Migrates the plugin release/publishing pipeline from Sonatype/Maven Central to PackageCloud, aligning this repo with the org’s already-migrated plugin repositories while preserving existing ./gradlew build behavior for a zip-based plugin artifact published with Maven .jar coordinates.

Changes:

  • Remove io.github.gradle-nexus.publish-plugin / nexusPublishing and add Gradle base to retain lifecycle tasks (build, assemble, check).
  • Update maven-publish configuration to publish to a PackageCloud Maven repository, with the repo URL configurable via PKGCLD_REPO_URL.
  • Update release.yml to publish to PackageCloud and upload detached ASCII-armored GPG signatures via gpg + curl.

Reviewed changes

Copilot reviewed 2 out of 3 changed files in this pull request and generated 2 comments.

File Description
gradle/publishing.gradle Switch publishing repository configuration to PackageCloud + remove Gradle-side signing configuration.
build.gradle Remove Nexus publish plugin usage and apply base to keep expected lifecycle tasks.
.github/workflows/release.yml Replace Maven Central publishing with PackageCloud publishing plus a CLI-based signature upload step.

Comment thread gradle/publishing.gradle
Comment on lines +59 to 62
credentials(HttpHeaderCredentials) {
name = "Authorization"
value = "Bearer " + (System.getenv("PKGCLD_WRITE_TOKEN") ?: project.findProperty("pkgcldWriteToken"))
}
Comment on lines +50 to +52
VERSION="${{ steps.get_version.outputs.VERSION }}"
BASE_URL="${PKGCLD_REPO_URL:-https://packagecloud.io/pagerduty/rundeck-plugins/maven2}/org/rundeck/plugins/docker/${VERSION}"

@Jesus-Osuna-M
Jesus-Osuna-M merged commit da2ddfd into main Jul 21, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants