name: HIL on: merge_group: workflow_dispatch: inputs: repository: description: "Owner and repository to test" required: true default: 'esp-rs/esp-hal' branch: description: "Branch, tag or SHA to checkout." required: true default: "main" env: CARGO_TERM_COLOR: always jobs: build-tests: name: Build Tests | ${{ matrix.target.soc }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: target: # RISC-V devices: # - soc: esp32c3 # rust-target: riscv32imc-unknown-none-elf - soc: esp32c6 rust-target: riscv32imac-unknown-none-elf # - soc: esp32h2 # rust-target: riscv32imac-unknown-none-elf # # Xtensa devices: # - soc: esp32s3 steps: - uses: actions/checkout@v4 if: github.event_name != 'workflow_dispatch' - uses: actions/checkout@v4 if: github.event_name == 'workflow_dispatch' with: repository: ${{ github.event.inputs.repository }} ref: ${{ github.event.inputs.branch }} # Install the Rust toolchain for RISC-V devices: - if: ${{ !contains(fromJson('["esp32", "esp32s2", "esp32s3"]'), matrix.target.soc) }} uses: dtolnay/rust-toolchain@v1 with: target: ${{ matrix.target.rust-target }} toolchain: nightly components: rust-src # Install the Rust toolchain for Xtensa devices: - if: contains(fromJson('["esp32", "esp32s2", "esp32s3"]'), matrix.target.soc) uses: esp-rs/xtensa-toolchain@v1.5 with: buildtargets: ${{ matrix.target.soc }} default: true ldproxy: false - name: Run tests run: cargo xtask build-tests ${{ matrix.target.soc }} - name: Prepare artifact run: | # Create the 'tests' directory if it doesn't exist mkdir -p tests # Find ELF files in the specified path and move them to 'tests' find "hil-test/target/${{ matrix.target.rust-target }}/release/deps/" -type f -exec file {} + | \ grep ELF | \ awk -F: '{print $1}' | \ xargs -I {} mv {} tests # Rename files in 'tests' by removing everything after the first dash for file in tests/*-*; do base_name="$(basename "$file" | cut -d'-' -f1)" mv "$file" "tests/$base_name" done - uses: actions/upload-artifact@v4 with: name: tests-${{ matrix.target.soc }} path: /home/runner/work/esp-hal/esp-hal/tests if-no-files-found: error hil: name: HIL Test | ${{ matrix.target.soc }} needs: build-tests runs-on: labels: [self-hosted, "${{ matrix.target.runner }}"] strategy: fail-fast: false matrix: target: # RISC-V devices: # - soc: esp32c3 # runner: rustboard - soc: esp32c6 runner: esp32c6-usb # - soc: esp32h2 # runner: esp32h2-usb # # Xtensa devices: # - soc: esp32s3 # runner: esp32s3-usb steps: - uses: actions/download-artifact@v4 with: name: tests-${{ matrix.target.soc }} path: tests - name: Run tests run: | export PATH=$PATH:/home/espressif/.cargo/bin for file in "tests"/*; do probe-rs run --chip ${{ matrix.target.soc }} "$file" done