File tree Expand file tree Collapse file tree 3 files changed +119
-0
lines changed Expand file tree Collapse file tree 3 files changed +119
-0
lines changed Original file line number Diff line number Diff line change 1+ #! /bin/bash
2+ set -e
3+ export CROSS_COMPILE=${CROSS_COMPILE:- riscv32-unknown-elf-}
4+
5+ # Check if at least one app is provided
6+ if [ $# -eq 0 ]; then
7+ echo " Usage: $0 <app1> [app2] [app3] ..."
8+ echo " Example: $0 hello echo cpubench"
9+ exit 1
10+ fi
11+
12+ APPS=" $@ "
13+ TIMEOUT=10
14+
15+ echo " [+] Will run apps: $APPS "
16+ echo " "
17+
18+ # Loop through each app
19+ for app in $APPS ; do
20+ echo " === Running $app ==="
21+
22+ # Build the app
23+ echo " [+] Building $app ..."
24+ make clean > /dev/null 2>&1
25+ if ! make " $app " > /dev/null 2>&1 ; then
26+ echo " [!] Failed to build $app "
27+ echo " "
28+ continue
29+ fi
30+
31+ # Run in QEMU with timeout
32+ echo " [+] Running $app in QEMU (timeout: ${TIMEOUT} s)..."
33+ set +e
34+ timeout ${TIMEOUT} s qemu-system-riscv32 -nographic -machine virt -bios none -kernel build/image.elf
35+ exit_code=$?
36+ set -e
37+
38+ # Print result
39+ if [ $exit_code -eq 124 ]; then
40+ echo " [!] $app timed out"
41+ elif [ $exit_code -eq 0 ]; then
42+ echo " [✓] $app completed successfully"
43+ else
44+ echo " [!] $app failed with exit code $exit_code "
45+ fi
46+ echo " "
47+ done
48+
49+ echo " [+] All apps tested"
Original file line number Diff line number Diff line change 1+ #! /bin/bash
2+ set -e
3+
4+ URL=" https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2025.06.13/riscv32-elf-ubuntu-22.04-gcc-nightly-2025.06.13-nightly.tar.xz"
5+
6+ echo " [+] Downloading RISC-V GNU toolchain..."
7+ wget " $URL "
8+ tar -xf " $( basename " $URL " ) "
9+
10+ echo " [+] Exporting toolchain path..."
11+ echo " $PWD /riscv/bin" >> " $GITHUB_PATH "
Original file line number Diff line number Diff line change 1+ name : Linmo CI
2+
3+ on :
4+ push :
5+ branches : [main, ci]
6+ pull_request :
7+ branches : [main, ci]
8+
9+ jobs :
10+ basic-tests :
11+ runs-on : ubuntu-24.04
12+ name : Basic Tests
13+
14+ steps :
15+ - name : Checkout
16+ uses : actions/checkout@v4
17+
18+ - name : Install dependencies
19+ run : |
20+ sudo apt-get update
21+ sudo apt-get install -y build-essential qemu-system-riscv32 wget
22+
23+ - name : Setup RISC-V Toolchain
24+ run : .ci/setup-toolchain.sh
25+
26+ - name : Verify toolchain installation
27+ run : |
28+ riscv32-unknown-elf-gcc --version
29+ qemu-system-riscv32 --version
30+ env :
31+ CROSS_COMPILE : riscv32-unknown-elf-
32+
33+ - name : Build Kernel
34+ run : |
35+ make clean
36+ make
37+ env :
38+ CROSS_COMPILE : riscv32-unknown-elf-
39+
40+ - name : Run Basic Apps
41+ id : test
42+ run : |
43+ output=$(.ci/run-qemu-tests.sh cpubench test64)
44+ echo "TEST_OUTPUT<<EOF" >> $GITHUB_OUTPUT
45+ echo "$output" >> $GITHUB_OUTPUT
46+ echo "EOF" >> $GITHUB_OUTPUT
47+
48+ - name : Comment PR with results
49+ if : github.event_name == 'pull_request'
50+ uses : actions/github-script@v7
51+ with :
52+ script : |
53+ const output = `${{ steps.test.outputs.TEST_OUTPUT }}`;
54+ github.rest.issues.createComment({
55+ issue_number: context.issue.number,
56+ owner: context.repo.owner,
57+ repo: context.repo.repo,
58+ body: `## Linmo QEMU App Test Result\n\n\`\`\`\n${output}\n\`\`\`\n\n_This is an automated report from CI._`
59+ });
You can’t perform that action at this time.
0 commit comments