-
Notifications
You must be signed in to change notification settings - Fork 40
268 lines (234 loc) · 10.6 KB
/
build_linux_ubuntu2204.yml
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
name: Build - linux ubuntu2204
on:
release:
types: [created]
pull_request:
types: [opened, synchronize, reopened]
paths-ignore:
- "tools/**"
- "docs/**"
- ".vscode/**"
- ".devcontainer/**"
- ".github/**"
- "!.github/workflows/build_linux_ubuntu2204.yml"
- "**.md"
jobs:
build-linux-ubuntu2204:
concurrency:
group: build-linux-ubuntu2204-${{ github.head_ref }}-${{ matrix.compiler }}-${{ matrix.build_type }}-${{ matrix.arch }}
cancel-in-progress: true
runs-on: ubuntu-latest
strategy:
matrix:
compiler: [gcc, clang]
build_type: [debug, release]
arch: [x64, x86]
include:
- compiler: gcc
build_type: debug
arch: x86
exclude:
- compiler: clang
arch: x86
container:
image: ghcr.io/ten-framework/ten_building_ubuntu2204
steps:
- uses: actions/checkout@v4
with:
fetch-depth: "0"
submodules: "true"
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Update version
run: |
git config --global --add safe.directory $(pwd)
python3 tools/version/update_version_in_ten_framework.py
python3 tools/version/check_version_in_ten_framework.py
- name: Set ulimit and sysctl
run: |
# Because there are concurrent test cases which involves many
# concurrent socket connections, we need to enlarge the maximum number
# of the opened file descriptor.
ulimit -n 102400
# Because there are concurrent test cases (in 'smoke' and
# 'integration') which will create many concurrent connections
# simutaneously, we increase the TCP listening backlog value to 8192.
sysctl -w net.core.somaxconn=8192
shell: bash
- name: Install gcc-multilib and g++-multilib
if: matrix.arch == 'x86'
run: |
apt-get update
apt-get install -y gcc-multilib g++-multilib
- name: Build
run: |
export PATH=$(pwd)/core/ten_gn:$PATH
echo $PATH
go env -w GOFLAGS="-buildvcs=false"
go1.20.12 download
rustup default nightly
df -h .
if [ "${{ matrix.arch }}" = "x86" ]; then
EXTRA_ARGS="is_clang=false ten_enable_ten_manager=false ten_manager_enable_frontend=false ten_rust_enable_tests=false ten_manager_enable_tests=false ten_enable_go_binding=false ten_enable_python_binding=false ten_enable_nodejs_binding=false ten_manager_enable_frontend=false ten_enable_integration_tests_prebuilt=false"
else
EXTRA_ARGS="is_clang=${{ matrix.compiler == 'gcc' && 'false' || 'true' }} log_level=1 enable_serialized_actions=true ten_enable_serialized_rust_action=true ten_rust_enable_gen_cargo_config=false ten_enable_cargo_clean=true ten_enable_go_lint=true ten_enable_rust_incremental_build=false ten_manager_enable_frontend=false ten_enable_integration_tests_prebuilt=false"
fi
tgn gen linux x64 ${{ matrix.build_type }} -- $EXTRA_ARGS
tgn build linux x64 ${{ matrix.build_type }}
df -h .
tree -I 'gen|obj' out
- name: Run Tests (ten_utils_unit_test)
env:
ASAN_OPTIONS: detect_leaks=1:detect_stack_use_after_return=1:color=always:unmap_shadow_on_exit=1:abort_on_error=1
MALLOC_CHECK_: 3
TEN_ENABLE_MEMORY_TRACKING: "true"
TEN_ENABLE_BACKTRACE_DUMP: "true"
run: |
chmod +x out/linux/x64/tests/standalone/ten_utils_unit_test
out/linux/x64/tests/standalone/ten_utils_unit_test || { echo "test failed"; exit 1; }
- name: Run Tests (ten_runtime_unit_test)
env:
ASAN_OPTIONS: detect_leaks=1:detect_stack_use_after_return=1:color=always:unmap_shadow_on_exit=1:abort_on_error=1
MALLOC_CHECK_: 3
TEN_ENABLE_MEMORY_TRACKING: "true"
TEN_ENABLE_BACKTRACE_DUMP: "true"
run: |
chmod +x out/linux/x64/tests/standalone/ten_runtime_unit_test
out/linux/x64/tests/standalone/ten_runtime_unit_test || { echo "test failed"; exit 1; }
- name: Run Tests (ten_runtime_smoke_test)
env:
ASAN_OPTIONS: detect_leaks=1:detect_stack_use_after_return=1:color=always:unmap_shadow_on_exit=1:abort_on_error=1
MALLOC_CHECK_: 3
TEN_ENABLE_MEMORY_TRACKING: "true"
TEN_ENABLE_BACKTRACE_DUMP: "true"
run: |
chmod +x out/linux/x64/tests/standalone/ten_runtime_smoke_test
out/linux/x64/tests/standalone/ten_runtime_smoke_test || { echo "test failed"; exit 1; }
- name: Run Tests (ten_rust standalone tests)
if: matrix.arch == 'x64'
env:
ASAN_OPTIONS: detect_leaks=1:detect_stack_use_after_return=1:color=always:unmap_shadow_on_exit=1:abort_on_error=1
MALLOC_CHECK_: 3
TEN_ENABLE_MEMORY_TRACKING: "true"
TEN_ENABLE_BACKTRACE_DUMP: "true"
run: |
cd out/linux/x64/tests/standalone/ten_rust
chmod +x unit_test
chmod +x integration_test
./unit_test || { echo "ten_rust unit test failed"; exit 1; }
./integration_test || { echo "ten_rust integration test failed"; exit 1; }
- name: Run Tests (ten_manager standalone tests)
if: matrix.arch == 'x64'
env:
ASAN_OPTIONS: detect_leaks=1:detect_stack_use_after_return=1:color=always:unmap_shadow_on_exit=1:abort_on_error=1
MALLOC_CHECK_: 3
TEN_ENABLE_MEMORY_TRACKING: "true"
TEN_ENABLE_BACKTRACE_DUMP: "true"
run: |
cd out/linux/x64/tests/standalone/ten_manager
chmod +x unit_test
./unit_test || { echo "ten_manager unit test failed"; exit 1; }
- name: Install Python dependencies via script
run: |
python .github/tools/setup_pytest_dependencies.py
- name: Run Tests (ten_manager pytest tests)
if: matrix.arch == 'x64'
env:
ASAN_OPTIONS: detect_leaks=1:detect_stack_use_after_return=1:color=always:unmap_shadow_on_exit=1:abort_on_error=1
MALLOC_CHECK_: 3
TEN_ENABLE_MEMORY_TRACKING: "true"
TEN_ENABLE_BACKTRACE_DUMP: "true"
run: |
cd out/linux/x64/
pytest -s tests/ten_manager/
- name: Run tests (ten_runtime integration tests)
if: matrix.arch == 'x64'
env:
ASAN_OPTIONS: detect_leaks=1:detect_stack_use_after_return=1:color=always:unmap_shadow_on_exit=1:abort_on_error=1
MALLOC_CHECK_: 3
TEN_ENABLE_MEMORY_TRACKING: "true"
TEN_ENABLE_BACKTRACE_DUMP: "true"
run: |
export PATH=$(pwd)/core/ten_gn:$PATH
cd out/linux/x64/
pytest -s tests/ten_runtime/integration/
- name: Update supports before upload or publish
if: matrix.arch == 'x64'
run: |
UPDATE_SUPPORTS_SCRIPT=$(pwd)/tools/supports/update_supports_in_manifest_json.py
cd out/linux/x64/ten_packages
ARRAY=(
"system/ten_runtime"
"system/ten_runtime_go"
"system/ten_runtime_python"
"addon_loader/python_addon_loader"
)
for item in "${ARRAY[@]}"; do
python3 ${UPDATE_SUPPORTS_SCRIPT} --os-arch-pairs linux:x64 --input-file ${item}/manifest.json --output-file ${item}/manifest.json --log-level 1
cat ${item}/manifest.json
done
shell: bash
- name: Upload tman
if: matrix.arch == 'x64'
uses: actions/upload-artifact@v4
with:
name: tman-linux-${{ matrix.compiler }}-${{ matrix.build_type }}-${{ matrix.arch }}
path: out/linux/x64/ten_manager/bin/tman
- name: Upload ten_packages
if: matrix.arch == 'x64'
uses: actions/upload-artifact@v4
with:
name: ten_packages-linux-${{ matrix.compiler }}-${{ matrix.build_type }}-${{ matrix.arch }}
path: |
out/linux/x64/ten_packages/system/ten_runtime
out/linux/x64/ten_packages/system/ten_runtime_go
out/linux/x64/ten_packages/system/ten_runtime_python
out/linux/x64/ten_packages/extension/default_extension_cpp
out/linux/x64/ten_packages/extension/default_extension_go
out/linux/x64/ten_packages/extension/default_extension_python
out/linux/x64/ten_packages/extension/default_async_extension_python
out/linux/x64/ten_packages/addon_loader/python_addon_loader
- name: Package assets
if: matrix.arch == 'x64' && startsWith(github.ref, 'refs/tags/')
run: |
cd out/linux/x64
zip -vr tman-linux-${{ matrix.compiler }}-${{ matrix.build_type }}-${{ matrix.arch }}.zip ten_manager/bin/tman
zip -vr ten_packages-linux-${{ matrix.compiler }}-${{ matrix.build_type }}-${{ matrix.arch }}.zip \
ten_packages/system/ten_runtime \
ten_packages/system/ten_runtime_go \
ten_packages/system/ten_runtime_python \
ten_packages/extension/default_extension_cpp \
ten_packages/extension/default_extension_go \
ten_packages/extension/default_extension_python \
ten_packages/extension/default_async_extension_python \
ten_packages/addon_loader/python_addon_loader
- name: Publish to release assets
uses: softprops/action-gh-release@v2
if: matrix.arch == 'x64' && startsWith(github.ref, 'refs/tags/')
with:
files: |
out/linux/x64/tman-linux-${{ matrix.compiler }}-${{ matrix.build_type }}-${{ matrix.arch }}.zip
out/linux/x64/ten_packages-linux-${{ matrix.compiler }}-${{ matrix.build_type }}-${{ matrix.arch }}.zip
- name: Publish release to TEN cloud store
if: ${{ matrix.arch == 'x64' && startsWith(github.ref, 'refs/tags/') && matrix.compiler == 'gcc' && matrix.build_type == 'release' && matrix.arch == 'x64' }}
run: |
TMAN_BIN=$(pwd)/out/linux/x64/ten_manager/bin/tman
cd out/linux/x64/ten_packages
ARRAY=(
"system/ten_runtime"
"system/ten_runtime_go"
"system/ten_runtime_python"
"extension/default_extension_cpp"
"extension/default_extension_go"
"extension/default_extension_python"
"extension/default_async_extension_python"
"addon_loader/python_addon_loader"
)
for item in "${ARRAY[@]}"; do
echo $item
cd $item
${TMAN_BIN} --verbose --user-token ${{ secrets.TEN_CLOUD_STORE }} publish
cd -
done
shell: bash