Skip to content

Commit ac8b5b1

Browse files
authored
Merge pull request #355 from jdaugherty/7.0.x
#350 - Rework publishing plugins so they can be used externally and on multi-project builds
2 parents ab7bda4 + 8f926fe commit ac8b5b1

32 files changed

+482
-326
lines changed

.github/workflows/gradle.yml

Lines changed: 44 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -12,70 +12,80 @@ jobs:
1212
runs-on: ubuntu-latest
1313
strategy:
1414
matrix:
15-
java: ['17']
16-
env:
17-
WORKSPACE: ${{ github.workspace }}
15+
java: ['17', '21']
1816
steps:
19-
- uses: actions/checkout@v4
20-
- name: Set up JDK
17+
- name: "📥 Checkout repository"
18+
uses: actions/checkout@v4
19+
- name: "☕️ Setup JDK"
2120
uses: actions/setup-java@v4
2221
with:
23-
distribution: temurin
22+
distribution: liberica
2423
java-version: ${{ matrix.java }}
25-
- name: Run Build
24+
- name: "🐘 Setup Gradle"
25+
uses: gradle/actions/setup-gradle@v4
26+
with:
27+
develocity-access-key: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
28+
- name: "🔨 Build project"
2629
id: build
27-
uses: gradle/gradle-build-action@v3
2830
env:
29-
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
30-
with:
31-
arguments: build -Dgeb.env=chromeHeadless
31+
DEVELOCITY_BUILD_CACHE_NODE_USER: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER }}
32+
DEVELOCITY_BUILD_CACHE_NODE_KEY: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY }}
33+
run: ./gradlew build
3234
publish:
3335
if: github.event_name == 'push'
3436
needs: ['build']
3537
runs-on: ubuntu-latest
3638
steps:
37-
- uses: actions/checkout@v4
38-
- name: Set up JDK
39+
- name: "📥 Checkout repository"
40+
uses: actions/checkout@v4
41+
- name: "☕️ Setup JDK"
3942
uses: actions/setup-java@v4
4043
with:
41-
distribution: temurin
44+
distribution: liberica
4245
java-version: 17
43-
- name: Publish Artifacts (repo.grails.org)
46+
- name: "🐘 Setup Gradle"
47+
uses: gradle/actions/setup-gradle@v4
48+
with:
49+
develocity-access-key: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
50+
- name: "📤 Publish Snapshot Artifacts to Artifactory (repo.grails.org/libs-snapshot-local)"
4451
id: publish
45-
uses: gradle/gradle-build-action@v3
4652
env:
4753
ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }}
4854
ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }}
49-
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
50-
with:
51-
arguments: |
52-
-Dorg.gradle.internal.publish.checksums.insecure=true
53-
publish
55+
DEVELOCITY_BUILD_CACHE_NODE_USER: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER }}
56+
DEVELOCITY_BUILD_CACHE_NODE_KEY: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY }}
57+
run: >
58+
./gradlew
59+
-Dorg.gradle.internal.publish.checksums.insecure=true
60+
publish
5461
docs:
5562
if: github.event_name == 'push'
5663
needs: publish
5764
runs-on: ubuntu-latest
5865
permissions:
5966
contents: write
6067
env:
61-
GIT_USER_NAME: puneetbehl
62-
GIT_USER_EMAIL: [email protected]
68+
GIT_USER_NAME: grails-build
69+
GIT_USER_EMAIL: [email protected]
6370
steps:
64-
- name: Checkout repository
71+
- name: "📥 Checkout repository"
6572
uses: actions/checkout@v4
66-
- name: Set up JDK
73+
- name: "☕️ Setup JDK"
6774
uses: actions/setup-java@v4
6875
with:
69-
distribution: temurin
76+
distribution: liberica
7077
java-version: 17
71-
- name: Generate Groovydoc
78+
- name: "🐘 Setup Gradle"
79+
uses: gradle/actions/setup-gradle@v4
80+
with:
81+
develocity-access-key: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
82+
- name: "📜 Generate Groovydoc"
7283
id: groovydoc
73-
uses: gradle/gradle-build-action@v3
7484
env:
75-
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
76-
with:
77-
arguments: groovydoc
78-
- name: Publish to Github Pages
85+
DEVELOCITY_BUILD_CACHE_NODE_USER: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER }}
86+
DEVELOCITY_BUILD_CACHE_NODE_KEY: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY }}
87+
run: ./gradlew groovydoc
88+
- name: "🚀 Publish to Github Pages"
7989
id: docs
8090
if: success()
8191
uses: grails/github-pages-deploy-action@v2
@@ -86,6 +96,5 @@ jobs:
8696
BRANCH: gh-pages
8797
FOLDER: build/docs
8898
DOC_FOLDER: gh-pages
89-
COMMIT_EMAIL: [email protected]
90-
COMMIT_NAME: Puneet Behl
91-
VERSION: ${{ needs.publish.outputs.release_version }}
99+
COMMIT_EMAIL: ${{ env.GIT_USER_EMAIL }}
100+
COMMIT_NAME: ${{ env.GIT_USER_NAME }}

.github/workflows/release.yml

Lines changed: 53 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -12,53 +12,55 @@ jobs:
1212
release_version: ${{ steps.release_version.outputs.value }}
1313
target_branch: ${{ steps.extract_branch.outputs.value }}
1414
env:
15-
GIT_USER_NAME: puneetbehl
16-
GIT_USER_EMAIL: [email protected]
15+
GIT_USER_NAME: 'grails-build'
16+
GIT_USER_EMAIL: '[email protected]'
1717
steps:
18-
- name: Checkout repository
18+
- name: "📥 Checkout repository"
1919
uses: actions/checkout@v4
2020
with:
2121
token: ${{ secrets.GH_TOKEN }}
22-
- name: Set up JDK
22+
- name: "☕️ Setup JDK"
2323
uses: actions/setup-java@v4
2424
with:
25-
distribution: temurin
25+
distribution: liberica
2626
java-version: 17
27-
- name: Extract Target Branch
27+
- name: "🐘 Setup Gradle"
28+
uses: gradle/actions/setup-gradle@v4
29+
with:
30+
develocity-access-key: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
31+
- name: "📝 Store the target branch"
2832
id: extract_branch
2933
run: |
3034
echo "Determining Target Branch"
31-
TARGET_BRANCH=`cat $GITHUB_EVENT_PATH | jq '.release.target_commitish' | sed -e 's/^"\(.*\)"$/\1/g'`
35+
TARGET_BRANCH=${GITHUB_REF#refs/heads/}
3236
echo $TARGET_BRANCH
3337
echo "value=${TARGET_BRANCH}" >> $GITHUB_OUTPUT
34-
- name: Set the current release version
38+
- name: "📝 Store the current release version"
3539
id: release_version
3640
run: echo "value=${GITHUB_REF:11}" >> $GITHUB_OUTPUT
37-
- name: Run pre-release
41+
- name: "⚙️ Run pre-release"
3842
uses: micronaut-projects/github-actions/pre-release@master
3943
with:
4044
token: ${{ secrets.GITHUB_TOKEN }}
41-
- name: Run Assemble
45+
- name: "🧩 Run Assemble"
4246
if: success()
4347
id: assemble
44-
uses: gradle/gradle-build-action@v3
45-
with:
46-
arguments: assemble
4748
env:
48-
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
49-
- name: Upload Distribution
49+
DEVELOCITY_BUILD_CACHE_NODE_USER: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER }}
50+
DEVELOCITY_BUILD_CACHE_NODE_KEY: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY }}
51+
run: ./gradlew assemble
52+
- name: "🚀 Upload Distribution"
5053
if: success()
5154
uses: actions/upload-artifact@v4
5255
with:
5356
name: grails-${{ steps.release_version.outputs.value }}.zip
5457
path: build/distributions/grails-${{ steps.release_version.outputs.value }}.zip
55-
- name: Generate secring file
58+
- name: "📝 Generate secring file"
5659
env:
5760
SECRING_FILE: ${{ secrets.SECRING_FILE }}
5861
run: echo $SECRING_FILE | base64 -d > ${{ github.workspace }}/secring.gpg
59-
- name: Publish to Sonatype OSSRH
62+
- name: "🚀 Publish to Sonatype OSSRH"
6063
id: publish
61-
uses: gradle/gradle-build-action@v3
6264
env:
6365
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
6466
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
@@ -67,9 +69,10 @@ jobs:
6769
SIGNING_KEY: ${{ secrets.SIGNING_KEY }}
6870
SIGNING_PASSPHRASE: ${{ secrets.SIGNING_PASSPHRASE }}
6971
SECRING_FILE: ${{ secrets.SECRING_FILE }}
70-
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
71-
with:
72-
arguments: |
72+
DEVELOCITY_BUILD_CACHE_NODE_USER: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER }}
73+
DEVELOCITY_BUILD_CACHE_NODE_KEY: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY }}
74+
run: >
75+
./gradlew
7376
-Psigning.secretKeyRingFile=${{ github.workspace }}/secring.gpg
7477
publishToSonatype
7578
closeSonatypeStagingRepository
@@ -79,26 +82,31 @@ jobs:
7982
permissions:
8083
contents: read
8184
steps:
82-
- uses: actions/checkout@v4
83-
- name: Set up JDK
85+
- name: "📥 Checkout repository"
86+
uses: actions/checkout@v4
87+
- name: "☕️ Setup JDK"
8488
uses: actions/setup-java@v4
8589
with:
86-
distribution: temurin
90+
distribution: liberica
8791
java-version: 17
88-
- name: Checkout repository
92+
- name: "📥 Checkout repository"
8993
uses: actions/checkout@v4
9094
with:
9195
token: ${{ secrets.GH_TOKEN }}
9296
ref: v${{ needs.publish.outputs.release_version }}
97+
- name: "🐘 Setup Gradle"
98+
uses: gradle/actions/setup-gradle@v4
99+
with:
100+
develocity-access-key: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
93101
- name: Nexus Staging Close And Release
94-
uses: gradle/gradle-build-action@v3
95102
env:
96-
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
103+
DEVELOCITY_BUILD_CACHE_NODE_USER: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER }}
104+
DEVELOCITY_BUILD_CACHE_NODE_KEY: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY }}
97105
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
98106
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
99107
SONATYPE_STAGING_PROFILE_ID: ${{ secrets.SONATYPE_STAGING_PROFILE_ID }}
100-
with:
101-
arguments: |
108+
run: >
109+
./gradlew
102110
findSonatypeStagingRepository
103111
releaseSonatypeStagingRepository
104112
- name: Run post-release
@@ -114,38 +122,41 @@ jobs:
114122
permissions:
115123
contents: write
116124
env:
117-
GIT_USER_NAME: puneetbehl
118-
GIT_USER_EMAIL: [email protected]
125+
GIT_USER_NAME: 'grails-build'
126+
GIT_USER_EMAIL: '[email protected]'
119127
steps:
120-
- name: Checkout repository
128+
- name: "📥 Checkout repository"
121129
uses: actions/checkout@v4
122130
with:
123131
token: ${{ secrets.GH_TOKEN }}
124132
ref: v${{ needs.publish.outputs.release_version }}
125-
- name: Set up JDK
133+
- name: "☕️ Setup JDK"
126134
uses: actions/setup-java@v4
127135
with:
128-
distribution: temurin
136+
distribution: liberica
129137
java-version: 17
130-
- name: Generate Groovydoc
138+
- name: "🐘 Setup Gradle"
139+
uses: gradle/actions/setup-gradle@v4
140+
with:
141+
develocity-access-key: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
142+
- name: "📜 Generate Groovydoc"
131143
id: groovydoc
132-
uses: gradle/gradle-build-action@v3
133144
env:
134-
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
135-
with:
136-
arguments: groovydoc
137-
- name: Publish to Github Pages
145+
DEVELOCITY_BUILD_CACHE_NODE_USER: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER }}
146+
DEVELOCITY_BUILD_CACHE_NODE_KEY: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY }}
147+
run: ./gradlew groovydoc
148+
- name: "🚀 Publish to Github Pages"
138149
id: docs
139150
if: success()
140151
uses: grails/github-pages-deploy-action@v2
141152
env:
142153
SKIP_SNAPSHOT: ${{ contains(needs.publish.outputs.release_version, 'M') }}
143-
SKIP_LATEST: ${{ !startsWith(needs.publish.outputs.target_branch, '6.1') }}
154+
SKIP_LATEST: ${{ !startsWith(needs.publish.outputs.target_branch, '6.2') }}
144155
TARGET_REPOSITORY: ${{ github.repository }}
145156
GH_TOKEN: ${{ secrets.GH_TOKEN }}
146157
BRANCH: gh-pages
147158
FOLDER: build/docs
148159
DOC_FOLDER: gh-pages
149160
COMMIT_EMAIL: ${{ env.GIT_USER_EMAIL }}
150-
COMMIT_NAME: Puneet Behl
161+
COMMIT_NAME: ${{ env.GIT_USER_NAME }}
151162
VERSION: ${{ needs.publish.outputs.release_version }}

README.md

Lines changed: 52 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,6 @@ grails-gsp
2525
---------
2626
* Configure GSP Compiling Task
2727

28-
grails-plugin-publish
29-
---------
30-
_Todo_: Add the docs
31-
3228
grails-plugin
3329
---------
3430
* Configure Ast Sources
@@ -41,6 +37,58 @@ grails-profile
4137
---------
4238
_Todo_: Add the docs
4339

40+
grails-profile-publish
41+
---------
42+
_Todo_: Add the docs
43+
44+
grails-publish
45+
---------
46+
A Gradle plugin to ease publishing with the maven publish plugin or the nexus publish plugin.
47+
48+
Example Usage:
49+
50+
grailsPublish {
51+
websiteUrl = 'http://foo.com/myplugin'
52+
license {
53+
name = 'Apache-2.0'
54+
}
55+
issueTrackerUrl = 'https://github.com/myname/myplugin/issues'
56+
vcsUrl = 'https://github.com/myname/myplugin'
57+
title = 'My plugin title'
58+
desc = 'My plugin description'
59+
developers = [johndoe: 'John Doe']
60+
}
61+
62+
or
63+
64+
grailsPublish {
65+
githubSlug = 'foo/bar'
66+
license {
67+
name = 'Apache-2.0'
68+
}
69+
title = 'My plugin title'
70+
desc = 'My plugin description'
71+
developers = [johndoe: 'John Doe']
72+
}
73+
74+
By default, this plugin will publish to the specified `MAVEN_PUBLISH` instance for snapshots, and `NEXUS_PUBLISH` for releases. To change the snapshot publish behavior, set `snapshotRepoType` to `PublishType.NEXUS_PUBLISH`. To change the release publish behavior, set `releaseRepoType` to `PublishType.MAVEN_PUBLISH`.
75+
76+
The credentials and connection url must be specified as a project property or an environment variable.
77+
78+
`MAVEN_PUBLISH` Environment Variables are:
79+
80+
MAVEN_PUBLISH_USERNAME
81+
MAVEN_PUBLISH_PASSWORD
82+
MAVEN_PUBLISH_URL
83+
84+
`NEXUS_PUBLISH` Environment Variables are:
85+
86+
NEXUS_PUBLISH_USERNAME
87+
NEXUS_PUBLISH_PASSWORD
88+
NEXUS_PUBLISH_URL
89+
NEXUS_PUBLISH_SNAPSHOT_URL
90+
NEXUS_PUBLISH_STAGING_PROFILE_ID
91+
4492
grails-web
4593
---------
4694
* Adds web specific extensions

build.gradle

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -138,15 +138,15 @@ gradlePlugin {
138138
}
139139
grailsPluginPublish {
140140
displayName = "Grails Publish Gradle Plugin"
141-
description = 'A plugin to setup publishing to Grails central repo'
142-
id = 'org.grails.internal.grails-plugin-publish'
143-
implementationClass = 'org.grails.gradle.plugin.publishing.internal.GrailsCentralPublishGradlePlugin'
141+
description = 'A plugin to assist in publishing Grails related artifacts'
142+
id = 'org.grails.grails-plugin-publish'
143+
implementationClass = 'org.grails.gradle.plugin.publishing.GrailsCentralPublishGradlePlugin'
144144
}
145145
grailsProfilePublish {
146146
displayName = "Grails Profile Publish Plugin"
147147
description = 'A plugin for publishing profiles'
148-
id = 'org.grails.internal.grails-profile-publish'
149-
implementationClass = 'org.grails.gradle.plugin.profiles.internal.GrailsProfilePublishGradlePlugin'
148+
id = 'org.grails.grails-profile-publish'
149+
implementationClass = 'org.grails.gradle.plugin.profiles.GrailsProfilePublishGradlePlugin'
150150
}
151151
}
152152
}

0 commit comments

Comments
 (0)