33 release :
44 types : [published]
55env :
6- GIT_USER_NAME : ' grails-build'
7- GIT_USER_EMAIL :
' [email protected] ' 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'
89jobs :
910 publish :
1011 permissions :
12+ packages : read # pre-release workflow
1113 contents : write # to create release
1214 issues : write # to modify milestones
13- runs-on : ubuntu-latest
15+ runs-on : ubuntu-24.04
1416 outputs :
1517 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 }}
1719 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
1831 - name : " 📥 Checkout the repository"
1932 uses : actions/checkout@v4
2033 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}" {} +
2241 - name : " 🧱 Setup up node"
2342 uses : actions/setup-node@v3
2443 with :
@@ -30,81 +49,74 @@ jobs:
3049 - name : " ☕️ Setup JDK"
3150 uses : actions/setup-java@v4
3251 with :
33- distribution : ' liberica'
34- java-version : ' 17 '
52+ distribution : liberica
53+ java-version : ${{ env.JAVA_VERSION }}
3554 - name : " 🐘 Setup Gradle"
3655 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
4756 - 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 }}
5160 - name : " 🧩 Run Assemble"
52- if : success()
5361 id : assemble
5462 run : ./gradlew -U assemble
55- - name : " 🔐 Generate secring file"
63+ - name : " 🔐 Generate key file for artifact signing "
5664 env :
5765 SECRING_FILE : ${{ secrets.SECRING_FILE }}
5866 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"
6168 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 }}'
6674 SIGNING_KEY : ${{ secrets.SIGNING_KEY }}
67- SIGNING_PASSPHRASE : ${{ secrets.SIGNING_PASSPHRASE }}
68- SECRING_FILE : ${{ secrets.SECRING_FILE }}
75+ SIGNING_PASSPHRASE : ${{ secrets.SECRING_PASSPHRASE }}
6976 run : >
7077 ./gradlew
71- -Psigning.secretKeyRingFile=${{ github.workspace }}/secring.gpg
72- publishToSonatype
78+ -Psigning.secretKeyRingFile=${{ github.workspace }}/secring.gpg
79+ publishMavenPublicationToSonatypeRepository
80+ publishPluginMavenPublicationToSonatypeRepository
7381 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 }}
7490 release :
7591 needs : publish
7692 runs-on : ubuntu-latest
7793 permissions :
78- contents : read
94+ contents : write
95+ issues : write
96+ pull-requests : write
7997 steps :
8098 - name : " 📥 Checkout repository"
8199 uses : actions/checkout@v4
100+ with :
101+ token : ${{ secrets.GITHUB_TOKEN }}
102+ ref : v${{ needs.publish.outputs.release_version }}
82103 - name : " ☕️ Setup JDK"
83104 uses : actions/setup-java@v4
84105 with :
85106 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 }}
92108 - name : " 🐘 Setup Gradle"
93109 uses : gradle/actions/setup-gradle@v4
94- - name : " 🏆Nexus Staging Close And Release "
110+ - name : " 📤 Release staging repository "
95111 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 }}'
100117 run : >
101118 ./gradlew
102119 findSonatypeStagingRepository
103120 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