Merge pull request #423 from gsartori/7.0.x #1469
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: "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 | |
strategy: | |
matrix: | |
java: ['17', '21'] | |
steps: | |
- name: "📥 Checkout repository" | |
uses: actions/checkout@v4 | |
- name: "☕️ Setup JDK" | |
uses: actions/setup-java@v4 | |
with: | |
distribution: 'liberica' | |
java-version: ${{ matrix.java }} | |
- 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 | |
- 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' && matrix.java == '17' | |
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: 'liberica' | |
java-version: '17' | |
- 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: 'liberica' | |
java-version: '17' | |
- 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: '17' | |
distribution: 'graalvm-community' | |
components: 'native-image' | |
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/7.0.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: '17' | |
distribution: 'graalvm-community' | |
components: 'native-image' | |
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/7.0.x' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: grails-darwin-amd64-snapshot | |
path: grails-darwin-amd64-snapshot.zip | |
macos-arm: | |
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: '17' | |
distribution: 'graalvm-community' | |
components: 'native-image' | |
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/7.0.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: '17' | |
distribution: 'graalvm-community' | |
components: 'native-image' | |
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/7.0.x' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: grails-win-amd64-snapshot | |
path: ./grails-win-amd64-snapshot.zip |