1- # Licensed to the Apache Software Foundation (ASF) under one or more
2- # contributor license agreements. See the NOTICE file distributed with
3- # this work for additional information regarding copyright ownership.
4- # The ASF licenses this file to You under the Apache License, Version 2.0
5- # (the "License"); you may not use this file except in compliance with
6- # the License. You may obtain a copy of the License at
7- #
8- # https://www.apache.org/licenses/LICENSE-2.0
9- #
10- # Unless required by applicable law or agreed to in writing, software
11- # distributed under the License is distributed on an "AS IS" BASIS,
12- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13- # See the License for the specific language governing permissions and
14- # limitations under the License.
15-
16- name : " Grails Joint Validation Build"
17- # GROOVY_2_5_X == Grails 4.0.x
18- # GROOVY_3_0_X == grails master
19- # Groovy master branch does not map to any due to changed package names.
1+ name : " Groovy Joint Validation Build"
202on :
213 push :
224 branches :
279 workflow_dispatch :
2810permissions :
2911 contents : read
30- env :
31- CI_GROOVY_VERSION :
3212jobs :
3313 build_groovy :
34- strategy :
35- fail-fast : true
3614 runs-on : ubuntu-latest
3715 outputs :
3816 groovyVersion : ${{ steps.groovy-version.outputs.value }}
3917 steps :
40- - name : Set up JDK
18+ - name : " ☕️ Setup JDK"
4119 uses : actions/setup-java@v4
4220 with :
43- distribution : temurin
21+ distribution : liberica
4422 java-version : 17
45- - name : Cache local Maven repository & Groovy
23+ - name : " 🗄️ Cache local Maven repository"
4624 uses : actions/cache@v4
4725 with :
48- path : |
49- ~/groovy
50- ~/.m2/repository
51- key : cache-local-groovy-maven-${{ github.sha }}
52- - name : Checkout Groovy 4_0_X (Grails 7 and later)
53- run : cd .. && git clone --depth 1 https://github.com/apache/groovy.git -b GROOVY_4_0_X --single-branch
54- - name : Set CI_GROOVY_VERSION for Grails
26+ path : ~/.m2/repository
27+ key : cache-local-maven-${{ github.sha }}
28+ - name : " 📥 Checkout this project to fetch Gradle Plugin versions it uses"
29+ uses : actions/checkout@v4
30+ with :
31+ sparse-checkout-cone-mode : false
32+ sparse-checkout : settings.gradle
33+ - name : " 📝 Store the Gradle Plugin versions used in this project"
34+ id : gradle-plugin-versions
35+ run : |
36+ DEVELOCITY_PLUGIN_VERSION=$(grep -m 1 'id\s*\(\"com.gradle.develocity\"\|'"'com.gradle.develocity'"'\)\s*version' settings.gradle | sed -E "s/.*version[[:space:]]*['\"]?([0-9]+\.[0-9]+(\.[0-9]+)?)['\"]?.*/\1/" | tr -d [:space:])
37+ COMMON_CUSTOM_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:])
38+ echo "Project uses Develocity Plugin version: $DEVELOCITY_PLUGIN_VERSION"
39+ echo "Project uses Common Custom User Data Plugin version: $COMMON_CUSTOM_USER_DATA_PLUGIN_VERSION"
40+ echo "develocity_plugin_version=$DEVELOCITY_PLUGIN_VERSION" >> $GITHUB_OUTPUT
41+ echo "common_custom_user_data_plugin_version=$COMMON_CUSTOM_USER_DATA_PLUGIN_VERSION" >> $GITHUB_OUTPUT
42+ rm settings.gradle
43+ - name : " 📥 Checkout Groovy 4_0_X (Grails 7 and later)"
44+ run : git clone --depth 1 https://github.com/apache/groovy.git -b GROOVY_4_0_X --single-branch
45+ - name : " 🐘 Setup Gradle"
46+ uses : gradle/actions/setup-gradle@v4
47+ with :
48+ develocity-access-key : ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
49+ - name : " 📝 Store Groovy version to use when building this project"
5550 id : groovy-version
5651 run : |
57- cd ../groovy
58- echo "CI_GROOVY_VERSION=$(cat gradle.properties | grep groovyVersion | cut -d\= -f2 | tr -d '[:space:]')" >> $GITHUB_ENV
59- echo "value=$(cat gradle.properties | grep groovyVersion | cut -d\= -f2 | tr -d '[:space:]')" >> $GITHUB_OUTPUT
60- - name : Prepare Develocity Setup 1
61- id : develocity_conf_1
52+ cd groovy
53+ GROOVY_VERSION=$(cat gradle.properties | grep groovyVersion | cut -d\= -f2 | tr -d '[:space:]')
54+ echo "Groovy version $GROOVY_VERSION stored"
55+ echo "value=$GROOVY_VERSION" >> $GITHUB_OUTPUT
56+ - name : " 🐘 Configure Gradle Plugins (Step 1/3)"
57+ id : develocity-conf-1
6258 run : |
6359 echo "VALUE<<EOF" >> $GITHUB_OUTPUT
6460 echo "plugins { " >> $GITHUB_OUTPUT
65- echo " id 'com.gradle.enterprise ' version '3.15.1 '" >> $GITHUB_OUTPUT
66- echo " id 'com.gradle.common-custom-user-data-gradle-plugin' version '1.11.3 '" >> $GITHUB_OUTPUT
61+ echo " id 'com.gradle.develocity ' version '${{ steps.gradle-plugin-versions.outputs.develocity_plugin_version }} '" >> $GITHUB_OUTPUT
62+ echo " id 'com.gradle.common-custom-user-data-gradle-plugin' version '${{ steps.gradle-plugin-versions.outputs.common_custom_user_data_plugin_version }} '" >> $GITHUB_OUTPUT
6763 echo "}" >> $GITHUB_OUTPUT
6864 echo "" >> $GITHUB_OUTPUT
6965 echo "EOF" >> $GITHUB_OUTPUT
70- - name : Prepare Develocity Setup 2
71- id : develocity_conf_2
66+ - name : " 🐘 Configure Gradle Plugins (Step 2/3) "
67+ id : develocity-conf-2
7268 run : |
7369 echo "VALUE<<EOF" >> $GITHUB_OUTPUT
74- echo "gradleEnterprise {" >> $GITHUB_OUTPUT
75- echo " server = 'https://ge.grails.org'" >> $GITHUB_OUTPUT
76- echo " buildScan {" >> $GITHUB_OUTPUT
77- echo " publishAlways()" >> $GITHUB_OUTPUT
78- echo " publishIfAuthenticated()" >> $GITHUB_OUTPUT
79- echo " uploadInBackground = System.getenv('CI') == null" >> $GITHUB_OUTPUT
80- echo " capture {" >> $GITHUB_OUTPUT
81- echo " taskInputFiles = true" >> $GITHUB_OUTPUT
82- echo " }" >> $GITHUB_OUTPUT
83- echo " }" >> $GITHUB_OUTPUT
84- echo "}" >> $GITHUB_OUTPUT
70+ echo "def isAuthenticated = System.getenv('DEVELOCITY_ACCESS_KEY') != null" >> $GITHUB_OUTPUT
71+ echo "def isBuildCacheAuthenticated =" >> $GITHUB_OUTPUT
72+ echo " System.getenv('DEVELOCITY_BUILD_CACHE_NODE_USER') != null &&" >> $GITHUB_OUTPUT
73+ echo " System.getenv('DEVELOCITY_BUILD_CACHE_NODE_KEY') != null" >> $GITHUB_OUTPUT
8574 echo "" >> $GITHUB_OUTPUT
86- echo "buildCache {" >> $GITHUB_OUTPUT
87- echo " local { enabled = System.getenv('CI') != 'true' }" >> $GITHUB_OUTPUT
88- echo " remote(HttpBuildCache) {" >> $GITHUB_OUTPUT
89- echo " push = System.getenv('CI') == 'true'" >> $GITHUB_OUTPUT
90- echo " enabled = true" >> $GITHUB_OUTPUT
91- echo " url = 'https://ge.grails.org/cache/'" >> $GITHUB_OUTPUT
92- echo " credentials {" >> $GITHUB_OUTPUT
93- echo " username = System.getenv('GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER')" >> $GITHUB_OUTPUT
94- echo " password = System.getenv('GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY')" >> $GITHUB_OUTPUT
95- echo " }" >> $GITHUB_OUTPUT
96- echo " }" >> $GITHUB_OUTPUT
97- echo "}" >> $GITHUB_OUTPUT
75+ echo "develocity {" >> $GITHUB_OUTPUT
76+ echo " server = 'https://ge.grails.org'" >> $GITHUB_OUTPUT
77+ echo " buildScan {" >> $GITHUB_OUTPUT
78+ echo " publishing.onlyIf { isAuthenticated }" >> $GITHUB_OUTPUT
79+ echo " uploadInBackground = false" >> $GITHUB_OUTPUT
80+ echo " }" >> $GITHUB_OUTPUT
81+ echo "}" >> $GITHUB_OUTPUT
82+ echo "" >> $GITHUB_OUTPUT
83+ echo "buildCache {" >> $GITHUB_OUTPUT
84+ echo " local { enabled = false }" >> $GITHUB_OUTPUT
85+ echo " remote(develocity.buildCache) {" >> $GITHUB_OUTPUT
86+ echo " push = isBuildCacheAuthenticated" >> $GITHUB_OUTPUT
87+ echo " enabled = true" >> $GITHUB_OUTPUT
88+ echo " usernameAndPassword(" >> $GITHUB_OUTPUT
89+ echo " System.getenv('DEVELOCITY_BUILD_CACHE_NODE_USER') ?: ''," >> $GITHUB_OUTPUT
90+ echo " System.getenv('DEVELOCITY_BUILD_CACHE_NODE_KEY') ?: ''" >> $GITHUB_OUTPUT
91+ echo " )" >> $GITHUB_OUTPUT
92+ echo " }" >> $GITHUB_OUTPUT
93+ echo "}" >> $GITHUB_OUTPUT
9894 echo "" >> $GITHUB_OUTPUT
9995 echo "EOF" >> $GITHUB_OUTPUT
100- - name : Develocity Set-up
96+ - name : " 🐘 Configure Gradle Plugins (step 3/3) "
10197 run : |
102- cd ../ groovy
98+ cd groovy
10399 # Delete existing plugins from settings.gradle file
104100 sed -i '32,37d' settings.gradle
105- # Add Gradle Enterprise set-up related configuration after line no 31 in settings.gradle
106- echo "${{ steps.develocity_conf_1 .outputs.value }}" | sed -i -e "31r /dev/stdin" settings.gradle
101+ # Add Develocity setup related configuration after line no 31 in settings.gradle
102+ echo "${{ steps.develocity-conf-1 .outputs.value }}" | sed -i -e "31r /dev/stdin" settings.gradle
107103 # Delete existing buildCache configuration from gradle/build-scans.gradle file
108104 sed -i '23,46d' gradle/build-scans.gradle
109- # Add Gradle Enterprise set-up related configuration after line no 22 in gradle/build-scans.gradle
110- echo "${{ steps.develocity_conf_2.outputs.value }}" | sed -i -e "22r /dev/stdin" gradle/build-scans.gradle
111- - name : Build and install groovy (no docs)
112- uses : gradle/gradle-build-action@v3
105+ # Add Develocity setup related configuration after line no 22 in gradle/build-scans.gradle
106+ echo "${{ steps.develocity-conf-2.outputs.value }}" | sed -i -e "22r /dev/stdin" gradle/build-scans.gradle
107+ - name : " 🔨 Publish Groovy to local maven repository (no docs)"
113108 env :
114- GRADLE_SCANS_ACCEPT : yes
115- GRADLE_ENTERPRISE_ACCESS_KEY : ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
116- GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER : ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER }}
117- GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY : ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY }}
118- with :
119- build-root-directory : ../groovy
120- arguments : |
121- install
122- -x groovydoc
123- -x javadoc
124- -x javadocAll
125- -x groovydocAll
126- -x asciidoc
127- -x docGDK
128- build_gorm :
109+ DEVELOCITY_BUILD_CACHE_NODE_USER : ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER }}
110+ DEVELOCITY_BUILD_CACHE_NODE_KEY : ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY }}
111+ run : |
112+ cd groovy
113+ ./gradlew pTML -x groovydoc -x javadoc -x javadocAll -x groovydocAll -x asciidoc -x docGDK
114+
115+ build_project :
129116 needs : [build_groovy]
130- strategy :
131- fail-fast : true
132117 runs-on : ubuntu-latest
133118 steps :
134- - uses : actions/checkout@v4
135- - name : Set up JDK
119+ - name : " 📥 Checkout project"
120+ uses : actions/checkout@v4
121+ - name : " ☕️ Setup JDK"
136122 uses : actions/setup-java@v4
137123 with :
138- distribution : temurin
124+ distribution : liberica
139125 java-version : 17
140- - name : Cache local Maven repository & Groovy
126+ - name : " 🐘 Setup Gradle"
127+ uses : gradle/actions/setup-gradle@v4
128+ with :
129+ develocity-access-key : ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
130+ - name : " 🗄️ Restore local Maven repository from cache"
141131 uses : actions/cache@v4
142132 with :
143- path : |
144- ~/groovy
145- ~/.m2/repository
146- key : cache-local-groovy-maven-${{ github.sha }}
147- - name : Set CI_GROOVY_VERSION for Grails
148- run : |
149- echo "CI_GROOVY_VERSION=${{needs.build_groovy.outputs.groovyVersion}}" >> $GITHUB_ENV
150- - name : Build GORM
151- id : build_gorm
152- uses : gradle/gradle-build-action@v3
133+ path : ~/.m2/repository
134+ key : cache-local-maven-${{ github.sha }}
135+ - name : " 🪶 Add mavenLocal repository to build"
136+ run : sed -i 's|// mavenLocal() // Keep|mavenLocal() // Keep|' build.gradle
137+ - name : " 🔨 Build and test project using the locally built Groovy snapshot"
153138 env :
154- GRADLE_ENTERPRISE_ACCESS_KEY : ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
155- GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER : ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER }}
156- GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY : ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY }}
157- with :
158- arguments : |
159- build
160- -x groovydoc
139+ DEVELOCITY_BUILD_CACHE_NODE_USER : ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER }}
140+ DEVELOCITY_BUILD_CACHE_NODE_KEY : ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY }}
141+ run : >
142+ ./gradlew build
143+ -PgroovyVersion=${{needs.build_groovy.outputs.groovyVersion}}
144+ -x groovydoc
0 commit comments