Skip to content

Commit 4430b91

Browse files
committed
feat: ci script associated with auto_utest.
1 parent ab1f438 commit 4430b91

File tree

2 files changed

+160
-0
lines changed

2 files changed

+160
-0
lines changed

.github/utest/default.cfg

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
CONFIG_RT_USING_CI_ACTION=y
+159
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
# Automation utest run script for the QEMU platform
2+
# Generate the corresponding config configuration for CI based on the configuration file under .github/utest.
3+
4+
name: action_auto_utest
5+
6+
on:
7+
schedule:
8+
- cron: '0 16 1 * *'
9+
push:
10+
branches:
11+
- master
12+
paths-ignore:
13+
- documentation/**
14+
- '**/README.md'
15+
- '**/README_zh.md'
16+
pull_request:
17+
branches:
18+
- master
19+
paths-ignore:
20+
- documentation/**
21+
- '**/README.md'
22+
- '**/README_zh.md'
23+
24+
permissions:
25+
contents: read
26+
27+
jobs:
28+
test:
29+
runs-on: ubuntu-22.04
30+
name: ${{ matrix.platform.UTEST }} - ${{ matrix.config_file }}
31+
if: github.repository_owner == 'RT-Thread'
32+
strategy:
33+
fail-fast: false
34+
matrix:
35+
platform:
36+
- { UTEST: "qemu-vexpress-a9", RTT_BSP: "bsp/qemu-vexpress-a9", QEMU_ARCH: "arm", QEMU_MACHINE: "vexpress-a9", SD_FILE: "sd.bin", RUN: "yes" }
37+
# - { UTEST: "qemu-virt64-aarch64", RTT_BSP: "bsp/qemu-virt64-aarch64", QEMU_ARCH: "aarch64", QEMU_MACHINE: "virt", SD_FILE: "sd.bin", RUN: "no" }
38+
- { UTEST: "qemu-virt64-riscv", RTT_BSP: "bsp/qemu-virt64-riscv", QEMU_ARCH: "riscv64", QEMU_MACHINE: "virt", SD_FILE: "None", RUN: "yes" }
39+
config_file:
40+
- "default.cfg"
41+
# - "rtduino/rtduino.cfg"
42+
env:
43+
TEST_QEMU_ARCH: ${{ matrix.platform.QEMU_ARCH }}
44+
TEST_QEMU_MACHINE: ${{ matrix.platform.QEMU_MACHINE }}
45+
TEST_BSP_ROOT: ${{ matrix.platform.RTT_BSP }}
46+
TEST_CONFIG_FILE: ${{ matrix.config_file }}
47+
TEST_SD_FILE: ${{ matrix.platform.SD_FILE }}
48+
RUN_FLAG: ${{ matrix.platform.RUN }}
49+
steps:
50+
- uses: actions/checkout@v4
51+
52+
- name: Install Tools
53+
shell: bash
54+
run: |
55+
wget https://raw.githubusercontent.com/RT-Thread/env/master/install_ubuntu.sh
56+
chmod 777 install_ubuntu.sh
57+
./install_ubuntu.sh
58+
git config --global http.postBuffer 524288000
59+
git remote -v
60+
git fetch origin
61+
62+
- name: Install Arm ToolChains
63+
if: ${{ matrix.platform.QEMU_ARCH == 'arm' && matrix.platform.UTEST != 'rtsmart/arm' && success() }}
64+
shell: bash
65+
run: |
66+
wget -q https://github.com/RT-Thread/toolchains-ci/releases/download/v1.3/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2
67+
sudo tar xjf gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2 -C /opt
68+
/opt/gcc-arm-none-eabi-10-2020-q4-major/bin/arm-none-eabi-gcc --version
69+
echo "RTT_EXEC_PATH=/opt/gcc-arm-none-eabi-10-2020-q4-major/bin" >> $GITHUB_ENV
70+
71+
- name: Install Arm Musl ToolChains
72+
if: ${{ matrix.platform.QEMU_ARCH == 'arm' && matrix.platform.UTEST == 'rtsmart/arm' && success() }}
73+
shell: bash
74+
run: |
75+
wget -q https://github.com/RT-Thread/toolchains-ci/releases/download/v1.7/arm-linux-musleabi_for_x86_64-pc-linux-gnu_stable.tar.bz2
76+
sudo tar xjf arm-linux-musleabi_for_x86_64-pc-linux-gnu_stable.tar.bz2 -C /opt
77+
/opt/arm-linux-musleabi_for_x86_64-pc-linux-gnu/bin/arm-linux-musleabi-gcc --version
78+
echo "RTT_EXEC_PATH=/opt/arm-linux-musleabi_for_x86_64-pc-linux-gnu/bin" >> $GITHUB_ENV
79+
echo "RTT_CC_PREFIX=arm-linux-musleabi-" >> $GITHUB_ENV
80+
81+
- name: Install RISC-V ToolChains
82+
if: ${{ matrix.platform.QEMU_ARCH == 'riscv64' && matrix.platform.UTEST != 'rtsmart/riscv64' && success() }}
83+
run: |
84+
wget -q https://github.com/RT-Thread/toolchains-ci/releases/download/v1.4/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14.tar.gz
85+
sudo tar zxvf riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14.tar.gz -C /opt
86+
/opt/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14/bin/riscv64-unknown-elf-gcc --version
87+
echo "RTT_EXEC_PATH=/opt/riscv64-unknown-elf-toolchain-10.2.0-2020.12.8-x86_64-linux-ubuntu14/bin" >> $GITHUB_ENV
88+
89+
- name: Install RISC-V Musl ToolChains
90+
if: ${{ matrix.platform.QEMU_ARCH == 'riscv64' && matrix.platform.UTEST == 'rtsmart/riscv64' && success() }}
91+
shell: bash
92+
run: |
93+
wget -q https://github.com/RT-Thread/toolchains-ci/releases/download/v1.7/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2
94+
sudo tar xjf riscv64-linux-musleabi_for_x86_64-pc-linux-gnu_latest.tar.bz2 -C /opt
95+
/opt/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin/riscv64-unknown-linux-musl-gcc --version
96+
echo "RTT_EXEC_PATH=/opt/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin" >> $GITHUB_ENV
97+
echo "RTT_CC_PREFIX=riscv64-unknown-linux-musl-" >> $GITHUB_ENV
98+
99+
- name: Install AARCH64 Musl ToolChains
100+
if: ${{ matrix.platform.QEMU_ARCH == 'aarch64' && matrix.platform.UTEST == 'rtsmart/aarch64' && success() }}
101+
shell: bash
102+
run: |
103+
wget -q https://github.com/RT-Thread/toolchains-ci/releases/download/v1.7/aarch64-linux-musleabi_for_x86_64-pc-linux-gnu_stable.tar.bz2
104+
sudo tar xjf aarch64-linux-musleabi_for_x86_64-pc-linux-gnu_stable.tar.bz2 -C /opt
105+
/opt/aarch64-linux-musleabi_for_x86_64-pc-linux-gnu/bin/aarch64-linux-musleabi-gcc --version
106+
echo "RTT_EXEC_PATH=/opt/aarch64-linux-musleabi_for_x86_64-pc-linux-gnu/bin" >> $GITHUB_ENV
107+
echo "RTT_CC_PREFIX=aarch64-linux-musleabi-" >> $GITHUB_ENV
108+
109+
- name: CPP11 Preprocessing Toolchain
110+
if: ${{ matrix.platform.QEMU_ARCH == 'arm' && matrix.platform.UTEST == 'components/cpp11' && success() }}
111+
shell: bash
112+
run: |
113+
sudo rm -f /opt/gcc-arm-none-eabi-10-2020-q4-major/arm-none-eabi/include/c++/10.2.1/{thread,mutex,condition_variable,future}
114+
sudo rm -f /opt/gcc-arm-none-eabi-10-2020-q4-major/arm-none-eabi/include/pthread.h
115+
sudo sh -c 'echo "" > /opt/gcc-arm-none-eabi-10-2020-q4-major/arm-none-eabi/include/sys/_pthreadtypes.h'
116+
sed -i 's/-fno-exceptions//g' $TEST_BSP_ROOT/rtconfig.py
117+
118+
- name: Build BSP
119+
run: |
120+
echo CONFIG_RT_USING_UTESTCASES=y >> $TEST_BSP_ROOT/.config
121+
cat .github/utest/$TEST_CONFIG_FILE >> $TEST_BSP_ROOT/.config
122+
scons --pyconfig-silent -C $TEST_BSP_ROOT
123+
scons -j$(nproc) --strict -C $TEST_BSP_ROOT
124+
125+
- name: QEMU Run Test
126+
if: ${{ matrix.platform.RUN == 'yes' && success() }}
127+
run: |
128+
if [ "$TEST_SD_FILE" != "None" ]; then
129+
dd if=/dev/zero of=$TEST_BSP_ROOT/sd.bin bs=1024 count=65536
130+
qemu-system-$TEST_QEMU_ARCH -nographic -M $TEST_QEMU_MACHINE -kernel $TEST_BSP_ROOT/rtthread.bin -nographic -sd $TEST_BSP_ROOT/sd.bin > qemu_output_${TEST_QEMU_ARCH}.log 2>&1 &
131+
else
132+
qemu-system-$TEST_QEMU_ARCH -nographic -M $TEST_QEMU_MACHINE -kernel $TEST_BSP_ROOT/rtthread.bin -nographic > qemu_output_${TEST_QEMU_ARCH}.log 2>&1 &
133+
fi
134+
135+
QEMU_PID=$!
136+
disown $QEMU_PID
137+
138+
# - name: Monitor qemu log
139+
# run: |
140+
# FAILURE_DETECTED=false
141+
# ERROR_LOGS=""
142+
143+
# tail -n 0 -f qemu_output_${TEST_QEMU_ARCH}.log | while read line; do
144+
# echo $line
145+
# if [[ "$line" == *"[ FAILED ] [ result ]"* ]]; then
146+
# ERROR_LOGS="$ERROR_LOGS$line"$'\n'
147+
# FAILURE_DETECTED=true
148+
# fi
149+
150+
# if [[ "$line" == *"[==========] [ utest ] end"* ]]; then
151+
# echo "Utest run completed. Exiting log monitoring..."
152+
# if $FAILURE_DETECTED; then
153+
# echo "Error: Failures detected in logs. Below are the failure details..."
154+
# echo "$ERROR_LOGS"
155+
# exit 1
156+
# fi
157+
# break
158+
# fi
159+
# done

0 commit comments

Comments
 (0)