| name: Release |
| on: |
| release: |
| types: [published] |
| jobs: |
| publish: |
| permissions: |
| contents: write # to create release |
| issues: write # to modify milestones |
| runs-on: ubuntu-latest |
| outputs: |
| release_version: ${{ steps.release_version.outputs.value }} |
| target_branch: ${{ steps.extract_branch.outputs.value }} |
| env: |
| GIT_USER_NAME: 'grails-build' |
| GIT_USER_EMAIL: 'grails-build@users.noreply.github.com' |
| steps: |
| - name: "📥 Checkout repository" |
| uses: actions/checkout@v4 |
| with: |
| token: ${{ secrets.GH_TOKEN }} |
| - name: "☕️ Setup JDK" |
| uses: actions/setup-java@v4 |
| with: |
| distribution: liberica |
| java-version: 17 |
| - name: "🐘 Setup Gradle" |
| uses: gradle/actions/setup-gradle@v4 |
| with: |
| develocity-access-key: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }} |
| - name: "📝 Store the target branch" |
| id: extract_branch |
| run: | |
| echo "Determining Target Branch" |
| TARGET_BRANCH=${GITHUB_REF#refs/heads/} |
| echo $TARGET_BRANCH |
| echo "value=${TARGET_BRANCH}" >> $GITHUB_OUTPUT |
| - name: "📝 Store the current release version" |
| id: release_version |
| run: echo "value=${GITHUB_REF:11}" >> $GITHUB_OUTPUT |
| - name: "⚙️ Run pre-release" |
| uses: micronaut-projects/github-actions/pre-release@master |
| with: |
| token: ${{ secrets.GITHUB_TOKEN }} |
| - name: "🧩 Run Assemble" |
| if: success() |
| id: assemble |
| env: |
| DEVELOCITY_BUILD_CACHE_NODE_USER: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER }} |
| DEVELOCITY_BUILD_CACHE_NODE_KEY: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY }} |
| run: ./gradlew assemble |
| - name: "🚀 Upload Distribution" |
| if: success() |
| uses: actions/upload-artifact@v4 |
| with: |
| name: grails-${{ steps.release_version.outputs.value }}.zip |
| path: build/distributions/grails-${{ steps.release_version.outputs.value }}.zip |
| - name: "📝 Generate secring file" |
| env: |
| SECRING_FILE: ${{ secrets.SECRING_FILE }} |
| run: echo $SECRING_FILE | base64 -d > ${{ github.workspace }}/secring.gpg |
| - name: "🚀 Publish to Sonatype OSSRH" |
| id: publish |
| env: |
| SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} |
| SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} |
| SONATYPE_NEXUS_URL: ${{ secrets.SONATYPE_NEXUS_URL }} |
| SONATYPE_STAGING_PROFILE_ID: ${{ secrets.SONATYPE_STAGING_PROFILE_ID }} |
| SIGNING_KEY: ${{ secrets.SIGNING_KEY }} |
| SIGNING_PASSPHRASE: ${{ secrets.SIGNING_PASSPHRASE }} |
| SECRING_FILE: ${{ secrets.SECRING_FILE }} |
| DEVELOCITY_BUILD_CACHE_NODE_USER: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER }} |
| DEVELOCITY_BUILD_CACHE_NODE_KEY: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY }} |
| run: > |
| ./gradlew |
| -Psigning.secretKeyRingFile=${{ github.workspace }}/secring.gpg |
| publishToSonatype |
| closeSonatypeStagingRepository |
| release: |
| needs: publish |
| runs-on: ubuntu-latest |
| permissions: |
| contents: read |
| steps: |
| - name: "📥 Checkout repository" |
| uses: actions/checkout@v4 |
| - name: "☕️ Setup JDK" |
| uses: actions/setup-java@v4 |
| with: |
| distribution: liberica |
| java-version: 17 |
| - name: "📥 Checkout repository" |
| uses: actions/checkout@v4 |
| with: |
| token: ${{ secrets.GH_TOKEN }} |
| ref: v${{ needs.publish.outputs.release_version }} |
| - name: "🐘 Setup Gradle" |
| uses: gradle/actions/setup-gradle@v4 |
| with: |
| develocity-access-key: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }} |
| - name: Nexus Staging Close And Release |
| env: |
| DEVELOCITY_BUILD_CACHE_NODE_USER: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER }} |
| DEVELOCITY_BUILD_CACHE_NODE_KEY: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY }} |
| SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} |
| SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} |
| SONATYPE_STAGING_PROFILE_ID: ${{ secrets.SONATYPE_STAGING_PROFILE_ID }} |
| run: > |
| ./gradlew |
| findSonatypeStagingRepository |
| releaseSonatypeStagingRepository |
| - name: Run post-release |
| if: success() |
| uses: micronaut-projects/github-actions/post-release@master |
| with: |
| token: ${{ secrets.GITHUB_TOKEN }} |
| env: |
| SNAPSHOT_SUFFIX: -SNAPSHOT |
| docs: |
| needs: publish |
| runs-on: ubuntu-latest |
| permissions: |
| contents: write |
| env: |
| GIT_USER_NAME: 'grails-build' |
| GIT_USER_EMAIL: 'grails-build@users.noreply.github.com' |
| steps: |
| - name: "📥 Checkout repository" |
| uses: actions/checkout@v4 |
| with: |
| token: ${{ secrets.GH_TOKEN }} |
| ref: v${{ needs.publish.outputs.release_version }} |
| - name: "☕️ Setup JDK" |
| uses: actions/setup-java@v4 |
| with: |
| distribution: liberica |
| java-version: 17 |
| - name: "🐘 Setup Gradle" |
| uses: gradle/actions/setup-gradle@v4 |
| with: |
| develocity-access-key: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }} |
| - name: "📜 Generate Groovydoc" |
| id: groovydoc |
| env: |
| DEVELOCITY_BUILD_CACHE_NODE_USER: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER }} |
| DEVELOCITY_BUILD_CACHE_NODE_KEY: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY }} |
| run: ./gradlew groovydoc |
| - name: "🚀 Publish to Github Pages" |
| id: docs |
| if: success() |
| uses: grails/github-pages-deploy-action@v2 |
| env: |
| SKIP_SNAPSHOT: ${{ contains(needs.publish.outputs.release_version, 'M') }} |
| SKIP_LATEST: ${{ !startsWith(needs.publish.outputs.target_branch, '6.2') }} |
| TARGET_REPOSITORY: ${{ github.repository }} |
| GH_TOKEN: ${{ secrets.GH_TOKEN }} |
| BRANCH: gh-pages |
| FOLDER: build/docs |
| DOC_FOLDER: gh-pages |
| COMMIT_EMAIL: ${{ env.GIT_USER_EMAIL }} |
| COMMIT_NAME: ${{ env.GIT_USER_NAME }} |
| VERSION: ${{ needs.publish.outputs.release_version }} |