From 692cff0a87cb12f2f17e4486b0716f2468926de2 Mon Sep 17 00:00:00 2001 From: James Fredley Date: Tue, 10 Dec 2024 13:12:34 -0500 Subject: [PATCH] Split main Java CI build into gradle.yml workflow from Snapshot GPC deploy in snapshot.yml adjust Java versions, the snapshot workflow is now run manually so the desired branch or tag can be deployed --- .github/workflows/gradle.yml | 220 +++++++++++++++++++++++++++++++++ .github/workflows/snapshot.yml | 211 +------------------------------ 2 files changed, 226 insertions(+), 205 deletions(-) create mode 100644 .github/workflows/gradle.yml diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml new file mode 100644 index 00000000..9e92561c --- /dev/null +++ b/.github/workflows/gradle.yml @@ -0,0 +1,220 @@ +name: "Java CI" +on: + push: + branches: + - '[6-9]+.[0-9]+.x' + pull_request: + branches: + - '[6-9]+.[0-9]+.x' + workflow_dispatch: +jobs: + build: + name: "Build Project" + runs-on: ubuntu-latest + strategy: + matrix: + java: ['11', '17'] + 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 + with: + develocity-access-key: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }} + - name: "🔨 Run Build" + id: build + 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 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: success() && github.event_name == 'push' && matrix.java == '11' + 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 }} + run: ./gradlew publishToSonatype + 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 + 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-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 Artifact to Workflow Summary Page" + if: success() && github.event_name == 'push' && github.ref == 'refs/heads/6.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 + 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-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 Artifact to Workflow Summary Page" + if: success() && github.event_name == 'push' && github.ref == 'refs/heads/6.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 + 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 + 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-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 Artifact to Workflow Summary Page" + if: success() && github.event_name == 'push' && github.ref == 'refs/heads/6.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 + 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-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: "📤 Upload Artifact to Workflow Summary Page" + if: success() && github.event_name == 'push' && github.ref == 'refs/heads/6.0.x' + uses: actions/upload-artifact@v4 + with: + name: grails-win-amd64-snapshot + path: ./grails-win-amd64-snapshot.zip \ No newline at end of file diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml index 076c6679..aa8925c5 100644 --- a/.github/workflows/snapshot.yml +++ b/.github/workflows/snapshot.yml @@ -1,19 +1,10 @@ -name: "Snapshot" +name: "Snapshot GCP Deploy" on: - push: - branches: - - '[6-9]+.[0-9]+.x' - pull_request: - branches: - - '[6-9]+.[0-9]+.x' workflow_dispatch: jobs: build: name: "Build Project" runs-on: ubuntu-latest - strategy: - matrix: - java: ['11', '17'] steps: - name: "📥 Checkout repository" uses: actions/checkout@v4 @@ -21,7 +12,7 @@ jobs: uses: actions/setup-java@v4 with: distribution: 'liberica' - java-version: ${{ matrix.java }} + java-version: '11' - name: "🐘 Setup Gradle" uses: gradle/actions/setup-gradle@v4 with: @@ -32,26 +23,8 @@ jobs: 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 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: success() && github.event_name == 'push' && matrix.java == '11' - 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 }} - run: ./gradlew publishToSonatype deploy: - # Snapshots should only be deployed from the latest release branch - # as it updates the snapshot version on https://start.grails.org. - if: false # github.event_name != 'pull_request' + if: github.event_name != 'pull_request' name: "Deploy To Google Cloud Run" runs-on: ubuntu-latest needs: build @@ -72,7 +45,7 @@ jobs: uses: actions/setup-java@v4 with: distribution: 'liberica' - java-version: '17' + java-version: '11' - name: "🐘 Setup Gradle" uses: gradle/actions/setup-gradle@v4 with: @@ -112,9 +85,7 @@ jobs: --allow-unauthenticated --service-account=${{ secrets.GCLOUD_EMAIL }} deployAnalytics: - # Snapshots should only be deployed from the latest release branch - # as it updates the snapshot version on https://start.grails.org. - if: false # github.event_name != 'pull_request' + if: github.event_name != 'pull_request' name: "Deploy Analytics To Google Cloud Run" runs-on: ubuntu-latest needs: build @@ -135,7 +106,7 @@ jobs: uses: actions/setup-java@v4 with: distribution: 'liberica' - java-version: '17' + java-version: '11' - name: "🐘 Setup Gradle" uses: gradle/actions/setup-gradle@v4 with: @@ -166,173 +137,3 @@ jobs: 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 - 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-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 Artifact to Workflow Summary Page" - if: success() && github.event_name == 'push' && github.ref == 'refs/heads/6.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 - 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-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 Artifact to Workflow Summary Page" - if: success() && github.event_name == 'push' && github.ref == 'refs/heads/6.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 - 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 - 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-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 Artifact to Workflow Summary Page" - if: success() && github.event_name == 'push' && github.ref == 'refs/heads/6.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 - 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-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: "📤 Upload Artifact to Workflow Summary Page" - if: success() && github.event_name == 'push' && github.ref == 'refs/heads/6.0.x' - uses: actions/upload-artifact@v4 - with: - name: grails-win-amd64-snapshot - path: ./grails-win-amd64-snapshot.zip \ No newline at end of file