-
Notifications
You must be signed in to change notification settings - Fork 33
154 lines (135 loc) · 6.1 KB
/
build_linux_ubuntu1804.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
name: Build - linux ubuntu1804
on:
release:
types: [created]
pull_request:
types: [opened, synchronize, reopened]
paths-ignore:
- "tools/**"
- "docs/**"
- ".vscode/**"
- ".devcontainer/**"
- ".github/**"
- "!.github/workflows/build_linux_ubuntu1804.yml"
- "**.md"
jobs:
build-linux-ubuntu1804:
concurrency:
group: build-linux-ubuntu1804-${{ github.head_ref }}-${{ matrix.build_type }}
cancel-in-progress: true
runs-on: ubuntu-22.04
strategy:
matrix:
build_type: [release]
container:
image: ghcr.io/ten-framework/ten_building_ubuntu1804
steps:
- name: Configure Git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Manual Checkout Repository
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git config --global --add safe.directory $(pwd)
git clone https://x-access-token:${GITHUB_TOKEN}@github.com/${{ github.repository }}.git .
git checkout ${{ github.event.pull_request.head.sha }}
git submodule update --init --recursive
- 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: Build
run: |
export PATH=$(pwd)/core/ten_gn/:$PATH
echo $PATH
go env -w GOFLAGS="-buildvcs=false"
rustup default nightly
tgn gen linux x64 ${{ matrix.build_type }} -- is_clang=false log_level=1 enable_serialized_actions=true ten_enable_integration_tests=false ten_enable_private_tests=false ten_enable_package_manager=false ten_rust_enable_gen_cargo_config=false ten_enable_cargo_clean=true
tgn build linux x64 ${{ matrix.build_type }}
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)
# 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: Install jq
if: startsWith(github.ref, 'refs/tags/')
run: apt-get update && apt-get install -y jq
- name: Package assets
if: startsWith(github.ref, 'refs/tags/')
run: |
cd out/linux/x64
zip -vr ten_packages-linux-ubuntu1804-x64-gcc-${{ matrix.build_type }}.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/extension/py_init_extension_cpp
- name: Upload Release Asset
if: startsWith(github.ref, 'refs/tags/')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ASSET_PATH: out/linux/x64/ten_packages-linux-ubuntu1804-x64-gcc-${{ matrix.build_type }}.zip
ASSET_NAME: ten_packages-linux-ubuntu1804-x64-gcc-${{ matrix.build_type }}.zip
run: |
TAG_NAME=${GITHUB_REF#refs/tags/}
echo "Tag: $TAG_NAME"
# Get the release information
response=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \
https://api.github.com/repos/${GITHUB_REPOSITORY}/releases/tags/$TAG_NAME)
# Check if the release was found
if echo "$response" | grep -q '"id":'; then
echo "Release found."
else
echo "Release not found. Exiting."
exit 1
fi
# Extract upload_url
upload_url=$(echo "$response" | jq -r .upload_url | sed -e "s/{?name,label}//")
echo "Upload URL: $upload_url"
# Upload the asset
curl -s -H "Authorization: token $GITHUB_TOKEN" \
-H "Content-Type: application/zip" \
--data-binary @"$ASSET_PATH" \
"$upload_url?name=$ASSET_NAME"
echo "Asset uploaded successfully."