-
Notifications
You must be signed in to change notification settings - Fork 153
Expand file tree
/
Copy pathlinux.yml
More file actions
102 lines (88 loc) · 3.58 KB
/
linux.yml
File metadata and controls
102 lines (88 loc) · 3.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
parameters:
name: ""
vmImage: ""
CC: ""
CXX: ""
JSEngine: ""
graphics_api: ""
enableSanitizers: false
jobs:
- job: ${{parameters.name}}
timeoutInMinutes: 30
pool:
vmImage: ${{parameters.vmImage}}
variables:
SANITIZER_FLAG: ${{coalesce(replace(format('{0}', parameters.enableSanitizers), 'True', 'ON'), 'OFF')}}
CC: ${{parameters.CC}}
CXX: ${{parameters.CXX}}
${{if eq(parameters.graphics_api, '')}}:
graphicsApiDefine: ""
${{else}}:
graphicsApiDefine: "-D GRAPHICS_API=${{parameters.graphics_api}}"
steps:
- template: cmake.yml
parameters:
vmImage: ${{parameters.vmImage}}
- script: |
sudo apt-get update
sudo apt-get install libjavascriptcoregtk-4.1-dev libgl1-mesa-dev libcurl4-openssl-dev libwayland-dev clang libvulkan-dev vulkan-validationlayers
displayName: "Install packages"
- script: |
cmake -G Ninja -B build/Linux -D JAVASCRIPTCORE_LIBRARY=/usr/lib/x86_64-linux-gnu/libjavascriptcoregtk-4.1.so -D NAPI_JAVASCRIPT_ENGINE=${{parameters.JSEngine}} -D CMAKE_BUILD_TYPE=RelWithDebInfo -D BX_CONFIG_DEBUG=ON -D OpenGL_GL_PREFERENCE=GLVND -D BABYLON_DEBUG_TRACE=ON -D ENABLE_SANITIZERS=$(SANITIZER_FLAG) .
ninja -C build/Linux
displayName: "Build X11"
- script: |
sudo sysctl -w kernel.core_pattern=core.%p
displayName: "Enable Core Dump"
# Memory leaks on CI is disabled due to memory leaks reported with xvfb and impossible to add to ignore list.
# See https://github.com/BabylonJS/BabylonNative/issues/1575
- script: |
cd build/Linux/Apps/Playground
# Command line to suppress false positive memory leaks :
# ASAN_OPTIONS=detect_leaks=1 LSAN_OPTIONS=suppressions=../../../../.github/asan_suppress.txt xvfb-run ./Playground app:///Scripts/validation_native.js
ulimit -c unlimited
xvfb-run ./Playground app:///Scripts/validation_native.js
displayName: "Validation Tests"
- script: |
cd build/Linux/Apps/UnitTests
ulimit -c unlimited
xvfb-run ./UnitTests
displayName: "Unit Tests"
- task: PublishBuildArtifacts@1
inputs:
artifactName: "${{parameters.name}} Rendered Pictures"
pathtoPublish: "build/Linux/Apps/Playground/Results"
displayName: "Publish Tests ${{parameters.name}} Results"
condition: always()
- task: PublishBuildArtifacts@1
inputs:
artifactName: "${{parameters.name}} Error Pictures"
pathtoPublish: "build/Linux/Apps/Playground/Errors"
displayName: "Publish Tests ${{parameters.name}} Errors"
condition: failed()
- task: CopyFiles@2
inputs:
sourceFolder: "build/Linux/Apps/Playground"
contents: |
Playground
core.*
targetFolder: "$(Build.ArtifactStagingDirectory)/Dumps"
cleanTargetFolder: false
displayName: "Stage Playground Core Dump"
condition: failed()
- task: CopyFiles@2
inputs:
sourceFolder: "build/Linux/Apps/UnitTests"
contents: |
UnitTests
core.*
targetFolder: "$(Build.ArtifactStagingDirectory)/Dumps"
cleanTargetFolder: false
displayName: "Stage UnitTests Core Dump"
condition: failed()
- task: PublishBuildArtifacts@1
inputs:
artifactName: "Core Dumps"
pathtoPublish: "$(Build.ArtifactStagingDirectory)/Dumps"
displayName: "Publish Core Dumps"
condition: failed()