From ebb09ba691f0e38711530a0fe442eac898ec2072 Mon Sep 17 00:00:00 2001 From: James Fredley Date: Fri, 23 Aug 2024 15:00:18 -0400 Subject: [PATCH] Update github workflows --- .github/workflows/gradle.yml | 23 +--- .github/workflows/groovy-joint-workflow.yml | 119 ++++++++------------ .github/workflows/release.yml | 15 ++- 3 files changed, 63 insertions(+), 94 deletions(-) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 12e2a148..48a71129 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -6,46 +6,37 @@ on: pull_request: branches: - '[5-9]+.[0-9]+.x' - jobs: - build_project: name: Build Project runs-on: ubuntu-latest - strategy: fail-fast: true - matrix: - java: [11, 17] - steps: - - uses: actions/checkout@v4 - uses: gradle/wrapper-validation-action@v2 - uses: actions/setup-java@v4 with: distribution: temurin - java-version: ${{ matrix.java }} + java-version: 17 - name: Run Gradle build uses: gradle/actions/setup-gradle@v3 env: GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }} with: arguments: build - publish_documentation: name: Publish Snapshot release runs-on: ubuntu-latest if: github.event_name == 'push' needs: build_project - steps: - - uses: actions/checkout@v4 - uses: gradle/wrapper-validation-action@v2 - uses: actions/setup-java@v4 - with: { distribution: temurin, java-version: 11 } - + with: + distribution: temurin + java-version: 17 - name: Publish to Artifactory (repo.grails.org) uses: gradle/actions/setup-gradle@v3 env: @@ -56,7 +47,6 @@ jobs: arguments: | -Dorg.gradle.internal.publish.checksums.insecure=true publish - - name: Generate Documentation if: success() uses: gradle/actions/setup-gradle@v3 @@ -64,7 +54,6 @@ jobs: GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }} with: arguments: docs - - name: Publish to Github Pages if: success() uses: micronaut-projects/github-pages-deploy-action@grails @@ -74,5 +63,5 @@ jobs: BRANCH: gh-pages FOLDER: docs/build/docs DOC_FOLDER: gh-pages - COMMIT_EMAIL: behlp@unityfoundation.io - COMMIT_NAME: Puneet Behl \ No newline at end of file + COMMIT_EMAIL: 'grails-build@users.noreply.github.com' + COMMIT_NAME: 'grails-build' \ No newline at end of file diff --git a/.github/workflows/groovy-joint-workflow.yml b/.github/workflows/groovy-joint-workflow.yml index 0e5210b1..b4d58642 100644 --- a/.github/workflows/groovy-joint-workflow.yml +++ b/.github/workflows/groovy-joint-workflow.yml @@ -9,18 +9,22 @@ on: workflow_dispatch: permissions: contents: read +env: + CI_GROOVY_VERSION: jobs: build_groovy: + strategy: + fail-fast: true runs-on: ubuntu-latest outputs: - groovySnapshotVersion: ${{ steps.groovy_snapshot_version.outputs.value }} + groovyVersion: ${{ steps.groovy-version.outputs.value }} steps: - name: Set up JDK uses: actions/setup-java@v4 with: distribution: temurin - java-version: 11 + java-version: 17 - name: Cache local Maven repository & Groovy uses: actions/cache@v4 @@ -29,65 +33,34 @@ jobs: ~/groovy ~/.m2/repository key: cache-local-groovy-maven-${{ github.sha }} - - - name: Checkout project to fetch some versions it uses - uses: actions/checkout@v4 - with: - sparse-checkout-cone-mode: false - sparse-checkout: | - settings.gradle - gradle/libs.versions.toml - - - name: Get version of Gradle Enterprise plugin - id: gradle_enterprise_version - run: | - GE_PLUGIN_VERSION=$(grep -m 1 'id\s*\(\"com.gradle.enterprise\"\|'"'com.gradle.enterprise'"'\)\s*version' settings.gradle | sed -E "s/.*version[[:space:]]*['\"]?([0-9]+\.[0-9]+(\.[0-9]+)?)['\"]?.*/\1/" | tr -d [:space:]) - GE_USER_DATA_PLUGIN_VERSION=$(grep -m 1 'id\s*\(\"com.gradle.common-custom-user-data-gradle-plugin\"\|'"'com.gradle.common-custom-user-data-gradle-plugin'"'\)\s*version' settings.gradle | sed -E "s/.*version[[:space:]]*['\"]?([0-9]+\.[0-9]+(\.[0-9]+)?)['\"]?.*/\1/" | tr -d [:space:]) - echo "Project uses Gradle Enterprise Plugin version: $GE_PLUGIN_VERSION" - echo "Project uses Gradle Common Custom User Data Plugin version: $GE_USER_DATA_PLUGIN_VERSION" - echo "ge_plugin_version=$GE_PLUGIN_VERSION" >> $GITHUB_OUTPUT - echo "ge_user_data_plugin_version=$GE_USER_DATA_PLUGIN_VERSION" >> $GITHUB_OUTPUT - rm settings.gradle - - - name: Select Groovy Branch to checkout - id: groovy_branch - run: | - PROJECT_GROOVY_VERSION=$(grep -m 1 groovy gradle/libs.versions.toml | cut -d\= -f2 | tr -d "[:space:]'\"") - MAJOR_VERSION=$(echo $PROJECT_GROOVY_VERSION | cut -d'.' -f1) - MINOR_VERSION=$(echo $PROJECT_GROOVY_VERSION | cut -d'.' -f2) - BRANCH="GROOVY_${MAJOR_VERSION}_${MINOR_VERSION}_X" - echo "Project uses Groovy $PROJECT_GROOVY_VERSION" - echo "value=$BRANCH" >> $GITHUB_OUTPUT - rm -rf gradle - - - name: Checkout Groovy Snapshot - run: | - BRANCH=${{ steps.groovy_branch.outputs.value }} - echo "Checking out Groovy branch $BRANCH" - cd .. && git clone --depth 1 https://github.com/apache/groovy.git -b $BRANCH --single-branch - - - name: Set Groovy Snapshot version for project build - id: groovy_snapshot_version + - name: Checkout Groovy 4_0_X (Grails 7 and later) + run: cd .. && git clone --depth 1 https://github.com/apache/groovy.git -b GROOVY_4_0_X --single-branch + - name: Set CI_GROOVY_VERSION for Grails + id: groovy-version run: | cd ../groovy - GROOVY_SNAPSHOT_VERSION=$(cat gradle.properties | grep groovyVersion | cut -d\= -f2 | tr -d "[:space:]") - echo "value=$GROOVY_SNAPSHOT_VERSION" >> $GITHUB_OUTPUT - - - name: Prepare Gradle Enterprise Set-up Configuration - id: ge_conf + echo "CI_GROOVY_VERSION=$(cat gradle.properties | grep groovyVersion | cut -d\= -f2 | tr -d '[:space:]')" >> $GITHUB_ENV + echo "value=$(cat gradle.properties | grep groovyVersion | cut -d\= -f2 | tr -d '[:space:]')" >> $GITHUB_OUTPUT + - name: Prepare Develocity Setup 1 + id: develocity_conf_1 run: | echo "VALUE<> $GITHUB_OUTPUT echo "plugins { " >> $GITHUB_OUTPUT - echo " id 'com.gradle.enterprise' version '${{ steps.gradle_enterprise_version.outputs.ge_plugin_version }}'" >> $GITHUB_OUTPUT - echo " id 'com.gradle.common-custom-user-data-gradle-plugin' version '${{ steps.gradle_enterprise_version.outputs.ge_user_data_plugin_version }}'" >> $GITHUB_OUTPUT + echo " id 'com.gradle.enterprise' version '3.15.1'" >> $GITHUB_OUTPUT + echo " id 'com.gradle.common-custom-user-data-gradle-plugin' version '1.11.3'" >> $GITHUB_OUTPUT echo "}" >> $GITHUB_OUTPUT echo "" >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT + - name: Prepare Develocity Setup 2 + id: develocity_conf_2 + run: | + echo "VALUE<> $GITHUB_OUTPUT echo "gradleEnterprise {" >> $GITHUB_OUTPUT echo " server = 'https://ge.grails.org'" >> $GITHUB_OUTPUT echo " buildScan {" >> $GITHUB_OUTPUT echo " publishAlways()" >> $GITHUB_OUTPUT echo " publishIfAuthenticated()" >> $GITHUB_OUTPUT - echo " uploadInBackground = false" >> $GITHUB_OUTPUT + echo " uploadInBackground = System.getenv('CI') == null" >> $GITHUB_OUTPUT echo " capture {" >> $GITHUB_OUTPUT echo " taskInputFiles = true" >> $GITHUB_OUTPUT echo " }" >> $GITHUB_OUTPUT @@ -95,25 +68,32 @@ jobs: echo "}" >> $GITHUB_OUTPUT echo "" >> $GITHUB_OUTPUT echo "buildCache {" >> $GITHUB_OUTPUT - echo " local { enabled = false }" >> $GITHUB_OUTPUT - echo " remote(gradleEnterprise.buildCache) {" >> $GITHUB_OUTPUT - echo " push = true" >> $GITHUB_OUTPUT + echo " local { enabled = System.getenv('CI') != 'true' }" >> $GITHUB_OUTPUT + echo " remote(HttpBuildCache) {" >> $GITHUB_OUTPUT + echo " push = System.getenv('CI') == 'true'" >> $GITHUB_OUTPUT echo " enabled = true" >> $GITHUB_OUTPUT + echo " url = 'https://ge.grails.org/cache/'" >> $GITHUB_OUTPUT + echo " credentials {" >> $GITHUB_OUTPUT + echo " username = System.getenv('GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER')" >> $GITHUB_OUTPUT + echo " password = System.getenv('GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY')" >> $GITHUB_OUTPUT + echo " }" >> $GITHUB_OUTPUT echo " }" >> $GITHUB_OUTPUT echo "}" >> $GITHUB_OUTPUT echo "" >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT - - - name: Gradle Enterprise Set-up + - name: Develocity Set-up run: | cd ../groovy - # Delete exiting plugins and build-scan from settings.gradle file - sed -i '21,31d' settings.gradle - # Add Gradle Enterprise set-up related configuration after line no 20 in settings.gradle - echo "${{ steps.ge_conf.outputs.value }}" | sed -i -e "20r /dev/stdin" settings.gradle - - - name: Build and install Groovy (no docs) - uses: gradle/actions/setup-gradle@v3 + # Delete existing plugins from settings.gradle file + sed -i '32,37d' settings.gradle + # Add Gradle Enterprise set-up related configuration after line no 31 in settings.gradle + echo "${{ steps.develocity_conf_1.outputs.value }}" | sed -i -e "31r /dev/stdin" settings.gradle + # Delete existing buildCache configuration from gradle/build-scans.gradle file + sed -i '23,46d' gradle/build-scans.gradle + # Add Gradle Enterprise set-up related configuration after line no 22 in gradle/build-scans.gradle + echo "${{ steps.develocity_conf_2.outputs.value }}" | sed -i -e "22r /dev/stdin" gradle/build-scans.gradle + - name: Build and install groovy (no docs) + uses: gradle/gradle-build-action@v3 env: GRADLE_SCANS_ACCEPT: yes GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }} @@ -132,6 +112,8 @@ jobs: build_project: needs: [build_groovy] + strategy: + fail-fast: true runs-on: ubuntu-latest steps: @@ -141,7 +123,7 @@ jobs: uses: actions/setup-java@v4 with: distribution: temurin - java-version: 11 + java-version: 17 - name: Cache local Maven repository & Groovy uses: actions/cache@v4 @@ -150,14 +132,13 @@ jobs: ~/groovy ~/.m2/repository key: cache-local-groovy-maven-${{ github.sha }} - - - name: Build Project - id: build_grails_project - uses: gradle/actions/setup-gradle@v3 + - name: Set CI_GROOVY_VERSION for Grails + run: | + echo "CI_GROOVY_VERSION=${{needs.build_groovy.outputs.groovyVersion}}" >> $GITHUB_ENV + - name: Build GORM + id: build_gorm + uses: gradle/gradle-build-action@v3 env: - GROOVY_VERSION: ${{ needs.build_groovy.outputs.groovySnapshotVersion }} - CI_GROOVY_VERSION: ${{ needs.build_groovy.outputs.groovySnapshotVersion }} - ORG_GRADLE_PROJECT_groovyVersion: ${{ needs.build_groovy.outputs.groovySnapshotVersion }} GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }} GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER }} GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 54280c40..d7eed2c9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -2,20 +2,19 @@ name: Release on: release: types: [published] - jobs: release: runs-on: ubuntu-latest - env: - GIT_USER_NAME: puneetbehl - GIT_USER_EMAIL: behlp@objectcomputing.com - + GIT_USER_NAME: 'grails-build' + GIT_USER_EMAIL: 'grails-build@users.noreply.github.com' steps: - uses: actions/checkout@v4 - uses: gradle/wrapper-validation-action@v2 - uses: actions/setup-java@v4 - with: { distribution: temurin, java-version: 11 } + with: + distribution: temurin + java-version: 17 - name: Set the current release version id: release_version @@ -63,8 +62,8 @@ jobs: FOLDER: docs/build/docs VERSION: ${{ steps.release_version.outputs.release_version }} DOC_FOLDER: gh-pages - COMMIT_EMAIL: behlp@unityfoundation.io - COMMIT_NAME: Puneet Behl + COMMIT_EMAIL: 'grails-build@users.noreply.github.com' + COMMIT_NAME: 'grails-build' - name: Run post-release if: steps.publish_to_sonatype.outcome == 'success'