Skip to content

Commit f35ed0b

Browse files
authored
Improvements to Release Workflow (#13301)
Breakdown Release Workflow into multiple jobs
1 parent 6764e33 commit f35ed0b

File tree

2 files changed

+73
-41
lines changed

2 files changed

+73
-41
lines changed

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,9 @@ 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}"
39-
git push origin v${release_version}
38+
git push origin v${release_version} --force
4039

4140
echo "Closing again the release after updating the tag"
4241
release_url=`cat $GITHUB_EVENT_PATH | jq '.release.url' | sed -e 's/^"\(.*\)"$/\1/g'`

.github/workflows/release.yml

Lines changed: 71 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,17 @@ on:
44
types: [published]
55
permissions: {}
66
jobs:
7-
release:
7+
publish:
88
permissions:
99
contents: write # to create release
1010
issues: write # to modify milestones
1111
runs-on: ubuntu-latest
12+
outputs:
13+
release_version: ${{ steps.release_version.outputs.value }}
14+
target_branch: ${{ steps.extract_branch.outputs.value }}
1215
env:
1316
GIT_USER_NAME: puneetbehl
14-
GIT_USER_EMAIL: [email protected]
15-
GRADLE_OPTS: -Xmx1500m -Dfile.encoding=UTF-8
17+
GIT_USER_EMAIL: [email protected]
1618
steps:
1719
- name: Checkout repository
1820
uses: actions/checkout@v3
@@ -32,12 +34,13 @@ jobs:
3234
echo "value=${TARGET_BRANCH}" >> $GITHUB_OUTPUT
3335
- name: Set the current release version
3436
id: release_version
35-
run: echo "release_version=${GITHUB_REF:11}" >> $GITHUB_OUTPUT
37+
run: echo "value=${GITHUB_REF:11}" >> $GITHUB_OUTPUT
3638
- name: Run pre-release
3739
uses: ./.github/actions/pre-release
3840
with:
3941
token: ${{ secrets.GITHUB_TOKEN }}
4042
- name: Run Assemble
43+
if: success()
4144
id: assemble
4245
uses: gradle/gradle-build-action@v2
4346
with:
@@ -46,13 +49,28 @@ jobs:
4649
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
4750
GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER }}
4851
GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY }}
52+
- name: Upload Distribution
53+
if: success()
54+
uses: actions/upload-artifact@v3
55+
with:
56+
name: grails-${{ steps.release_version.outputs.value }}.zip
57+
path: build/distributions/grails-${{ steps.release_version.outputs.value }}.zip
58+
- name: Upload artifacts to the Github release
59+
if: success()
60+
id: upload_artifact
61+
uses: Roang-zero1/github-upload-release-artifacts-action@master
62+
with:
63+
args: build/distributions/grails-${{ steps.release_version.outputs.value }}.zip
64+
env:
65+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4966
- name: Generate secring file
67+
if: success()
5068
env:
5169
SECRING_FILE: ${{ secrets.SECRING_FILE }}
5270
run: echo $SECRING_FILE | base64 -d > ${{ github.workspace }}/secring.gpg
5371
- name: Publish to Sonatype OSSRH
5472
id: publish
55-
if: steps.assemble.outcome == 'success'
73+
if: success()
5674
uses: gradle/gradle-build-action@v2
5775
env:
5876
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
@@ -68,60 +86,75 @@ jobs:
6886
with:
6987
arguments: -Psigning.secretKeyRingFile=${{ github.workspace }}/secring.gpg publishToSonatype closeAndReleaseSonatypeStagingRepository
7088
- name: Run post-release
71-
if: steps.publish.outcome == 'success'
89+
if: success()
7290
uses: ./.github/actions/post-release
7391
with:
7492
token: ${{ secrets.GITHUB_TOKEN }}
7593
env:
7694
SNAPSHOT_SUFFIX: -SNAPSHOT
77-
- name: Upload artifacts to the Github release
78-
id: upload_artifact
79-
if: steps.publish.outcome == 'success'
80-
uses: Roang-zero1/github-upload-release-artifacts-action@master
95+
sdkman:
96+
needs: publish
97+
runs-on: ubuntu-latest
98+
permissions:
99+
contents: read
100+
steps:
101+
- name: Checkout repository
102+
uses: actions/checkout@v3
103+
with:
104+
token: ${{ secrets.GH_TOKEN }}
105+
ref: v${{ needs.publish.outputs.release_version }}
106+
- name: Set up JDK
107+
uses: actions/setup-java@v3
108+
with:
109+
distribution: 'adopt'
110+
java-version: '8'
111+
- name: Grails SDK Minor Release
112+
if: success()
113+
uses: gradle/gradle-build-action@v2
81114
with:
82-
args: build/distributions/grails-${{ steps.release_version.outputs.release_version }}.zip
115+
arguments: sdkMinorRelease
83116
env:
84-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
85-
- name: Create Message for the Grails Documentation Release
86-
if: steps.publish.outcome == 'success'
87-
id: grails_docs_release_message
117+
GVM_SDKVENDOR_KEY: ${{ secrets.GVM_SDKVENDOR_KEY }}
118+
GVM_SDKVENDOR_TOKEN: ${{ secrets.GVM_SDKVENDOR_TOKEN }}
119+
docs:
120+
needs: publish
121+
runs-on: ubuntu-latest
122+
permissions:
123+
contents: read
124+
steps:
125+
- name: Prepare Input
126+
id: prep_inputs
88127
run: |
89128
echo "value={\"grails_version\":\"$RELEASE_VERSION\"}" >> $GITHUB_OUTPUT
90129
env:
91-
RELEASE_VERSION: ${{ steps.release_version.outputs.release_version }}
130+
RELEASE_VERSION: ${{ needs.publish.outputs.release_version }}
92131
- name: Invoke grails-doc release workflow
93-
if: steps.publish.outcome == 'success'
94-
id: grails_doc
95132
uses: benc-uk/[email protected]
96133
with:
97134
workflow: Release
98135
repo: grails/grails-doc
99-
ref: ${{ steps.extract_branch.outputs.value }}
136+
ref: ${{ needs.publish.outputs.target_branch }}
100137
token: ${{ secrets.GH_TOKEN }}
101-
inputs: ${{ steps.grails_docs_release_message.outputs.value }}
138+
inputs: ${{ steps.prep_inputs.outputs.value }}
139+
website:
140+
needs: publish
141+
runs-on: ubuntu-latest
142+
permissions:
143+
contents: read
144+
steps:
145+
- name: Prepare Input
146+
id: prep_inputs
147+
run: |
148+
echo "value={\"grails_version\":\"$RELEASE_VERSION\"}" >> $GITHUB_OUTPUT
149+
env:
150+
RELEASE_VERSION: ${{ needs.publish.outputs.release_version }}
102151
- name: Invoke grails-static-website release workflow
103-
if: steps.publish.outcome == 'success'
152+
if: success()
104153
id: grails_static_website
105154
uses: benc-uk/[email protected]
106155
with:
107156
workflow: Release
108157
repo: grails/grails-static-website
109158
ref: master
110159
token: ${{ secrets.GH_TOKEN }}
111-
inputs: ${{ steps.grails_docs_release_message.outputs.value }}
112-
- name: Grails SDK Minor Release
113-
if: steps.upload_artifact.outcome == 'success' && (startsWith(steps.release_version.outputs.release_version, '3.3') || startsWith(steps.release_version.outputs.release_version, '4.1.') || startsWith(steps.release_version.outputs.release_version, '5.3.'))
114-
uses: gradle/gradle-build-action@v2
115-
with:
116-
arguments: sdkMinorRelease
117-
env:
118-
GVM_SDKVENDOR_KEY: ${{ secrets.GVM_SDKVENDOR_KEY }}
119-
GVM_SDKVENDOR_TOKEN: ${{ secrets.GVM_SDKVENDOR_TOKEN }}
120-
- name: Grails SDK Major Release
121-
if: steps.upload_artifact.outcome == 'success' && !(startsWith(steps.release_version.outputs.release_version, '3.3') || startsWith(steps.release_version.outputs.release_version, '4.1.') || startsWith(steps.release_version.outputs.release_version, '5.3.') || contains(steps.release_version.outputs.release_version, 'M') || contains(steps.release_version.outputs.release_version, 'RC'))
122-
uses: gradle/gradle-build-action@v2
123-
with:
124-
arguments: sdkMajorRelease
125-
env:
126-
GVM_SDKVENDOR_KEY: ${{ secrets.GVM_SDKVENDOR_KEY }}
127-
GVM_SDKVENDOR_TOKEN: ${{ secrets.GVM_SDKVENDOR_TOKEN }}
160+
inputs: ${{ steps.prep_inputs.outputs.value }}

0 commit comments

Comments
 (0)