Skip to content

Commit 7645497

Browse files
Merge pull request #8 from rundeck-plugins/RUN-4638-publish-to-packagecloud
[RUN-4638] Migrate publishing from Maven Central to PackageCloud
2 parents 08deffd + a41af97 commit 7645497

3 files changed

Lines changed: 44 additions & 42 deletions

File tree

‎.github/workflows/release.yml‎

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ jobs:
99
build:
1010
name: Publish Release
1111
runs-on: ubuntu-latest
12+
env:
13+
PKGCLD_REPO_URL: ${{ vars.PKGCLD_REPO_URL }}
1214
steps:
1315
- name: Checkout code
1416
uses: actions/checkout@v4
@@ -33,10 +35,36 @@ jobs:
3335
build/libs/puppet-apply-step-${{ steps.get_version.outputs.VERSION }}.zip
3436
env:
3537
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
36-
- name: Publish to Maven Central
37-
run: ./gradlew -PsigningKey=${SIGNING_KEY_B64} -PsigningPassword=${SIGNING_PASSWORD} -PsonatypeUsername=${SONATYPE_USERNAME} -PsonatypePassword=${SONATYPE_PASSWORD} publishToSonatype closeAndReleaseSonatypeStagingRepository
38+
- name: Publish to PackageCloud
39+
run: |
40+
if [ -z "$PKGCLD_WRITE_TOKEN" ]; then
41+
echo "::error::PKGCLD_WRITE_TOKEN must be set to publish to PackageCloud"
42+
exit 1
43+
fi
44+
./gradlew publishAllPublicationsToPackageCloudRepository
45+
env:
46+
PKGCLD_WRITE_TOKEN: ${{ secrets.PKGCLD_WRITE_TOKEN }}
47+
- name: Sign and upload GPG signatures to PackageCloud
48+
run: |
49+
set -e
50+
VERSION="${{ steps.get_version.outputs.VERSION }}"
51+
BASE_URL="${PKGCLD_REPO_URL:-https://packagecloud.io/pagerduty/rundeck-plugins/maven2}/org/rundeck/plugins/puppet-apply-step/${VERSION}"
52+
53+
echo "$SIGNING_KEY_B64" | base64 -d | gpg --batch --yes --import
54+
KEY_ID=$(gpg --list-secret-keys --with-colons | awk -F: '/^sec/ {print $5; exit}')
55+
56+
sign_and_upload() {
57+
local FILE="$1"
58+
local REMOTE_NAME="$2"
59+
gpg --batch --yes --pinentry-mode loopback --passphrase "$SIGNING_PASSWORD" --default-key "$KEY_ID" --detach-sign --armor "$FILE"
60+
curl -sf -H "Authorization: Bearer ${PKGCLD_WRITE_TOKEN}" \
61+
-X PUT --data-binary "@${FILE}.asc" \
62+
"${BASE_URL}/${REMOTE_NAME}.asc"
63+
}
64+
65+
sign_and_upload "build/libs/puppet-apply-step-${VERSION}.zip" "puppet-apply-step-${VERSION}.jar"
66+
sign_and_upload "build/publications/mavenZip/pom-default.xml" "puppet-apply-step-${VERSION}.pom"
3867
env:
39-
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
40-
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
4168
SIGNING_KEY_B64: ${{ secrets.SIGNING_KEY_B64 }}
4269
SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }}
70+
PKGCLD_WRITE_TOKEN: ${{ secrets.PKGCLD_WRITE_TOKEN }}

‎build.gradle‎

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ buildscript {
88
plugins {
99
id 'base'
1010
id 'pl.allegro.tech.build.axion-release' version '1.17.2'
11-
id 'io.github.gradle-nexus.publish-plugin' version '2.0.0'
1211
}
1312

1413
group = 'org.rundeck.plugins'
@@ -93,14 +92,4 @@ pluginZip.doFirst {
9392
// Wire into build lifecycle
9493
assemble.dependsOn pluginZip
9594

96-
nexusPublishing {
97-
packageGroup = 'org.rundeck.plugins'
98-
repositories {
99-
sonatype {
100-
nexusUrl.set(uri("https://ossrh-staging-api.central.sonatype.com/service/local/"))
101-
snapshotRepositoryUrl.set(uri("https://central.sonatype.com/repository/maven-snapshots/"))
102-
}
103-
}
104-
}
105-
10695
apply from: "${rootDir}/gradle/publishing.gradle"

‎gradle/publishing.gradle‎

Lines changed: 12 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
/**
2-
* Zip-based Rundeck plugin publication for Maven Central (artifact uploaded as type jar).
2+
* Zip-based Rundeck plugin publication (artifact uploaded as type jar).
33
* Requires: ext.publishName, ext.githubSlug, ext.developers; task pluginZip
44
*/
55
apply plugin: 'maven-publish'
6-
apply plugin: 'signing'
6+
7+
def pkgcldRepoUrl = (System.getenv("PKGCLD_REPO_URL") ?: "https://packagecloud.io/pagerduty/rundeck-plugins/maven2").trim()
78

89
publishing {
910
publications {
@@ -49,32 +50,16 @@ publishing {
4950
}
5051
}
5152
repositories {
52-
def pkgcldWriteToken = System.getenv("PKGCLD_WRITE_TOKEN") ?: project.findProperty("pkgcldWriteToken")
53-
if (pkgcldWriteToken) {
54-
maven {
55-
name = "PackageCloudTest"
56-
url = uri("https://packagecloud.io/pagerduty/rundeckpro-test/maven2")
57-
authentication {
58-
header(HttpHeaderAuthentication)
59-
}
60-
credentials(HttpHeaderCredentials) {
61-
name = "Authorization"
62-
value = "Bearer " + pkgcldWriteToken
63-
}
53+
maven {
54+
name = "PackageCloud"
55+
url = uri(pkgcldRepoUrl)
56+
authentication {
57+
header(HttpHeaderAuthentication)
58+
}
59+
credentials(HttpHeaderCredentials) {
60+
name = "Authorization"
61+
value = "Bearer " + (System.getenv("PKGCLD_WRITE_TOKEN") ?: project.findProperty("pkgcldWriteToken"))
6462
}
6563
}
6664
}
6765
}
68-
69-
def base64Decode = { String prop ->
70-
project.findProperty(prop) ?
71-
new String(Base64.getDecoder().decode(project.findProperty(prop).toString())).trim() :
72-
null
73-
}
74-
75-
if (project.hasProperty('signingKey') && project.hasProperty('signingPassword')) {
76-
signing {
77-
useInMemoryPgpKeys(base64Decode("signingKey"), project.signingPassword)
78-
sign(publishing.publications)
79-
}
80-
}

0 commit comments

Comments
 (0)