4040 # https://github.com/WebFuzzing/EvoMaster/issues/447
4141 release-jdk : 21
4242 build-jdk : 17
43+ java-distribution : temurin
4344 retention-days : 5
4445 debug : false # put to true if need to debug a specific test
4546 debugTestName : " GeneRandomizedTest" # replace with test to debug
@@ -74,14 +75,15 @@ jobs:
7475 needs : setup
7576 if : needs.setup.outputs.debug == 'true'
7677 steps :
77- - uses : actions/checkout@v4
78+ - uses : actions/checkout@v6
7879 - name : Setup JDK ${{env.build-jdk}}
7980 uses : actions/setup-java@v5
8081 with :
82+ distribution : ${{env.java-distribution}}
8183 java-version : ${{env.build-jdk}}
8284 distribution : ' temurin'
8385 - name : Cache Maven packages
84- uses : actions/cache@v3
86+ uses : actions/cache@v5
8587 with :
8688 path : ~/.m2
8789 key : ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
@@ -97,25 +99,37 @@ jobs:
9799 if : needs.setup.outputs.debug == 'false'
98100 steps :
99101 # Checkout code
100- - uses : actions/checkout@v4
102+ - uses : actions/checkout@v6
101103 # Build/test for JDK
102104 - name : Setup JDK ${{env.build-jdk}}
103105 uses : actions/setup-java@v5
104106 with :
107+ distribution : ${{env.java-distribution}}
105108 java-version : ${{env.build-jdk}}
106109 distribution : ' temurin'
107110 - name : Cache Maven packages
108- uses : actions/cache@v3
111+ uses : actions/cache@v5
109112 with :
110113 path : ~/.m2
111114 key : ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
112115 restore-keys : ${{ runner.os }}-m2
113116 - name : Build with Maven
114- run : mvn clean verify --fae
117+ # the set command makes the build fail if mvn command fails (no change in behavior)
118+ run : |
119+ set -o pipefail
120+ mvn clean verify --fae 2>&1 | tee full-build-base.log
115121 env :
116122 CI_env : GithubAction
123+ - name : Upload full-build-base log for metrics job
124+ if : success()
125+ uses : actions/upload-artifact@v7
126+ with :
127+ name : full-build-base-log-current
128+ path : full-build-base.log
129+ retention-days : 1
130+ if-no-files-found : error
117131 - name : Upload evomaster.jar
118- uses : actions/upload-artifact@v4
132+ uses : actions/upload-artifact@v7
119133 with :
120134 name : evomaster.jar
121135 path : core/target/evomaster.jar
@@ -140,21 +154,42 @@ jobs:
140154 name : Uploading coverage to CodeCov is done only on 'master' branch builds
141155 run : echo Skipping upload to CodeCov
142156
143-
157+ full-build-metrics :
158+ runs-on : ubuntu-latest
159+ needs : full-build-base
160+ if : needs.full-build-base.result == 'success'
161+ steps :
162+ - uses : actions/checkout@v6
163+ - name : Download full-build-base log
164+ uses : actions/download-artifact@v8
165+ with :
166+ name : full-build-base-log-current
167+ path : .
168+ - name : Analyze and persist full-build-base metrics
169+ continue-on-error : true
170+ uses : ./.github/actions/full-build-metrics
171+ with :
172+ log-file : full-build-base.log
173+ artifact-name : full-build-base-metrics
174+ baseline-branch : master
175+ workflow-file : ci.yml
176+ # These metrics occupy very little space, increasing the retention so they are not lost if nothing is merged to master in a while
177+ retention-days : 90
144178
145179 base-build-mac :
146180 runs-on : macos-latest
147181 needs : setup
148182 if : needs.setup.outputs.debug == 'false'
149183 steps :
150- - uses : actions/checkout@v4
184+ - uses : actions/checkout@v6
151185 - name : Setup JDK ${{env.release-jdk}}
152186 uses : actions/setup-java@v5
153187 with :
188+ distribution : ${{env.java-distribution}}
154189 java-version : ${{env.release-jdk}}
155190 distribution : ' temurin'
156191 - name : Cache Maven packages
157- uses : actions/cache@v3
192+ uses : actions/cache@v5
158193 with :
159194 path : ~/.m2
160195 key : ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
@@ -169,14 +204,15 @@ jobs:
169204 needs : setup
170205 if : needs.setup.outputs.debug == 'false'
171206 steps :
172- - uses : actions/checkout@v4
207+ - uses : actions/checkout@v6
173208 - name : Setup JDK ${{env.release-jdk}}
174209 uses : actions/setup-java@v5
175210 with :
211+ distribution : ${{env.java-distribution}}
176212 java-version : ${{env.release-jdk}}
177213 distribution : ' temurin'
178214 - name : Cache Maven packages
179- uses : actions/cache@v3
215+ uses : actions/cache@v5
180216 with :
181217 path : ~/.m2
182218 key : ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
@@ -225,22 +261,23 @@ jobs:
225261 needs : full-build-base
226262 runs-on : windows-latest
227263 steps :
228- - uses : actions/checkout@v4
264+ - uses : actions/checkout@v6
229265 - name : Setup JDK ${{env.release-jdk}}
230266 uses : actions/setup-java@v5
231267 with :
268+ distribution : ${{env.java-distribution}}
232269 java-version : ${{env.release-jdk}}
233270 distribution : ' temurin'
234271 - name : Download fat jar
235- uses : actions/download-artifact@v4
272+ uses : actions/download-artifact@v8
236273 with :
237274 name : evomaster.jar
238275 path : core/target
239276 - name : Build installation file
240277 shell : bash
241278 run : bash makeExecutable.sh WINDOWS
242279 - name : Upload installation file
243- uses : actions/upload-artifact@v4
280+ uses : actions/upload-artifact@v7
244281 with :
245282 name : evomaster.msi
246283 path : release/evomaster-${{env.evomaster-version}}.msi
@@ -251,22 +288,23 @@ jobs:
251288 needs : full-build-base
252289 runs-on : macos-latest
253290 steps :
254- - uses : actions/checkout@v3
291+ - uses : actions/checkout@v6
255292 - name : Setup JDK ${{env.release-jdk}}
256293 uses : actions/setup-java@v5
257294 with :
295+ distribution : ${{env.java-distribution}}
258296 java-version : ${{env.release-jdk}}
259297 distribution : ' temurin'
260298 - name : Download fat jar
261- uses : actions/download-artifact@v4
299+ uses : actions/download-artifact@v8
262300 with :
263301 name : evomaster.jar
264302 path : core/target
265303 - name : Build installation file
266304 shell : bash
267305 run : bash makeExecutable.sh OSX
268306 - name : Upload installation file
269- uses : actions/upload-artifact@v4
307+ uses : actions/upload-artifact@v7
270308 with :
271309 name : evomaster.dmg
272310 path : release/evomaster-${{env.evomaster-version}}.dmg
@@ -277,14 +315,15 @@ jobs:
277315 needs : full-build-base
278316 runs-on : ubuntu-latest
279317 steps :
280- - uses : actions/checkout@v4
318+ - uses : actions/checkout@v6
281319 - name : Setup JDK ${{env.release-jdk}}
282320 uses : actions/setup-java@v5
283321 with :
322+ distribution : ${{env.java-distribution}}
284323 java-version : ${{env.release-jdk}}
285324 distribution : ' temurin'
286325 - name : Download fat jar
287- uses : actions/download-artifact@v4
326+ uses : actions/download-artifact@v8
288327 with :
289328 name : evomaster.jar
290329 path : core/target
@@ -295,7 +334,7 @@ jobs:
295334 shell : bash
296335 run : ls -l release
297336 - name : Upload installation file
298- uses : actions/upload-artifact@v4
337+ uses : actions/upload-artifact@v7
299338 with :
300339 name : evomaster.deb
301340# JDK 17 and 21 use different suffixes... doesn't seem configurable :(
@@ -308,11 +347,11 @@ jobs:
308347 test-utils-js :
309348 runs-on : ubuntu-latest
310349 steps :
311- - uses : actions/checkout@v4
350+ - uses : actions/checkout@v6
312351 - name : Use Node.js
313- uses : actions/setup-node@v4
352+ uses : actions/setup-node@v6
314353 with :
315- node-version : 20
354+ node-version : 24
316355 - run : npm ci
317356 working-directory : ./test-utils/test-utils-js
318357 - run : npm test
@@ -322,9 +361,9 @@ jobs:
322361 test-utils-py :
323362 runs-on : ubuntu-latest
324363 steps :
325- - uses : actions/checkout@v4
364+ - uses : actions/checkout@v6
326365 - name : Set up Python
327- uses : actions/setup-python@v5
366+ uses : actions/setup-python@v6
328367 with :
329368 python-version : ' 3.10'
330369 - name : Install dependencies
@@ -345,14 +384,15 @@ jobs:
345384 needs : setup
346385 if : needs.setup.outputs.debug == 'false'
347386 steps :
348- - uses : actions/checkout@v4
387+ - uses : actions/checkout@v6
349388 - name : Setup JDK ${{env.build-jdk}}
350389 uses : actions/setup-java@v5
351390 with :
391+ distribution : ${{env.java-distribution}}
352392 java-version : ${{env.build-jdk}}
353393 distribution : ' temurin'
354394 - name : Cache Maven packages
355- uses : actions/cache@v3
395+ uses : actions/cache@v5
356396 with :
357397 path : ~/.m2
358398 key : ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
0 commit comments