| name: "Release" |
| on: |
| release: |
| types: [published] |
| env: |
| GIT_USER_NAME: grails-build |
| GIT_USER_EMAIL: grails-build@users.noreply.github.com |
| jobs: |
| publish: |
| permissions: |
| contents: write |
| packages: read |
| outputs: |
| release_version: ${{ steps.release_version.outputs.value }} |
| target_branch: ${{ steps.extract_branch.outputs.value }} |
| runs-on: ubuntu-24.04 |
| steps: |
| - name: "📥 Checkout the repository" |
| uses: actions/checkout@v4 |
| with: |
| token: ${{ secrets.GH_TOKEN }} |
| - name: "☕️ Setup JDK" |
| uses: actions/setup-java@v4 |
| with: |
| java-version: '17' |
| distribution: 'liberica' |
| - name: "🐘 Setup Gradle" |
| uses: gradle/actions/setup-gradle@v4 |
| with: |
| develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }} |
| - name: "⚙️ Run pre-release" |
| uses: grails/github-actions/pre-release@main |
| - name: "🔍 Determine Target Branch" |
| id: extract_branch |
| run: | |
| echo "Determining Target Branch" |
| TARGET_BRANCH=`cat $GITHUB_EVENT_PATH | jq '.release.target_commitish' | sed -e 's/^"\(.*\)"$/\1/g'` |
| 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 Assemble" |
| if: success() |
| id: assemble |
| env: |
| GITHUB_MAVEN_PASSWORD: ${{ secrets.GITHUB_TOKEN }} |
| run: ./gradlew --refresh-dependencies assemble |
| - name: "🔐 Generate key file for artifact signing" |
| env: |
| SECRING_FILE: ${{ secrets.SECRING_FILE }} |
| run: echo $SECRING_FILE | base64 -d > ${{ github.workspace }}/secring.gpg |
| - name: "📤 Publish to and close Sonatype staging repository" |
| id: publish |
| env: |
| GITHUB_MAVEN_PASSWORD: ${{ secrets.GITHUB_TOKEN }} |
| GRAILS_PUBLISH_RELEASE: 'true' |
| NEXUS_PUBLISH_USERNAME: ${{ secrets.NEXUS_PUBLISH_USERNAME }} |
| NEXUS_PUBLISH_PASSWORD: ${{ secrets.NEXUS_PUBLISH_PASSWORD }} |
| NEXUS_PUBLISH_URL: ${{ secrets.NEXUS_PUBLISH_RELEASE_URL }} |
| NEXUS_PUBLISH_STAGING_PROFILE_ID: ${{ secrets.NEXUS_PUBLISH_STAGING_PROFILE_ID }} |
| SIGNING_KEY: ${{ secrets.SIGNING_KEY }} |
| SIGNING_PASSPHRASE: ${{ secrets.SIGNING_PASSPHRASE }} |
| run: > |
| ./gradlew --no-build-cache |
| -Psigning.secretKeyRingFile=${{ github.workspace }}/secring.gpg |
| publishToSonatype |
| closeSonatypeStagingRepository |
| release: |
| environment: release |
| name: "Release Sonatype Staging Repository" |
| needs: publish |
| runs-on: ubuntu-24.04 |
| permissions: |
| packages: read |
| contents: write |
| steps: |
| - name: "📥 Checkout repository" |
| uses: actions/checkout@v4 |
| with: |
| ref: v${{ needs.publish.outputs.release_version }} |
| - name: "☕️ Setup JDK" |
| uses: actions/setup-java@v4 |
| with: |
| java-version: 17 |
| distribution: liberica |
| - 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.DEVELOCITY_ACCESS_KEY }} |
| - name: "🚀 Release Sonatype Staging Repository" |
| env: |
| GITHUB_MAVEN_PASSWORD: ${{ secrets.GITHUB_TOKEN }} |
| GRAILS_PUBLISH_RELEASE: 'true' |
| NEXUS_PUBLISH_USERNAME: ${{ secrets.NEXUS_PUBLISH_USERNAME }} |
| NEXUS_PUBLISH_PASSWORD: ${{ secrets.NEXUS_PUBLISH_PASSWORD }} |
| NEXUS_PUBLISH_URL: ${{ secrets.NEXUS_PUBLISH_RELEASE_URL }} |
| NEXUS_PUBLISH_STAGING_PROFILE_ID: ${{ secrets.NEXUS_PUBLISH_STAGING_PROFILE_ID }} |
| run: > |
| ./gradlew |
| findSonatypeStagingRepository |
| releaseSonatypeStagingRepository |
| - name: "⚙️ Run post-release" |
| if: success() |
| uses: grails/github-actions/post-release@main |
| docs: |
| environment: release |
| name: "Publish Documentation" |
| needs: publish |
| runs-on: ubuntu-24.04 |
| permissions: |
| contents: write |
| packages: read |
| steps: |
| - name: "📥 Checkout repository" |
| uses: actions/checkout@v4 |
| with: |
| 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.DEVELOCITY_ACCESS_KEY }} |
| - name: "📦 Export Gradle Properties" |
| uses: grails/github-actions/export-gradle-properties@main |
| - name: "📖 Generate documentation" |
| env: |
| GITHUB_MAVEN_PASSWORD: ${{ secrets.GITHUB_TOKEN }} |
| run: ./gradlew docs |
| - name: "🚀 Publish to Github Pages" |
| if: success() |
| uses: grails/github-pages-deploy-action@v2 |
| env: |
| BETA: ${{ contains(needs.publish.outputs.release_version, 'M') || contains(needs.publish.outputs.release_version, 'RC') }} |
| GH_TOKEN: ${{ secrets.GH_TOKEN }} |
| BRANCH: gh-pages |
| FOLDER: build/docs |
| VERSION: ${{ needs.publish.outputs.release_version }} |
| COMMIT_EMAIL: ${{ env.GIT_USER_EMAIL }} |
| COMMIT_NAME: ${{ env.GIT_USER_NAME }} |