-
Notifications
You must be signed in to change notification settings - Fork 1.1k
145 lines (131 loc) · 4.31 KB
/
hil_test.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
name: Hardware Test
on:
workflow_dispatch:
push:
paths:
- 'src/**'
- 'examples/**'
- 'lib/**'
- 'hw/**'
- 'test/hil/**'
- 'tools/get_deps.py'
- '.github/actions/**'
- '.github/workflows/hil_test.yml'
- '.github/workflows/ci_set_matrix.py'
pull_request:
branches: [ master ]
paths:
- 'src/**'
- 'examples/**'
- 'lib/**'
- 'hw/**'
- 'test/hil/**'
- 'tools/get_deps.py'
- '.github/actions/**'
- '.github/workflows/hil_test.yml'
- '.github/workflows/ci_set_matrix.py'
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout TinyUSB
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install ARM GCC
uses: carlosperate/arm-none-eabi-gcc-action@v1
with:
release: '12.3.Rel1'
- name: Parse HIL json
run: |
pip install click
sudo apt install -y jq
# BOARD_LIST=$(jq -r '.boards[] | "-b " + .name' test/hil/hil_pi4.json | tr '\n' ' ')
# skip espressif_s3_devkitm for now
BOARD_LIST=$(jq -r '.boards[] | select(.name != "espressif_s3_devkitm") | "-b " + .name' test/hil/hil_pi4.json | tr '\n' ' ')
echo "BOARD_LIST=$BOARD_LIST"
echo >> $GITHUB_ENV "BOARD_LIST=$BOARD_LIST"
- name: Checkout pico-sdk for rp2040
#if: contains($BOARD_LIST, 'rp2040')
uses: actions/checkout@v4
with:
repository: raspberrypi/pico-sdk
ref: develop
path: pico-sdk
- name: Get Dependencies
run: |
sudo apt install -y ninja-build
python3 tools/get_deps.py $BOARD_LIST
- name: Build
run: |
python tools/build_cmake.py $BOARD_LIST
env:
PICO_SDK_PATH: ${{ github.workspace }}/pico-sdk
# - name: Upload Artifacts for Hardware Testing (rp2040)
# if: contains(matrix.family, 'rp2040') && github.repository_owner == 'hathach'
# uses: actions/upload-artifact@v4
# with:
# name: raspberry_pi_pico
# path: |
# cmake-build/cmake-build-raspberry_pi_pico/*/*/*.elf
#
# - name: Upload Artifacts for Hardware Testing (nRF)
# if: contains(matrix.family, 'nrf') && github.repository_owner == 'hathach'
# uses: actions/upload-artifact@v4
# with:
# name: feather_nrf52840_express
# path: |
# cmake-build/cmake-build-feather_nrf52840_express/*/*/*.elf
#
# - name: Upload Artifacts for Hardware Testing (samd51)
# if: contains(matrix.family, 'samd5x_e5x') && github.repository_owner == 'hathach'
# uses: actions/upload-artifact@v4
# with:
# name: itsybitsy_m4
# path: |
# cmake-build/cmake-build-itsybitsy_m4/*/*/*.bin
# ---------------------------------------
# Hardware in the loop (HIL)
# Current self-hosted instance is running on an RPI4. For attached hardware checkout hil_pi4.json
# ---------------------------------------
hil-test:
if: github.repository_owner == 'hathach' && false
needs: build
runs-on: [self-hosted, rp2040, nrf52840, hardware-in-the-loop]
strategy:
fail-fast: false
matrix:
board:
- 'feather_nrf52840_express'
- 'itsybitsy_m4'
- 'raspberry_pi_pico'
steps:
- name: Clean workspace
run: |
echo "Cleaning up previous run"
rm -rf "${{ github.workspace }}"
mkdir -p "${{ github.workspace }}"
# USB bus on rpi4 is not stable, reset it before testing
- name: Reset USB bus
run: |
lsusb
lsusb -t
# reset VIA Labs 2.0 hub
sudo usbreset 001/002
- name: Checkout test/hil
uses: actions/checkout@v4
with:
sparse-checkout: test/hil
- name: Download Artifacts
uses: actions/download-artifact@v4
with:
name: ${{ matrix.board }}
path: cmake-build/cmake-build-${{ matrix.board }}
- name: Test on actual hardware
run: |
python3 test/hil/hil_test.py --board ${{ matrix.board }} hil_pi4.json