| name: Hardware Test |
| |
| on: |
| workflow_dispatch: |
| 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 |
| |
| env: |
| HIL_JSON: test/hil/tinyusb.json |
| |
| jobs: |
| set-matrix: |
| runs-on: ubuntu-latest |
| outputs: |
| json: ${{ steps.set-matrix-json.outputs.matrix }} |
| steps: |
| - name: Checkout TinyUSB |
| uses: actions/checkout@v4 |
| |
| - name: Generate matrix json |
| id: set-matrix-json |
| run: | |
| MATRIX_JSON=$(python test/hil/hil_ci_set_matrix.py ${{ env.HIL_JSON }}) |
| echo "matrix=$MATRIX_JSON" |
| echo "matrix=$MATRIX_JSON" >> $GITHUB_OUTPUT |
| |
| # --------------------------------------- |
| # Build arm-gcc |
| # --------------------------------------- |
| build: |
| if: github.repository_owner == 'hathach' |
| needs: set-matrix |
| uses: ./.github/workflows/build_util.yml |
| strategy: |
| fail-fast: false |
| matrix: |
| toolchain: |
| - 'arm-gcc' |
| - 'esp-idf' |
| with: |
| build-system: 'cmake' |
| toolchain: ${{ matrix.toolchain }} |
| build-args: ${{ toJSON(fromJSON(needs.set-matrix.outputs.json)[matrix.toolchain]) }} |
| one-per-family: true |
| upload-artifacts: true |
| |
| # --------------------------------------- |
| # Hardware in the loop (HIL) |
| # self-hosted on local VM, for attached hardware checkout HIL_JSON |
| # --------------------------------------- |
| hil-tinyusb: |
| if: github.repository_owner == 'hathach' |
| needs: build |
| runs-on: [self-hosted, X64, hathach, hardware-in-the-loop] |
| steps: |
| - name: Clean workspace |
| run: | |
| echo "Cleaning up previous run" |
| rm -rf "${{ github.workspace }}" |
| mkdir -p "${{ github.workspace }}" |
| |
| - name: Checkout TinyUSB |
| uses: actions/checkout@v4 |
| with: |
| sparse-checkout: test/hil |
| |
| - name: Download Artifacts |
| uses: actions/download-artifact@v4 |
| with: |
| path: cmake-build |
| merge-multiple: true |
| |
| - name: Test on actual hardware |
| run: | |
| ls cmake-build/ |
| python3 test/hil/hil_test.py ${{ env.HIL_JSON }} |
| |
| # --------------------------------------- |
| # Hardware in the loop (HIL) |
| # self-hosted by HFP, build with IAR toolchain, for attached hardware checkout test/hil/hfp.json |
| # --------------------------------------- |
| hil-hfp: |
| if: github.repository_owner == 'hathach' |
| runs-on: [self-hosted, Linux, X64, hifiphile] |
| #env: |
| # IAR_LMS_BEARER_TOKEN: ${{ secrets.IAR_LMS_BEARER_TOKEN }} |
| steps: |
| - name: Clean workspace |
| run: | |
| echo "Cleaning up previous run" |
| rm -rf "${{ github.workspace }}" |
| mkdir -p "${{ github.workspace }}" |
| |
| - name: Toolchain version |
| run: iccarm --version |
| |
| - name: Checkout TinyUSB |
| uses: actions/checkout@v4 |
| |
| - name: Get build boards |
| run: | |
| MATRIX_JSON=$(python test/hil/hil_ci_set_matrix.py test/hil/hfp.json) |
| BUILD_ARGS=$(echo $MATRIX_JSON | jq -r '.["arm-gcc"] | join(" ")') |
| echo "BUILD_ARGS=$BUILD_ARGS" |
| echo "BUILD_ARGS=$BUILD_ARGS" >> $GITHUB_ENV |
| |
| - name: Get Dependencies |
| run: python3 tools/get_deps.py $BUILD_ARGS |
| |
| - name: Build |
| run: python3 tools/build.py --toolchain iar $BUILD_ARGS |
| |
| - name: Test on actual hardware (hardware in the loop) |
| run: python3 test/hil/hil_test.py hfp.json |