Release #248
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "Release" | ||
on: | ||
release: | ||
types: [published] | ||
jobs: | ||
build: | ||
name: "Release artifacts to Bintray, Maven Central & SDKMAN, and publish documentation" | ||
runs-on: ubuntu-latest | ||
permissions: | ||
contents: write | ||
outputs: | ||
release_version: ${{ steps.release_version.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 | ||
- 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: "🔢 Set the current release version" | ||
id: release_version | ||
run: | | ||
echo "Update grailsVersion to ${GITHUB_REF:11}" | ||
sed -i "s/^grailsVersion.*$/grailsVersion\=${GITHUB_REF:11}/" gradle.properties | ||
sed -i "s/grailsVersion=${GITHUB_REF:11}-SNAPSHOT/grailsVersion\=${GITHUB_REF:11}/" grails-forge-core/src/test/groovy/org/grails/forge/feature/grails/GrailsGradlePluginSpec.groovy | ||
echo "value=${GITHUB_REF:11}" >> $GITHUB_OUTPUT | ||
- name: "📝 Commit release version" | ||
uses: stefanzweifel/git-auto-commit-action@v5.0.1 | ||
with: | ||
commit_message: "chore: Update grailsVersion to ${{ steps.release_version.outputs.value }}" | ||
commit_user_name: ${{ env.GIT_USER_NAME }} | ||
commit_user_email: ${{ env.GIT_USER_EMAIL }} | ||
commit_author: ${{ env.GIT_USER_NAME }} <${{ env.GIT_USER_EMAIL }}> | ||
file_pattern: . | ||
branch: 7.0.x | ||
- name: "⚙️ Run pre-release" | ||
uses: micronaut-projects/github-actions/pre-release@master | ||
with: | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
- name: "🔨 Build All" | ||
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 grails-cli:assemble | ||
- 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" | ||
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_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 }} | ||
run: > | ||
./gradlew | ||
-Psigning.secretKeyRingFile=${{ github.workspace }}/secring.gpg | ||
publishToSonatype | ||
closeSonatypeStagingRepository | ||
docs | ||
- name: "📤 Upload CLI Zip" | ||
id: upload-release-asset | ||
uses: actions/upload-release-asset@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
with: | ||
upload_url: ${{ github.event.release.upload_url }} | ||
asset_path: grails-cli/build/distributions/grails-cli-${{ steps.release_version.outputs.value }}.zip | ||
asset_name: grails-cli-${{ steps.release_version.outputs.value }}.zip | ||
asset_content_type: application/zip | ||
- name: "📤 Publish to Github Pages" | ||
uses: micronaut-projects/github-pages-deploy-action@master | ||
env: | ||
BETA: ${{ contains(steps.release_version.outputs.value, 'M') || contains(steps.release_version.outputs.release_version, 'RC') }} | ||
GH_TOKEN: ${{ secrets.GH_TOKEN }} | ||
BASE_BRANCH: 7.0.x | ||
BRANCH: gh-pages | ||
FOLDER: build/docs | ||
VERSION: ${{ steps.release_version.outputs.value }} | ||
- name: "⚙️ Run post-release" | ||
if: success() | ||
id: post_release | ||
continue-on-error: true | ||
uses: micronaut-projects/github-actions/post-release@master | ||
with: | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
- name: "🔢 Back to snapshot version" | ||
continue-on-error: true | ||
run: | | ||
echo "Setting new Grails snapshot version" | ||
sed -i "s/^grailsVersion.*$/grailsVersion\=${{ steps.post_release.outputs.next_version }}-SNAPSHOT/" gradle.properties | ||
sed -i "s/grailsVersion=${GITHUB_REF:11}/grailsVersion\=${{ steps.post_release.outputs.next_version }}-SNAPSHOT/" grails-forge-core/src/test/groovy/org/grails/forge/feature/grails/GrailsGradlePluginSpec.groovy | ||
- name: "📝 Commit snapshot version" | ||
uses: stefanzweifel/git-auto-commit-action@v5.0.1 | ||
continue-on-error: true | ||
with: | ||
commit_message: "chore: Next snapshot version" | ||
commit_user_name: ${{ env.GIT_USER_NAME }} | ||
commit_user_email: ${{ env.GIT_USER_EMAIL }} | ||
commit_author: ${{ env.GIT_USER_NAME }} <${{ env.GIT_USER_EMAIL }}> | ||
file_pattern: gradle.properties | ||
linux: | ||
name: "Release Linux Native CLI" | ||
runs-on: ubuntu-latest | ||
needs: build | ||
steps: | ||
- name: "📥 Checkout repository" | ||
uses: actions/checkout@v4 | ||
with: | ||
ref: v${{ needs.build.outputs.release_version }} | ||
- name: "☕️ Setup GraalVM CE" | ||
uses: graalvm/setup-graalvm@v1 | ||
with: | ||
java-version: '17' | ||
distribution: 'graalvm-community' | ||
native-image-musl: 'true' | ||
components: 'native-image' | ||
github-token: ${{ secrets.GITHUB_TOKEN }} | ||
- name: "🐘 Setup Gradle" | ||
uses: gradle/actions/setup-gradle@v4 | ||
- name: "📸 Build the Native Image (with libc=musl)" | ||
run: ./gradlew grails-cli:nativeCompile --no-daemon -Pmusl | ||
with: | ||
develocity-access-key: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }} | ||
- name: "📸 Build the Native Image" | ||
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 grails-cli:nativeCompile --no-daemon | ||
- name: "✅ Verify Build" | ||
run: ./grails-cli/build/native/nativeCompile/grails --version | ||
- name: "✅ Verify Create App" | ||
run: ./grails-cli/build/native/nativeCompile/grails create-app test | ||
- name: "📦 Package Build" | ||
env: | ||
VERSION: ${{ github.event.release.tag_name }} | ||
run: | | ||
mkdir -p "grails-linux-amd64-${VERSION}/bin" | ||
mv ./grails-cli/build/native/nativeCompile/grails "grails-linux-amd64-${VERSION}/bin" | ||
cp ./LICENSE "grails-linux-amd64-${VERSION}/" | ||
zip -r "grails-linux-amd64-${VERSION}.zip" "grails-linux-amd64-${VERSION}/" | ||
- name: "📤 Upload Release Asset" | ||
id: upload-release-asset | ||
uses: actions/upload-release-asset@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
with: | ||
upload_url: ${{ github.event.release.upload_url }} | ||
asset_path: ./grails-linux-amd64-${{ github.event.release.tag_name }}.zip | ||
asset_name: grails-linux-amd64-${{ github.event.release.tag_name }}.zip | ||
asset_content_type: application/zip | ||
macos: | ||
name: "Release OS X Intel Native CLI" | ||
runs-on: macos-13 | ||
needs: build | ||
steps: | ||
- name: "📥 Checkout repository" | ||
uses: actions/checkout@v4 | ||
with: | ||
ref: v${{ needs.build.outputs.release_version }} | ||
- name: "☕️ Setup GraalVM CE" | ||
uses: graalvm/setup-graalvm@v1 | ||
with: | ||
java-version: '17' | ||
distribution: 'graalvm-community' | ||
components: 'native-image' | ||
github-token: ${{ secrets.GITHUB_TOKEN }} | ||
- name: "🐘 Setup Gradle" | ||
uses: gradle/actions/setup-gradle@v4 | ||
with: | ||
develocity-access-key: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }} | ||
- name: "📸 Build the Native Image" | ||
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 grails-cli:nativeCompile --no-daemon | ||
- name: "✅ Verify Build" | ||
run: ./grails-cli/build/native/nativeCompile/grails --version | ||
- name: "✅ Verify Create App" | ||
run: ./grails-cli/build/native/nativeCompile/grails create-app test | ||
- name: "📦 Package Build" | ||
env: | ||
VERSION: ${{ github.event.release.tag_name }} | ||
run: | | ||
mkdir -p "grails-darwin-amd64-${VERSION}/bin" | ||
mv ./grails-cli/build/native/nativeCompile/grails "grails-darwin-amd64-${VERSION}/bin" | ||
cp ./LICENSE "grails-darwin-amd64-${VERSION}/" | ||
zip -r "grails-darwin-amd64-${VERSION}.zip" "grails-darwin-amd64-${VERSION}/" -x '*.DS_Store*' -x '__MAC_OSX' | ||
- name: "📤 Upload Release Asset" | ||
id: upload-release-asset | ||
uses: actions/upload-release-asset@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
with: | ||
upload_url: ${{ github.event.release.upload_url }} | ||
asset_path: ./grails-darwin-amd64-${{ github.event.release.tag_name }}.zip | ||
asset_name: grails-darwin-amd64-${{ github.event.release.tag_name }}.zip | ||
asset_content_type: application/zip | ||
macos-arm: | ||
name: "Release OS X Arm Native CLI" | ||
runs-on: macos-latest | ||
needs: build | ||
steps: | ||
- name: "📥 Checkout repository" | ||
uses: actions/checkout@v4 | ||
with: | ||
ref: v${{ needs.build.outputs.release_version }} | ||
- name: "☕️ Setup GraalVM CE" | ||
uses: graalvm/setup-graalvm@v1 | ||
with: | ||
java-version: '17' | ||
distribution: 'graalvm-community' | ||
components: 'native-image' | ||
github-token: ${{ secrets.GITHUB_TOKEN }} | ||
- name: "🐘 Setup Gradle" | ||
uses: gradle/actions/setup-gradle@v4 | ||
with: | ||
develocity-access-key: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }} | ||
- name: "📸 Build the Native Image" | ||
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 grails-cli:nativeCompile --no-daemon | ||
- name: "✅ Verify Build" | ||
run: ./grails-cli/build/native/nativeCompile/grails --version | ||
- name: "✅ Verify Create App" | ||
run: ./grails-cli/build/native/nativeCompile/grails create-app test | ||
- name: "📦 Package Build" | ||
env: | ||
VERSION: ${{ github.event.release.tag_name }} | ||
run: | | ||
mkdir -p "grails-darwin-aarch64-${VERSION}/bin" | ||
mv ./grails-cli/build/native/nativeCompile/grails "grails-darwin-aarch64-${VERSION}/bin" | ||
cp ./LICENSE "grails-darwin-aarch64-${VERSION}/" | ||
zip -r "grails-darwin-aarch64-${VERSION}.zip" "grails-darwin-aarch64-${VERSION}/" -x '*.DS_Store*' -x '__MAC_OSX' | ||
- name: "📤 Upload Release Asset" | ||
id: upload-release-asset | ||
uses: actions/upload-release-asset@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
with: | ||
upload_url: ${{ github.event.release.upload_url }} | ||
asset_path: ./grails-darwin-aarch64-${{ github.event.release.tag_name }}.zip | ||
asset_name: grails-darwin-aarch64-${{ github.event.release.tag_name }}.zip | ||
asset_content_type: application/zip | ||
windows: | ||
name: "Release Windows Native CLI" | ||
runs-on: windows-latest | ||
needs: build | ||
steps: | ||
- name: "📥 Checkout repository" | ||
uses: actions/checkout@v4 | ||
with: | ||
ref: v${{ needs.build.outputs.release_version }} | ||
- name: "☕️ Setup GraalVM CE" | ||
uses: graalvm/setup-graalvm@v1 | ||
with: | ||
java-version: '17' | ||
distribution: 'graalvm-community' | ||
components: 'native-image' | ||
github-token: ${{ secrets.GITHUB_TOKEN }} | ||
- name: "🐘 Setup Gradle" | ||
uses: gradle/actions/setup-gradle@v4 | ||
with: | ||
develocity-access-key: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }} | ||
- name: "📸 Build the Native Image" | ||
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 grails-cli:nativeCompile --no-daemon | ||
- name: "✅ Verify Build (Powershell)" | ||
shell: powershell | ||
run: ./grails-cli/build/native/nativeCompile/grails.exe --version | ||
- name: "✅ Verify Create App (Powershell)" | ||
shell: powershell | ||
run: ./grails-cli/build/native/nativeCompile/grails.exe create-app test | ||
- name: "✅ Verify Build (CMD)" | ||
shell: cmd | ||
run: grails-cli\\build\\native\\nativeCompile\\grails --version | ||
- name: "✅ Verify Create App (CMD)" | ||
shell: cmd | ||
run: grails-cli\\build\\native\\nativeCompile\\grails create-app test2 | ||
- name: "📦 ZIP Archive" | ||
run: | | ||
New-Item ./grails-win-amd64-${{ github.event.release.tag_name }}/bin -ItemType Directory -ea 0 | ||
Move-Item -Path ./grails-cli/build/native/nativeCompile/grails.exe -Destination ./grails-win-amd64-${{ github.event.release.tag_name }}/bin | ||
Copy-Item ./LICENSE -Destination ./grails-win-amd64-${{ github.event.release.tag_name }} | ||
Compress-Archive -Path ./grails-win-amd64-${{ github.event.release.tag_name }} -Update -DestinationPath ./grails-win-amd64-${{ github.event.release.tag_name }}.zip | ||
- name: "📤 Upload Release Asset" | ||
id: upload-release-asset | ||
uses: actions/upload-release-asset@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
with: | ||
upload_url: ${{ github.event.release.upload_url }} | ||
asset_path: ./grails-win-amd64-${{ github.event.release.tag_name }}.zip | ||
asset_name: grails-win-amd64-${{ github.event.release.tag_name }}.zip | ||
asset_content_type: application/zip | ||
sdkman: | ||
name: "Release to SDKMAN!" | ||
runs-on: ubuntu-latest | ||
needs: [build, linux, macos, macos-arm, windows] | ||
steps: | ||
- name: "📥 Checkout repository" | ||
uses: actions/checkout@v4 | ||
with: | ||
ref: v${{ needs.build.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: "🚀 Grails SDK Minor Release" | ||
if: contains(needs.build.outputs.release_version, 'M') | ||
run: ./gradlew sdkMinorRelease | ||
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 }} | ||
GVM_SDKVENDOR_KEY: ${{ secrets.GVM_SDKVENDOR_KEY }} | ||
GVM_SDKVENDOR_TOKEN: ${{ secrets.GVM_SDKVENDOR_TOKEN }} | ||
- name: "🚀 Grails SDK Major Release" | ||
if: startsWith(needs.build.outputs.release_version, '6.') && !contains(needs.build.outputs.release_version, 'M') | ||
run: ./gradlew sdkMajorRelease | ||
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 }} | ||
GVM_SDKVENDOR_KEY: ${{ secrets.GVM_SDKVENDOR_KEY }} | ||
GVM_SDKVENDOR_TOKEN: ${{ secrets.GVM_SDKVENDOR_TOKEN }} |