fix hil #54
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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' | |
pull_request: | |
branches: [ master ] | |
paths: | |
- 'src/**' | |
- 'examples/**' | |
- 'lib/**' | |
- 'hw/**' | |
- 'test/hil/**' | |
- 'tools/get_deps.py' | |
- '.github/actions/**' | |
- '.github/workflows/hil_test.yml' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
if: github.repository_owner == 'hathach' | |
runs-on: ubuntu-latest | |
outputs: | |
BOARD_LIST: ${{ steps.parse_hil_json.outputs.BOARD_LIST }} | |
steps: | |
- name: Checkout TinyUSB | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.x' | |
- name: Parse HIL json | |
id: parse_hil_json | |
run: | | |
sudo apt install -y jq | |
# BOARD_LIST is all boards | |
BOARD_LIST=$(jq -r '.boards[] | "-b " + .name' test/hil/pi4.json | tr '\n' ' ') | |
echo "BOARD_LIST=$BOARD_LIST" | |
echo "BOARD_LIST=$BOARD_LIST" >> $GITHUB_OUTPUT | |
echo "BOARD_LIST=$BOARD_LIST" >> $GITHUB_ENV | |
# Non-Espresif boards | |
BOARD_NON_ESP=$(jq -r '.boards[] | select(.flasher != "esptool") | "-b " + .name' test/hil/pi4.json | tr '\n' ' ') | |
echo "BOARD_NON_ESP_LIST=$BOARD_NON_ESP_LIST" | |
echo "BOARD_NON_ESP_LIST=$BOARD_NON_ESP_LIST" >> $GITHUB_ENV | |
# Espressif boards | |
BOARD_ESP=$(jq -r '.boards[] | select(.flasher == "esptool") | "-b " + .name' test/hil/pi4.json | tr '\n' ' ') | |
echo "BOARD_ESP_LIST=$BOARD_ESP_LIST" | |
echo "BOARD_ESP_LIST=$BOARD_ESP_LIST" >> $GITHUB_ENV | |
- name: Setup ARM Toolchain | |
uses: ./.github/actions/setup_toolchain | |
with: | |
toolchain: 'arm-gcc' | |
- name: Setup ESP-IDF | |
if: env.BOARD_ESP_LIST != '' | |
uses: ./.github/actions/setup_toolchain | |
with: | |
toolchain: 'esp-idf' | |
toolchain_url: 'v5.1.1' | |
- name: Get Dependencies | |
uses: ./.github/actions/get_deps | |
with: | |
arg: ${{ env.BOARD_LIST }} | |
- name: Build | |
run: python tools/build.py $BOARD_NON_ESP_LIST | |
- name: Build Espressif | |
if: env.BOARD_ESP_LIST != '' | |
run: docker run --rm -v $PWD:/project -w /project espressif/idf:v5.1.1 python3 tools/build.py $BOARD_ESP_LIST | |
- name: Upload Artifacts for Hardware Testing | |
uses: actions/upload-artifact@v4 | |
with: | |
name: hil_pi4 | |
path: | | |
cmake-build/cmake-build-*/*/*/*.elf | |
cmake-build/cmake-build-*/*/*/*.bin | |
# For Espressif | |
cmake-build/cmake-build-*/*/*/bootloader/bootloader.bin | |
cmake-build/cmake-build-*/*/*/partition_table/partition-table.bin | |
cmake-build/cmake-build-*/*/*/config.env | |
cmake-build/cmake-build-*/*/*/flash_args | |
# --------------------------------------- | |
# Hardware in the loop (HIL) | |
# Current self-hosted instance is running on an RPI4. For attached hardware checkout hil_pi4.json | |
# --------------------------------------- | |
hil-pi4: | |
if: github.repository_owner == 'hathach' | |
needs: build | |
runs-on: [self-hosted, rp2040, nrf52840, esp32s3, hardware-in-the-loop] | |
env: | |
BOARD_LIST: ${{ needs.build.outputs.BOARD_LIST }} | |
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 TinyUSB | |
uses: actions/checkout@v4 | |
with: | |
sparse-checkout: test/hil | |
- name: Download Artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: hil_pi4 | |
path: cmake-build | |
- name: Test on actual hardware | |
run: | | |
echo "BOARD_LIST=$BOARD_LIST" | |
python3 test/hil/hil_test.py $BOARD_LIST pi4.json |