Skip to content

Simplify generated build #1480

Simplify generated build

Simplify generated build #1480

Workflow file for this run

name: "Snapshot"
on:
push:
branches:
- '[6-9]+.[0-9]+.x'
pull_request:
branches:
- '[6-9]+.[0-9]+.x'
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: "📥 Checkout repository"
uses: actions/checkout@v4
- name: "☕️ Setup JDK"
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '11'
- name: "🐘 Setup Gradle"
uses: gradle/actions/setup-gradle@v4
- name: "🔨 Run Build"
id: build
env:
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
run: ./gradlew build --refresh-dependencies
- name: "✅ Verify CLI"
if: success()
run: |
cp grails-cli/build/distributions/grails-cli-*.zip cli.zip
unzip cli -d tmp
mv tmp/grails-cli-* tmp/cli
./tmp/cli/bin/grails --version
- name: "📤 Publish to Sonatype OSSRH"
id: publish
if: steps.build.outcome == 'success' && github.event_name == 'push'
env:
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
run: ./gradlew publishToSonatype
deploy:
name: "Deploy To Google Cloud Run"
runs-on: ubuntu-latest
if: github.event_name != 'pull_request'
needs: [build]
env:
IMAGE_NAME: gcr.io/${{ secrets.GCP_PROJECT_ID }}/${{ secrets.GCP_APP_NAME }}:snapshot
steps:
- name: "🔑 Login"
uses: google-github-actions/setup-gcloud@v0
with:
project_id: ${{ secrets.GCP_PROJECT_ID }}
service_account_email: ${{ secrets.GCP_EMAIL }}
service_account_key: ${{ secrets.GCP_CREDENTIALS }}
- name: "🐋 Configure Docker"
run: gcloud auth configure-docker --quiet
- name: "📥 Checkout repository"
uses: actions/checkout@v4
- name: "☕️ Setup JDK"
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '11'
- name: "🐘 Setup Gradle"
uses: gradle/actions/setup-gradle@v4
- name: "✅ Run Tests"
env:
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
run: >
./gradlew
grails-forge-api:test
grails-forge-web-netty:test
- name: "🔨 Build Docker image"
# To deploy native executables built with GraalVM replace dockerBuild with dockerBuildNative and dockerPush with dockerPushNative. First, try that it works locally.
env:
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
run: >
./gradlew
grails-forge-web-netty:dockerBuildNative
-PdockerImageName=${{ env.IMAGE_NAME }}
- name: "📤 Push image to Google Cloud Container Registry"
env:
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
run: >
./gradlew
grails-forge-web-netty:dockerPushNative
-PdockerImageName=${{ env.IMAGE_NAME }}
- name: "🚀 Deploy Docker image"
run: >
gcloud run deploy ${{ secrets.GCP_PROJECT_ID }}-snapshot
--image $IMAGE_NAME
--region us-central1
--update-env-vars=HOSTNAME="snapshot.grails.org",CORS_ALLOWED_ORIGIN="https://start.grails.org",GITHUB_OAUTH_APP_CLIENT_ID=${{ secrets.GH_OAUTH_SNAPSHOT_CLIENT_ID }},GITHUB_OAUTH_APP_CLIENT_SECRET=${{ secrets.GH_OAUTH_SNAPSHOT_CLIENT_SECRET }},GITHUB_USER_AGENT=${{ secrets.GH_USER_AGENT }},GITHUB_REDIRECT_URL=${{ secrets.GH_REDIRECT_URL }}
--platform managed
--allow-unauthenticated
--service-account=${{ secrets.GCLOUD_EMAIL }}
deployAnalytics:
name: "Deploy Analytics To Google Cloud Run"
runs-on: ubuntu-latest
if: github.event_name != 'pull_request'
needs: [build]
env:
IMAGE_NAME: gcr.io/${{ secrets.GCP_PROJECT_ID }}/${{ secrets.GCP_APP_NAME }}-analytics:snapshot
steps:
- name: "🔑 Login"
uses: google-github-actions/setup-gcloud@v0
with:
project_id: ${{ secrets.GCP_PROJECT_ID }}
service_account_email: ${{ secrets.GCP_EMAIL }}
service_account_key: ${{ secrets.GCP_CREDENTIALS }}
- name: "🐋 Configure Docker"
run: gcloud auth configure-docker --quiet
- name: "📥 Checkout repository"
uses: actions/checkout@v4
- name: "☕️ Setup JDK"
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '11'
- name: "🐘 Setup Gradle"
uses: gradle/actions/setup-gradle@v4
- name: "✅ Run Tests"
env:
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
run: ./gradlew grails-forge-analytics-postgres:test
- name: "🔨 Build Docker image"
# To deploy native executables built with GraalVM replace dockerBuild with dockerBuildNative and dockerPush with dockerPushNative. First, try that it works locally.
env:
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
run: >
./gradlew
grails-forge-analytics-postgres:dockerBuildNative
-PdockerImageName=${{ env.IMAGE_NAME }}
- name: "📤 Push image to Google Cloud Container Registry"
env:
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
run: >
./gradlew
grails-forge-analytics-postgres:dockerPushNative
-PdockerImageName=${{ env.IMAGE_NAME }}
- name: "🚀 Deploy Docker image"
run: |
gcloud components install beta --quiet
gcloud run deploy ${{ secrets.GCP_PROJECT_ID }}-analytics-snapshot --image $IMAGE_NAME --region us-central1 --platform managed --allow-unauthenticated --service-account=${{ secrets.GCLOUD_EMAIL }}
linux:
name: "Build Linux Native CLI"
runs-on: ubuntu-latest
needs: [build]
steps:
- name: "📥 Checkout the repository"
uses: actions/checkout@v4
- name: "☕️ Setup GraalVM CE"
uses: graalvm/setup-graalvm@v1
with:
java-version: '11'
components: 'native-image'
version: '22.3.3'
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: "🐘 Setup Gradle"
uses: gradle/actions/setup-gradle@v4
- name: "📸 Build the Native Image"
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-snapshot/bin
mv ./grails-cli/build/native/nativeCompile/grails grails-linux-amd64-snapshot/bin
cp ./LICENSE grails-linux-amd64-snapshot/
zip -r grails-linux-amd64-snapshot.zip ./grails-linux-amd64-snapshot
- name: Upload Snapshot
if: success() && github.event_name == 'push' && github.ref == 'refs/heads/6.2.x'
uses: actions/upload-artifact@v4
with:
name: grails-linux-amd64-snapshot
path: grails-linux-amd64-snapshot.zip
macos:
name: "Build OS X Intel Native CLI"
runs-on: macos-13
needs: [build]
steps:
- name: "📥 Checkout the repository"
uses: actions/checkout@v4
- name: "☕️ Setup GraalVM CE"
uses: graalvm/setup-graalvm@v1
with:
java-version: '11'
components: 'native-image'
version: '22.3.3'
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: "🐘 Setup Gradle"
uses: gradle/actions/setup-gradle@v4
- name: "📸 Build the Native Image"
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-snapshot/bin
mv ./grails-cli/build/native/nativeCompile/grails grails-darwin-amd64-snapshot/bin
cp ./LICENSE grails-darwin-amd64-snapshot/
zip -r grails-darwin-amd64-snapshot.zip ./grails-darwin-amd64-snapshot -x '*.DS_Store*' -x '__MAC_OSX'
- name: "📤 Upload Snapshot"
if: success() && github.event_name == 'push' && github.ref == 'refs/heads/6.2.x'
uses: actions/upload-artifact@v4
with:
name: grails-darwin-amd64-snapshot
path: grails-darwin-amd64-snapshot.zip
macos-arm:
if: false # Graalvm cannot build Java 11 OS X Arm Native Image
name: "Build OS X Arm Native CLI"
runs-on: macos-latest
env:
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
needs: [build]
steps:
- name: "📥 Checkout repository"
uses: actions/checkout@v4
- name: "☕️ Setup GraalVM CE"
uses: graalvm/setup-graalvm@v1
with:
java-version: '11'
components: 'native-image'
version: '22.3.3'
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: "🐘 Setup Gradle"
uses: gradle/actions/setup-gradle@v4
- name: "📸 Build the Native Image"
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-snapshot/bin
mv ./grails-cli/build/native/nativeCompile/grails grails-darwin-aarch64-snapshot/bin
cp ./LICENSE grails-darwin-aarch64-snapshot/
zip -r grails-darwin-aarch64-snapshot.zip grails-darwin-aarch64-snapshot/ -x '*.DS_Store*' -x '__MAC_OSX'
- name: "📤 Upload Snapshot"
if: success() && github.event_name == 'push' && github.ref == 'refs/heads/6.2.x'
uses: actions/upload-artifact@v4
with:
name: grails-darwin-aarch64-snapshot
path: grails-darwin-aarch64-snapshot.zip
windows:
name: "Build Windows Native CLI"
runs-on: windows-latest
needs: [build]
steps:
- name: "📥 Checkout the repository"
uses: actions/checkout@v4
- name: "☕️ Setup GraalVM CE"
uses: graalvm/setup-graalvm@v1
with:
java-version: '11'
components: 'native-image'
version: '22.3.3'
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: "🐘 Setup Gradle"
uses: gradle/actions/setup-gradle@v4
- name: "📸 Build the Native Image"
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-snapshot/bin" -ItemType Directory -ea 0
Move-Item -Path ./grails-cli/build/native/nativeCompile/grails.exe -Destination "./grails-win-amd64-snapshot/bin"
Copy-Item "./LICENSE" -Destination "./grails-win-amd64-snapshot"
Compress-Archive -Path "./grails-win-amd64-snapshot" -Update -DestinationPath ./grails-win-amd64-snapshot.zip
- name: "📤 Publish artifact"
if: success() && github.event_name == 'push' && github.ref == 'refs/heads/6.2.x'
uses: actions/upload-artifact@v4
with:
name: grails-win-amd64-snapshot
path: ./grails-win-amd64-snapshot.zip