Skip to content

Commit 495e50b

Browse files
test windows build
1 parent 08a2e20 commit 495e50b

File tree

4 files changed

+487
-3
lines changed

4 files changed

+487
-3
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
name: 'prepare'
3+
description: 'Composite action to setup java, gradle, docker'
4+
5+
runs:
6+
using: "composite"
7+
steps:
8+
- name: Set up JDK 21
9+
uses: actions/[email protected]
10+
with:
11+
java-version: 21
12+
distribution: 'adopt'
13+
14+
- name: Setup Gradle
15+
uses: gradle/actions/setup-gradle@v4
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
---
2+
name: 'testResults'
3+
description: 'Collate test results and reports'
4+
5+
inputs:
6+
suiteName:
7+
description: 'name of the test suite'
8+
required: false
9+
default: 'test'
10+
11+
runs:
12+
using: "composite"
13+
steps:
14+
15+
- name: Gather test results
16+
shell: bash
17+
run: |
18+
rm -rf build/test-output
19+
FILES=`find . -name test-results`
20+
for FILE in $FILES
21+
do
22+
MODULE=`echo "$FILE" | sed -e 's@./\(.*\)/build/test-results@\1@'`
23+
TARGET="build/test-output/$MODULE"
24+
mkdir -p "$TARGET"
25+
# cp -rf ${FILE}/*/* "$TARGET"
26+
find ${FILE} -mindepth 2 -maxdepth 2 -print0 | xargs -0 -I{} cp -rf {} $TARGET
27+
done
28+
tree build/test-output/
29+
30+
# - name: Gather test reports
31+
# shell: bash
32+
# run: |
33+
# rm -rf build/test-reports
34+
# FILES=`find . -name reports -not -path './build/reports'`
35+
# for FILE in $FILES
36+
# do
37+
# MODULE=`echo "$FILE" | sed -e 's@./\(.*\)/build/reports@\1@'`
38+
# TARGET="build/test-reports/$MODULE"
39+
# SOURCE="${FILE}/tests/test"
40+
# mkdir -p "$TARGET"
41+
# if [[ -d "$SOURCE" ]]; then
42+
# cp -rf "$SOURCE" "$TARGET"
43+
# fi
44+
# done
45+
# if [[ -f 'build/reports/dependency-check-report.html' ]]; then
46+
# cp 'build/reports/dependency-check-report.html' 'build/test-reports'
47+
# fi
48+
# tree build/test-reports/
49+
50+
- name: Publish Test Results and Reports
51+
uses: actions/upload-artifact@v4
52+
if: always()
53+
with:
54+
name: ${{ inputs.suiteName }}
55+
if-no-files-found: ignore
56+
retention-days: 7
57+
path: |
58+
build/test-output/
59+
build/test-reports/
60+
61+
62+

.github/workflows/ci.yml

Lines changed: 143 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
name: CI
2+
name: ci
33

44
## RUNNERS
55
# ubuntu-24.04 = 4cpu, 16GB
@@ -17,8 +17,40 @@ env:
1717
GRADLE_OPTS: -Dorg.gradle.daemon=false -Dorg.gradle.parallel=true -Dorg.gradle.workers.max=4 -Xmx4096m
1818

1919
jobs:
20+
21+
spotless:
22+
runs-on: ubuntu-24.04
23+
environment: dev
24+
steps:
25+
- name: Checkout
26+
uses: actions/checkout@v4
27+
with:
28+
submodules: 'recursive'
29+
30+
- name: Prepare
31+
uses: ./.github/actions/prepare
32+
33+
- name: Spotless
34+
run: |
35+
./gradlew spotlessCheck
36+
37+
moduleChecks:
38+
runs-on: ubuntu-24.04
39+
environment: dev
40+
steps:
41+
- name: Checkout
42+
uses: actions/checkout@v4
43+
with:
44+
submodules: 'recursive'
45+
46+
- name: Prepare
47+
uses: ./.github/actions/prepare
48+
49+
- name: Check modules
50+
run: |
51+
./gradlew checkMavenCoordinateCollisions checkModuleDependencies
52+
2053
assemble:
21-
# 4 cpu, 16G ram
2254
runs-on: ubuntu-24.04
2355
environment: dev
2456
steps:
@@ -30,6 +62,7 @@ jobs:
3062
- name: Prepare
3163
uses: ./.github/actions/prepare
3264

65+
# TODO: remove me later
3366
# - name: ssh
3467
# uses: ryanchapman/gha-ssh@v1
3568
# timeout-minutes: 10
@@ -54,7 +87,7 @@ jobs:
5487
path: |
5588
./
5689
!./.git/**
57-
retention-days: 7
90+
retention-days: 1
5891

5992
unitTests:
6093
needs: assemble
@@ -85,6 +118,12 @@ jobs:
85118
echo "Prepared arguments for Gradle: $GRADLE_ARGS"
86119
./gradlew test $GRADLE_ARGS
87120
121+
- name: Test results
122+
uses: ./.github/actions/testResults
123+
if: always()
124+
with:
125+
suiteName: 'unitTests'
126+
88127
integrationTests:
89128
needs: assemble
90129
# 32 cpu, 128G ram
@@ -109,6 +148,12 @@ jobs:
109148
ls -la .
110149
./gradlew integrationTest
111150
151+
- name: Test results
152+
uses: ./.github/actions/testResults
153+
if: always()
154+
with:
155+
suiteName: 'integrationTests'
156+
112157
propertyTests:
113158
needs: assemble
114159
# 32 cpu, 128G ram
@@ -138,6 +183,12 @@ jobs:
138183
echo "Prepared arguments for Gradle: $GRADLE_ARGS"
139184
./gradlew --info propertyTest $GRADLE_ARGS
140185
186+
- name: Test results
187+
uses: ./.github/actions/testResults
188+
if: always()
189+
with:
190+
suiteName: 'propertyTests'
191+
141192
acceptanceTests:
142193
needs: assemble
143194
# 32 cpu, 128G ram
@@ -166,3 +217,92 @@ jobs:
166217
GRADLE_ARGS=$(echo $CLASSNAMES | awk '{for (i=1; i<=NF; i++) print "--tests",$i}')
167218
echo "Prepared arguments for Gradle: $GRADLE_ARGS"
168219
./gradlew acceptanceTest $GRADLE_ARGS
220+
221+
- name: Test results
222+
uses: ./.github/actions/testResults
223+
if: always()
224+
with:
225+
suiteName: 'acceptanceTests'
226+
227+
referenceTests:
228+
needs: assemble
229+
# 32 cpu, 128G ram
230+
runs-on: ubuntu-latest-128
231+
environment: dev
232+
steps:
233+
- name: Checkout
234+
uses: actions/checkout@v4
235+
with:
236+
submodules: 'recursive'
237+
238+
- name: Prepare
239+
uses: ./.github/actions/prepare
240+
241+
- name: Download workspace build
242+
uses: actions/download-artifact@v4
243+
with:
244+
name: workspace
245+
246+
- name: Fetch Reference Tests
247+
run: |
248+
if [ ! -d "eth-reference-tests/src/referenceTest/resources/consensus-spec-tests/tests" ]
249+
then
250+
./gradlew --no-daemon expandRefTests
251+
fi
252+
253+
# Compile separately so that we have the generated test files for splitting across nodes
254+
- name: CompileReferenceTests
255+
run: |
256+
./gradlew --no-daemon --parallel compileReferenceTestJava
257+
258+
- name: Reference Tests
259+
run: |
260+
CLASSNAMES=$(find . -iwholename "**/src/referenceTest/generated_tests/**/*Test.java" \
261+
| sed 's@.*/src/referenceTest/generated_tests/@@' \
262+
| sed 's@/@.@g' \
263+
| sed 's/.\{5\}$//' )
264+
GRADLE_ARGS=$(echo $CLASSNAMES | awk '{for (i=1; i<=NF; i++) print "--tests",$i}')
265+
echo "Prepared arguments for Gradle: $GRADLE_ARGS"
266+
./gradlew -x generateReferenceTestClasses -x processReferenceTestResources -x cleanReferenceTestClasses referenceTest $GRADLE_ARGS
267+
268+
- name: Test results
269+
uses: ./.github/actions/testResults
270+
if: always()
271+
with:
272+
suiteName: 'referenceTests'
273+
274+
windowsBuild:
275+
needs: [spotless, moduleChecks ]
276+
# 32 cpu, 128G ram
277+
runs-on: windows-2022
278+
environment: dev
279+
steps:
280+
- name: Checkout
281+
uses: actions/checkout@v4
282+
with:
283+
submodules: 'recursive'
284+
285+
- name: Prepare
286+
uses: ./.github/actions/prepareWindows
287+
288+
- name: Build
289+
shell: powershell
290+
run: |
291+
$Env:JAVA_TOOL_OPTIONS = "-Xmx2g"
292+
$Env:GRADLE_OPTS = "-Dorg.gradle.daemon=false -Dorg.gradle.parallel=true -Dorg.gradle.vfs.watch=false"
293+
cmd.exe /c gradlew.bat --no-daemon --parallel --build-cache
294+
295+
- name: Build
296+
shell: powershell
297+
run: |
298+
New-Item -ItemType Directory -Force build\test-results
299+
Get-ChildItem -Recurse | Where-Object {$_.FullName -match "test-results\\.*\\.*.xml"} | Copy-Item -Destination build\test-results\
300+
301+
- name: Publish Windows Test Results and Reports
302+
uses: actions/upload-artifact@v4
303+
if: always()
304+
with:
305+
if-no-files-found: ignore
306+
retention-days: 7
307+
path: |
308+
build/test-results/

0 commit comments

Comments
 (0)