4
4
5
5
# Global Settings
6
6
env :
7
- # Used for the cache key, and godot-cpp checkout . Add version suffix to force clean build.
7
+ # Used for the cache key. Add version suffix to force clean build.
8
8
GODOT_BASE_BRANCH : ' 4.0'
9
9
SCONSFLAGS : verbose=yes warnings=extra werror=yes module_text_server_fb_enabled=yes
10
10
DOTNET_NOLOGO : true
@@ -25,52 +25,51 @@ jobs:
25
25
- name : Editor w/ Mono (target=editor)
26
26
cache-name : linux-editor-mono
27
27
target : editor
28
- tests : false # Disabled due freeze caused by mix Mono build and CI
29
28
sconsflags : module_mono_enabled=yes
30
- doc-test : true
31
29
bin : " ./bin/godot.linuxbsd.editor.x86_64.mono"
32
30
build-mono : true
31
+ tests : false # Disabled due freeze caused by mix Mono build and CI
32
+ doc-test : true
33
33
proj-conv : true
34
34
artifact : true
35
35
36
36
- name : Editor with doubles and GCC sanitizers (target=editor, tests=yes, dev_build=yes, precision=double, use_asan=yes, use_ubsan=yes, linker=gold)
37
37
cache-name : linux-editor-double-sanitizers
38
38
target : editor
39
- tests : true
40
39
# Debug symbols disabled as they're huge on this build and we hit the 14 GB limit for runners.
41
40
sconsflags : dev_build=yes debug_symbols=no precision=double use_asan=yes use_ubsan=yes linker=gold
42
- proj-test : true
43
- # Can be turned off for PRs that intentionally break compat with godot-cpp,
44
- # until both the upstream PR and the matching godot-cpp changes are merged.
45
- godot-cpp-test : true
46
41
bin : " ./bin/godot.linuxbsd.editor.dev.double.x86_64.san"
47
42
build-mono : false
43
+ tests : true
44
+ proj-test : true
45
+ # Generate an API dump for godot-cpp tests.
46
+ api-dump : true
48
47
# Skip 2GiB artifact speeding up action.
49
48
artifact : false
50
49
51
50
- name : Editor with clang sanitizers (target=editor, tests=yes, dev_build=yes, use_asan=yes, use_ubsan=yes, use_llvm=yes, linker=lld)
52
51
cache-name : linux-editor-llvm-sanitizers
53
52
target : editor
54
- tests : true
55
53
sconsflags : dev_build=yes use_asan=yes use_ubsan=yes use_llvm=yes linker=lld
56
54
bin : " ./bin/godot.linuxbsd.editor.dev.x86_64.llvm.san"
57
55
build-mono : false
56
+ tests : true
58
57
# Skip 2GiB artifact speeding up action.
59
58
artifact : false
60
59
61
60
- name : Template w/ Mono (target=template_release)
62
61
cache-name : linux-template-mono
63
62
target : template_release
64
- tests : false
65
63
sconsflags : module_mono_enabled=yes
66
64
build-mono : false
65
+ tests : false
67
66
artifact : true
68
67
69
68
- name : Minimal template (target=template_release, everything disabled)
70
69
cache-name : linux-template-minimal
71
70
target : template_release
72
- tests : false
73
71
sconsflags : modules_enabled_by_default=no disable_3d=yes disable_advanced_gui=yes deprecated=no minizip=no
72
+ tests : false
74
73
artifact : true
75
74
76
75
steps :
@@ -126,6 +125,24 @@ jobs:
126
125
run : |
127
126
./modules/mono/build_scripts/build_assemblies.py --godot-output-dir=./bin --godot-platform=linuxbsd
128
127
128
+ - name : Prepare artifact
129
+ if : ${{ matrix.artifact }}
130
+ run : |
131
+ strip bin/godot.*
132
+ chmod +x bin/godot.*
133
+
134
+ - name : Upload artifact
135
+ uses : ./.github/actions/upload-artifact
136
+ if : ${{ matrix.artifact }}
137
+ with :
138
+ name : ${{ matrix.cache-name }}
139
+
140
+ - name : Dump Godot API
141
+ uses : ./.github/actions/godot-api-dump
142
+ if : ${{ matrix.api-dump }}
143
+ with :
144
+ bin : ${{ matrix.bin }}
145
+
129
146
# Execute unit tests for the editor
130
147
- name : Unit tests
131
148
if : ${{ matrix.tests }}
@@ -143,79 +160,16 @@ jobs:
143
160
${{ matrix.bin }} --doctool --headless 2>&1 > /dev/null || true
144
161
git diff --color --exit-code && ! git ls-files --others --exclude-standard | sed -e 's/^/New doc file missing in PR: /' | grep 'xml$'
145
162
146
- # Test 3.x -> 4.x project converter
147
- - name : Test project converter
148
- if : ${{ matrix.proj-conv }}
149
- run : |
150
- mkdir converter_test
151
- cd converter_test
152
- touch project.godot
153
- ../${{ matrix.bin }} --headless --validate-conversion-3to4
154
- cd ..
155
- rm converter_test -rf
156
-
157
- # Download and extract zip archive with project, folder is renamed to be able to easy change used project
158
- - name : Download test project
159
- if : ${{ matrix.proj-test }}
160
- run : |
161
- wget https://github.com/godotengine/regression-test-project/archive/4.0.zip
162
- unzip 4.0.zip
163
- mv "regression-test-project-4.0" "test_project"
164
-
165
- # Editor is quite complicated piece of software, so it is easy to introduce bug here
166
- - name : Open and close editor (Vulkan)
167
- if : ${{ matrix.proj-test }}
168
- run : |
169
- xvfb-run ${{ matrix.bin }} --audio-driver Dummy --editor --quit --path test_project 2>&1 | tee sanitizers_log.txt || true
170
- misc/scripts/check_ci_log.py sanitizers_log.txt
171
-
172
- - name : Open and close editor (GLES3)
173
- if : ${{ matrix.proj-test }}
174
- run : |
175
- DRI_PRIME=0 xvfb-run ${{ matrix.bin }} --audio-driver Dummy --rendering-driver opengl3 --editor --quit --path test_project 2>&1 | tee sanitizers_log.txt || true
176
- misc/scripts/check_ci_log.py sanitizers_log.txt
177
-
178
- # Run test project
179
- - name : Run project
163
+ # Download and run the test project
164
+ - name : Test Godot project
165
+ uses : ./.github/actions/godot-project-test
180
166
if : ${{ matrix.proj-test }}
181
- run : |
182
- xvfb-run ${{ matrix.bin }} 40 --audio-driver Dummy --path test_project 2>&1 | tee sanitizers_log.txt || true
183
- misc/scripts/check_ci_log.py sanitizers_log.txt
184
-
185
- # Checkout godot-cpp
186
- - name : Checkout godot-cpp
187
- if : ${{ matrix.godot-cpp-test }}
188
- uses : actions/checkout@v3
189
167
with :
190
- repository : godotengine/godot-cpp
191
- ref : ${{ env.GODOT_BASE_BRANCH }}
192
- submodules : ' recursive'
193
- path : ' godot-cpp'
194
-
195
- # Dump GDExtension interface and API
196
- - name : Dump GDExtension interface and API for godot-cpp build
197
- if : ${{ matrix.godot-cpp-test }}
198
- run : |
199
- ${{ matrix.bin }} --headless --dump-gdextension-interface --dump-extension-api
200
- cp -f gdextension_interface.h godot-cpp/gdextension/
201
- cp -f extension_api.json godot-cpp/gdextension/
168
+ bin : ${{ matrix.bin }}
202
169
203
- # Build godot-cpp test extension
204
- - name : Build godot-cpp test extension
205
- if : ${{ matrix.godot-cpp-test }}
206
- run : |
207
- cd godot-cpp/test
208
- scons target=template_debug dev_build=yes
209
- cd ../..
210
-
211
- - name : Prepare artifact
212
- if : ${{ matrix.artifact }}
213
- run : |
214
- strip bin/godot.*
215
- chmod +x bin/godot.*
216
-
217
- - name : Upload artifact
218
- uses : ./.github/actions/upload-artifact
219
- if : ${{ matrix.artifact }}
170
+ # Test the project converter
171
+ - name : Test project converter
172
+ uses : ./.github/actions/godot-converter-test
173
+ if : ${{ matrix.proj-conv }}
220
174
with :
221
- name : ${{ matrix.cache-name }}
175
+ bin : ${{ matrix.bin }}
0 commit comments