3
3
release :
4
4
types : [published]
5
5
env :
6
- GIT_USER_NAME : ' grails-build'
7
- GIT_USER_EMAIL : ' grails-build@users.noreply.github.com'
6
+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
7
+ JAVA_VERSION : ' 17.0.15' # this must be a specific version for reproducible builds
8
+ RELEASE_TAG_PREFIX : ' v'
8
9
jobs :
9
10
publish :
10
11
permissions :
12
+ packages : read # pre-release workflow
11
13
contents : write # to create release
12
14
issues : write # to modify milestones
13
- runs-on : ubuntu-latest
15
+ runs-on : ubuntu-24.04
14
16
outputs :
15
17
release_version : ${{ steps.release_version.outputs.value }}
16
- target_branch : ${{ steps.extract_branch .outputs.value }}
18
+ extract_repository_name : ${{ steps.extract_repository_name .outputs.repository_name }}
17
19
steps :
20
+ - name : " 📝 Store the current release version"
21
+ id : release_version
22
+ run : |
23
+ export RELEASE_VERSION="${{ github.ref_name }}"
24
+ export RELEASE_VERSION=${RELEASE_VERSION:${#RELEASE_TAG_PREFIX}}
25
+ echo "Found Release Version: ${RELEASE_VERSION}"
26
+ echo "value=${RELEASE_VERSION}" >> $GITHUB_OUTPUT
27
+ - name : " Extract repository name"
28
+ id : extract_repository_name
29
+ run : |
30
+ echo "repository_name=${GITHUB_REPOSITORY##*/}" >> $GITHUB_OUTPUT
18
31
- name : " 📥 Checkout the repository"
19
32
uses : actions/checkout@v4
20
33
with :
21
- token : ${{ secrets.GH_TOKEN }}
34
+ token : ${{ secrets.GITHUB_TOKEN }}
35
+ ref : v{{ steps.release_version.outputs.value }}
36
+ - name : ' Ensure Common Build Date' # to ensure a reproducible build
37
+ run : echo "SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct)" >> "$GITHUB_ENV"
38
+ - name : " Ensure source files use common date"
39
+ run : |
40
+ find . -depth \( -type f -o -type d \) -exec touch -d "@${SOURCE_DATE_EPOCH}" {} +
22
41
- name : " 🧱 Setup up node"
23
42
uses : actions/setup-node@v3
24
43
with :
@@ -30,81 +49,74 @@ jobs:
30
49
- name : " ☕️ Setup JDK"
31
50
uses : actions/setup-java@v4
32
51
with :
33
- distribution : ' liberica'
34
- java-version : ' 17 '
52
+ distribution : liberica
53
+ java-version : ${{ env.JAVA_VERSION }}
35
54
- name : " 🐘 Setup Gradle"
36
55
uses : gradle/actions/setup-gradle@v4
37
- - name : " 📝 Store the target branch"
38
- id : extract_branch
39
- run : |
40
- echo "Determining Target Branch"
41
- TARGET_BRANCH=${GITHUB_REF#refs/heads/}
42
- echo $TARGET_BRANCH
43
- echo "value=${TARGET_BRANCH}" >> $GITHUB_OUTPUT
44
- - name : " 📝Set the current release version"
45
- id : release_version
46
- run : echo "value=${GITHUB_REF:11}" >> $GITHUB_OUTPUT
47
56
- name : " ⚙️ Run pre-release"
48
- uses : grails/github-actions/pre-release@main
49
- with :
50
- token : ${{ secrets.GITHUB_TOKEN }}
57
+ uses : grails/github-actions/pre-release@asf
58
+ env :
59
+ RELEASE_VERSION : ${{ steps.release_version.outputs.value }}
51
60
- name : " 🧩 Run Assemble"
52
- if : success()
53
61
id : assemble
54
62
run : ./gradlew -U assemble
55
- - name : " 🔐 Generate secring file"
63
+ - name : " 🔐 Generate key file for artifact signing "
56
64
env :
57
65
SECRING_FILE : ${{ secrets.SECRING_FILE }}
58
66
run : echo $SECRING_FILE | base64 -d > ${{ github.workspace }}/secring.gpg
59
- - name : " 🚀 Publish to Sonatype OSSRH"
60
- id : publish
67
+ - name : " 📤 Publish to Maven Central"
61
68
env :
62
- NEXUS_PUBLISH_USERNAME : ${{ secrets.NEXUS_PUBLISH_USERNAME }}
63
- NEXUS_PUBLISH_PASSWORD : ${{ secrets.NEXUS_PUBLISH_PASSWORD }}
64
- NEXUS_PUBLISH_URL : ${{ secrets.NEXUS_PUBLISH_RELEASE_URL }}
65
- NEXUS_PUBLISH_STAGING_PROFILE_ID : ${{ secrets.NEXUS_PUBLISH_STAGING_PROFILE_ID }}
69
+ GRAILS_PUBLISH_RELEASE : ' true'
70
+ NEXUS_PUBLISH_USERNAME : ${{ secrets.MAVEN_USERNAME }}
71
+ NEXUS_PUBLISH_PASSWORD : ${{ secrets.MAVEN_PASSWORD }}
72
+ NEXUS_PUBLISH_URL : ' https://ossrh-staging-api.central.sonatype.com/service/local/'
73
+ NEXUS_PUBLISH_DESCRIPTION : ' ${{ steps.extract_repository_name.outputs.repository_name }}:${{ steps.release_version.outputs.value }}'
66
74
SIGNING_KEY : ${{ secrets.SIGNING_KEY }}
67
- SIGNING_PASSPHRASE : ${{ secrets.SIGNING_PASSPHRASE }}
68
- SECRING_FILE : ${{ secrets.SECRING_FILE }}
75
+ SIGNING_PASSPHRASE : ${{ secrets.SECRING_PASSPHRASE }}
69
76
run : >
70
77
./gradlew
71
- -Psigning.secretKeyRingFile=${{ github.workspace }}/secring.gpg
72
- publishToSonatype
78
+ -Psigning.secretKeyRingFile=${{ github.workspace }}/secring.gpg
79
+ publishMavenPublicationToSonatypeRepository
80
+ publishPluginMavenPublicationToSonatypeRepository
73
81
closeSonatypeStagingRepository
82
+ - name : " Generate Build Date file"
83
+ run : echo "$SOURCE_DATE_EPOCH" >> build/BUILD_DATE.txt
84
+ - name : " Upload Build Date file"
85
+ uses : softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631
86
+ with :
87
+ files : build/BUILD_DATE.txt
88
+ env :
89
+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
74
90
release :
75
91
needs : publish
76
92
runs-on : ubuntu-latest
77
93
permissions :
78
- contents : read
94
+ contents : write
95
+ issues : write
96
+ pull-requests : write
79
97
steps :
80
98
- name : " 📥 Checkout repository"
81
99
uses : actions/checkout@v4
100
+ with :
101
+ token : ${{ secrets.GITHUB_TOKEN }}
102
+ ref : v${{ needs.publish.outputs.release_version }}
82
103
- name : " ☕️ Setup JDK"
83
104
uses : actions/setup-java@v4
84
105
with :
85
106
distribution : liberica
86
- java-version : 17
87
- - name : " 📥 Checkout repository"
88
- uses : actions/checkout@v4
89
- with :
90
- token : ${{ secrets.GH_TOKEN }}
91
- ref : v${{ needs.publish.outputs.release_version }}
107
+ java-version : ${{ env.JAVA_VERSION }}
92
108
- name : " 🐘 Setup Gradle"
93
109
uses : gradle/actions/setup-gradle@v4
94
- - name : " 🏆Nexus Staging Close And Release "
110
+ - name : " 📤 Release staging repository "
95
111
env :
96
- NEXUS_PUBLISH_USERNAME : ${{ secrets.NEXUS_PUBLISH_USERNAME }}
97
- NEXUS_PUBLISH_PASSWORD : ${{ secrets.NEXUS_PUBLISH_PASSWORD }}
98
- NEXUS_PUBLISH_URL : ${{ secrets.NEXUS_PUBLISH_RELEASE_URL }}
99
- NEXUS_PUBLISH_STAGING_PROFILE_ID : ${{ secrets.NEXUS_PUBLISH_STAGING_PROFILE_ID }}
112
+ GRAILS_PUBLISH_RELEASE : ' true'
113
+ NEXUS_PUBLISH_USERNAME : ${{ secrets.MAVEN_USERNAME }}
114
+ NEXUS_PUBLISH_PASSWORD : ${{ secrets.MAVEN_PASSWORD }}
115
+ NEXUS_PUBLISH_URL : ' https://ossrh-staging-api.central.sonatype.com/service/local/'
116
+ NEXUS_PUBLISH_DESCRIPTION : ' ${{ needs.publish.outputs.extract_repository_name }}:${{ needs.publish.outputs.release_version }}'
100
117
run : >
101
118
./gradlew
102
119
findSonatypeStagingRepository
103
120
releaseSonatypeStagingRepository
104
- - name : " ⚙️Run post-release"
105
- if : success()
106
- uses : grails/github-actions/post-release@main
107
- with :
108
- token : ${{ secrets.GITHUB_TOKEN }}
109
- env :
110
- SNAPSHOT_SUFFIX : -SNAPSHOT
121
+ - name : " ⚙️ Run post-release"
122
+ uses : apache/grails-github-actions/post-release@asf
0 commit comments