Skip to content

Commit e2fb59d

Browse files
authored
Improvements to Release Workflow (#13258)
- Break-down into multiple jobs - Update email address - Update pre-release action
1 parent 02e5532 commit e2fb59d

File tree

2 files changed

+102
-61
lines changed

2 files changed

+102
-61
lines changed

.github/actions/pre-release/entrypoint.sh

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,7 @@ cat gradle.properties
3333
echo "Pushing release version and recreating v${release_version} tag"
3434
git add gradle.properties
3535
git add grails-core/src/test/groovy/grails/util/GrailsUtilTests.java
36-
git commit -m "Release v${release_version}"
37-
git push origin :refs/tags/v${release_version}
36+
git commit -m "[skip ci] Release v${release_version}"
3837
git tag -fa v${release_version} -m "Release v${release_version}"
3938
git push origin v${release_version}
4039

.github/workflows/release.yml

Lines changed: 101 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -2,114 +2,156 @@ name: Release
22
on:
33
release:
44
types: [published]
5+
permissions: {}
56
jobs:
6-
release:
7+
publish:
8+
permissions:
9+
contents: write # to create release
10+
issues: write # to modify milestones
711
runs-on: ubuntu-latest
8-
strategy:
9-
matrix:
10-
java: ['8']
1112
env:
1213
GIT_USER_NAME: puneetbehl
13-
GIT_USER_EMAIL: [email protected]
14-
GRADLE_OPTS: -Xmx1500m -Dfile.encoding=UTF-8
14+
GIT_USER_EMAIL: [email protected]
1515
steps:
1616
- name: Checkout repository
17-
uses: actions/checkout@v2
17+
uses: actions/checkout@v3
1818
with:
1919
token: ${{ secrets.GH_TOKEN }}
20-
- uses: gradle/wrapper-validation-action@v1
21-
- uses: actions/cache@v2
22-
with:
23-
path: |
24-
~/.gradle/caches
25-
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
26-
restore-keys: |
27-
${{ runner.os }}-gradle-
2820
- name: Set up JDK
29-
uses: actions/setup-java@v1
21+
uses: actions/setup-java@v3
3022
with:
31-
java-version: ${{ matrix.java }}
23+
distribution: 'adopt'
24+
java-version: '8'
3225
- name: Extract Target Branch
3326
id: extract_branch
3427
run: |
3528
echo "Determining Target Branch"
3629
TARGET_BRANCH=`cat $GITHUB_EVENT_PATH | jq '.release.target_commitish' | sed -e 's/^"\(.*\)"$/\1/g'`
3730
echo $TARGET_BRANCH
38-
echo ::set-output name=value::${TARGET_BRANCH}
31+
echo "value=${TARGET_BRANCH}" >> $GITHUB_OUTPUT
3932
- name: Set the current release version
4033
id: release_version
41-
run: echo ::set-output name=release_version::${GITHUB_REF:11}
34+
run: echo "release_version=${GITHUB_REF:11}" >> $GITHUB_OUTPUT
4235
- name: Run pre-release
4336
uses: ./.github/actions/pre-release
4437
with:
4538
token: ${{ secrets.GITHUB_TOKEN }}
39+
- name: Run Assemble
40+
if: success()
41+
id: assemble
42+
uses: gradle/gradle-build-action@v2
43+
with:
44+
arguments: assemble
45+
env:
46+
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
47+
GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER }}
48+
GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY }}
49+
- name: Upload Distribution
50+
if: success()
51+
uses: actions/upload-artifact@v3
52+
with:
53+
name: grails-${{ steps.release_version.outputs.release_version }}.zip
54+
path: build/distributions/grails-${{ steps.release_version.outputs.release_version }}.zip
55+
- name: Upload artifacts to the Github release
56+
if: success()
57+
id: upload_artifact
58+
uses: Roang-zero1/github-upload-release-artifacts-action@master
59+
with:
60+
args: build/distributions/grails-${{ steps.release_version.outputs.release_version }}.zip
61+
env:
62+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
63+
- name: Generate secring file
64+
if: success()
65+
env:
66+
SECRING_FILE: ${{ secrets.SECRING_FILE }}
67+
run: echo $SECRING_FILE | base64 -d > ${{ github.workspace }}/secring.gpg
4668
- name: Publish to Sonatype OSSRH
69+
id: publish
4770
if: success()
71+
uses: gradle/gradle-build-action@v2
4872
env:
73+
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
74+
GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER }}
75+
GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY }}
4976
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
5077
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
78+
SONATYPE_NEXUS_URL: ${{ secrets.SONATYPE_NEXUS_URL }}
5179
SONATYPE_STAGING_PROFILE_ID: ${{ secrets.SONATYPE_STAGING_PROFILE_ID }}
52-
ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }}
53-
ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }}
5480
SIGNING_KEY: ${{ secrets.SIGNING_KEY }}
5581
SIGNING_PASSPHRASE: ${{ secrets.SIGNING_PASSPHRASE }}
5682
SECRING_FILE: ${{ secrets.SECRING_FILE }}
57-
run: |
58-
echo $SECRING_FILE | base64 -d > secring.gpg
59-
echo "Publishing Artifacts"
60-
(set -x; ./gradlew -Psigning.secretKeyRingFile="${GITHUB_WORKSPACE}/secring.gpg" publishToSonatype closeAndReleaseSonatypeStagingRepository --no-daemon)
61-
(set -x; ./gradlew assemble --no-daemon)
62-
- name: Export Gradle Properties
63-
uses: micronaut-projects/github-actions/export-gradle-properties@master
83+
with:
84+
arguments: -Psigning.secretKeyRingFile=${{ github.workspace }}/secring.gpg publishToSonatype closeAndReleaseSonatypeStagingRepository
6485
- name: Run post-release
6586
if: success()
6687
uses: ./.github/actions/post-release
6788
with:
6889
token: ${{ secrets.GITHUB_TOKEN }}
6990
env:
7091
SNAPSHOT_SUFFIX: -SNAPSHOT
71-
- name: Upload artifacts to the Github release
72-
uses: Roang-zero1/github-upload-release-artifacts-action@master
92+
sdkman:
93+
needs: publish
94+
runs-on: ubuntu-latest
95+
permissions:
96+
contents: read
97+
steps:
98+
- name: Checkout repository
99+
uses: actions/checkout@v3
73100
with:
74-
args: build/distributions/grails-${{ steps.release_version.outputs.release_version }}.zip
75-
env:
76-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
77-
- name: Create Message for the Grails Documentation Release
101+
token: ${{ secrets.GH_TOKEN }}
102+
ref: v${{ needs.publish.inputs.release_version }}
103+
- name: Set up JDK
104+
uses: actions/setup-java@v3
105+
with:
106+
distribution: 'adopt'
107+
java-version: '8'
108+
- name: Grails SDK Minor Release
78109
if: success()
79-
id: grails_docs_release_message
110+
uses: gradle/gradle-build-action@v2
111+
with:
112+
arguments: sdkMinorRelease
113+
env:
114+
GVM_SDKVENDOR_KEY: ${{ secrets.GVM_SDKVENDOR_KEY }}
115+
GVM_SDKVENDOR_TOKEN: ${{ secrets.GVM_SDKVENDOR_TOKEN }}
116+
docs:
117+
needs: publish
118+
run-on: ubuntu-latest
119+
permissions:
120+
contents: read
121+
steps:
122+
- name: Prepare Input
123+
id: prep_inputs
80124
run: |
81-
echo ::set-output name=value::{\"grails_version\":\"$RELEASE_VERSION\"}
125+
echo "value={\"grails_version\":\"$RELEASE_VERSION\"}" >> $GITHUB_OUTPUT
82126
env:
83-
RELEASE_VERSION: ${{ steps.release_version.outputs.release_version }}
127+
RELEASE_VERSION: ${{ needs.publish.steps.release_version.outputs.release_version }}
84128
- name: Invoke grails-doc release workflow
85-
if: success()
86-
id: grails_doc
87-
uses: benc-uk/[email protected]
129+
uses: benc-uk/[email protected]
88130
with:
89-
workflow: Release
90-
repo: grails/grails-doc
91-
ref: ${{ steps.extract_branch.outputs.value }}
92-
token: ${{ secrets.GH_TOKEN }}
93-
inputs: ${{ steps.grails_docs_release_message.outputs.value }}
131+
workflow: Release
132+
repo: grails/grails-doc
133+
ref: ${{ needs.publish.steps.extract_branch.outputs.value }}
134+
token: ${{ secrets.GH_TOKEN }}
135+
inputs: ${{ steps.prep_inputs.outputs.value }}
136+
website:
137+
needs: publish
138+
runs-on: ubuntu-latest
139+
permissions:
140+
contents: read
141+
steps:
142+
- name: Prepare Input
143+
id: prep_inputs
144+
run: |
145+
echo "value={\"grails_version\":\"$RELEASE_VERSION\"}" >> $GITHUB_OUTPUT
146+
env:
147+
RELEASE_VERSION: ${{ needs.publish.steps.release_version.outputs.release_version }}
94148
- name: Invoke grails-static-website release workflow
95149
if: success()
96150
id: grails_static_website
97-
uses: benc-uk/workflow-dispatch@v1.1
151+
uses: benc-uk/workflow-dispatch@v1.2
98152
with:
99153
workflow: Release
100154
repo: grails/grails-static-website
101155
ref: master
102156
token: ${{ secrets.GH_TOKEN }}
103-
inputs: ${{ steps.grails_docs_release_message.outputs.value }}
104-
- name: Grails SDK Release
105-
if: success()
106-
run: |
107-
if $MINOR ; then
108-
(set -x; ./gradlew sdkMinorRelease)
109-
else
110-
( set -x; ./gradlew sdkMajorRelease)
111-
fi
112-
env:
113-
MINOR: ${{ startsWith(steps.release_version.outputs.release_version, '3.3') || startsWith(steps.release_version.outputs.release_version, '4.1.') || contains(steps.release_version.outputs.release_version, 'M') || contains(steps.release_version.outputs.release_version, 'RC') }}
114-
GVM_SDKVENDOR_KEY: ${{ secrets.GVM_SDKVENDOR_KEY }}
115-
GVM_SDKVENDOR_TOKEN: ${{ secrets.GVM_SDKVENDOR_TOKEN }}
157+
inputs: ${{ steps.prep_inputs.outputs.value }}

0 commit comments

Comments
 (0)