ci: cargo test riot-rs-esp
as well
#2154
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: CI | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
merge_group: | |
schedule: | |
# run every morning at 3:17am | |
- cron: '17 3 * * *' | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
env: | |
SCCACHE_GHA_ENABLED: "true" | |
RUSTC_WRAPPER: "sccache" | |
strategy: | |
fail-fast: false | |
matrix: | |
partition: ["1/20", "2/20", "3/20", "4/20", "5/20", "6/20", "7/20", "8/20", "9/20", "10/20", "11/20", "12/20", "13/20", "14/20", "15/20", "16/20", "17/20", "18/20", "19/20", "20/20"] | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v4 | |
- name: Get git tree hash | |
id: get-tree-hash | |
run: | | |
git rev-parse HEAD^{tree} > .tree-hash | |
echo "hash=$(cat .tree-hash)" >> $GITHUB_OUTPUT | |
- uses: actions/cache@v4 | |
id: result-cache | |
with: | |
path: .tree-hash | |
key: success-${{ steps.get-tree-hash.outputs.hash }}-${{ matrix.partition }} | |
- name: Run sccache-cache | |
if: steps.result-cache.outputs.cache-hit != 'true' | |
uses: mozilla-actions/[email protected] | |
- id: get_toolchain | |
run: echo "toolchain=$(scripts/rust-toolchain.sh)" >> $GITHUB_OUTPUT | |
- name: Install toolchain | |
if: steps.result-cache.outputs.cache-hit != 'true' | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ steps.get_toolchain.outputs.toolchain }} | |
targets: riscv32imc-unknown-none-elf,riscv32imac-unknown-none-elf,thumbv6m-none-eabi,thumbv7m-none-eabi,thumbv7em-none-eabi,thumbv8m.main-none-eabi | |
# rust-src: Used for -Zbuild-std. | |
# rustfmt: Used by bindgen for liboscore | |
components: rust-src, rustfmt | |
- name: rust cache | |
if: steps.result-cache.outputs.cache-hit != 'true' | |
uses: Swatinem/rust-cache@v2 | |
with: | |
key: "${{ matrix.partition }}" | |
- uses: taiki-e/install-action@v2 | |
if: steps.result-cache.outputs.cache-hit != 'true' | |
with: | |
tool: cargo-binstall | |
- name: "installing prerequisites" | |
if: steps.result-cache.outputs.cache-hit != 'true' | |
run: | | |
git config --global init.defaultBranch main | |
git config --global user.email "[email protected]" | |
git config --global user.name "CI" | |
cargo binstall --no-confirm --no-symlinks --force --no-discover-github-token laze | |
echo "$HOME/.cargo/bin" >> $GITHUB_PATH | |
sudo apt-get install ninja-build gcc-arm-none-eabi | |
- name: "limit build unless nightly build" | |
if: github.event_name != 'schedule' | |
run: | | |
echo "LAZE_BUILDERS=ai-c3,espressif-esp32-c6-devkitc-1,microbit-v2,nrf52840dk,nrf5340dk,rpi-pico,rpi-pico-w,st-nucleo-h755zi-q,st-nucleo-wb55" >> "$GITHUB_ENV" | |
- name: "riot-rs compilation test" | |
if: steps.result-cache.outputs.cache-hit != 'true' | |
run: | | |
sccache --start-server || true # work around https://github.com/ninja-build/ninja/issues/2052 | |
CONFIG_WIFI_NETWORK='test' CONFIG_WIFI_PASSWORD='password' laze build --global --partition hash:${{ matrix.partition }} | |
cargo-test: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v4 | |
- id: get_toolchain | |
run: echo "toolchain=$(scripts/rust-toolchain.sh)" >> $GITHUB_OUTPUT | |
- name: Install toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ steps.get_toolchain.outputs.toolchain }} | |
# TODO: we'll eventually want to test the whole workspace with --workspace | |
# TODO: we'll eventually want to enable relevant features | |
- name: Run crate tests | |
run: | | |
cargo test --no-default-features --features no-boards -p riot-rs -p riot-rs-embassy -p riot-rs-runqueue -p riot-rs-threads -p riot-rs-macros | |
cargo test --features external-interrupts,'esp-hal/esp32c6','esp-hal-embassy/esp32c6' -p riot-rs-esp | |
cargo test --features external-interrupts,embassy-rp/rp2040 -p riot-rs-rp | |
cargo test --features external-interrupts,'embassy-nrf/nrf52840' -p riot-rs-nrf | |
cargo test --features external-interrupts,'embassy-stm32/stm32wb55rg' -p riot-rs-stm32 | |
cargo test -p rbi -p ringbuffer -p coapcore | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v4 | |
- id: get_toolchain | |
run: echo "toolchain=$(scripts/rust-toolchain.sh)" >> $GITHUB_OUTPUT | |
- name: Install toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ steps.get_toolchain.outputs.toolchain }} | |
# Required for checking riot-rs-esp | |
targets: riscv32imac-unknown-none-elf | |
components: clippy, rustfmt | |
- name: rust cache | |
uses: Swatinem/rust-cache@v2 | |
- uses: taiki-e/install-action@v2 | |
with: | |
tool: cargo-binstall | |
# Should run as soon as possible to avoid using unwanted crates | |
# `--force`ing is required as the installed binary could have been | |
# restored from cache. | |
- name: cargo-deny | |
run: | | |
cargo binstall --no-confirm --no-discover-github-token --force cargo-deny | |
cargo deny check bans licenses sources | |
# Must run after the cargo-deny job as it requires the downloaded | |
# cargo-deny binary. | |
- name: cargo-deny advisories | |
run: cargo deny check advisories | |
# Prevent sudden announcement of a new advisory from failing CI | |
continue-on-error: true | |
# TODO: we'll eventually want to check the whole workspace with --workspace | |
# TODO: we'll eventually want to check relevant feature combinations | |
# TODO: we may want to use --no-deps as well | |
- name: clippy | |
uses: clechasseur/rs-clippy-check@v3 | |
with: | |
args: --verbose --locked --features no-boards,external-interrupts -p riot-rs -p riot-rs-boards -p riot-rs-chips -p riot-rs-debug -p riot-rs-embassy -p riot-rs-macros -p riot-rs-random -p riot-rs-rt -p riot-rs-threads -p riot-rs-utils | |
- name: clippy for ESP32 | |
uses: clechasseur/rs-clippy-check@v3 | |
with: | |
args: --verbose --locked --target=riscv32imac-unknown-none-elf --features external-interrupts,esp-hal/esp32c6,esp-hal-embassy/esp32c6 -p riot-rs-esp | |
- name: clippy for RP | |
uses: clechasseur/rs-clippy-check@v3 | |
with: | |
args: --verbose --locked --features external-interrupts,embassy-rp/rp2040 -p riot-rs-rp | |
- name: clippy for nRF | |
uses: clechasseur/rs-clippy-check@v3 | |
with: | |
args: --verbose --locked --features external-interrupts,embassy-nrf/nrf52840 -p riot-rs-nrf | |
- name: clippy for STM32 | |
uses: clechasseur/rs-clippy-check@v3 | |
with: | |
args: --verbose --locked --features external-interrupts,embassy-stm32/stm32wb55rg -p riot-rs-stm32 | |
- name: rustdoc | |
run: RUSTDOCFLAGS='-D warnings' cargo doc -p riot-rs --features bench,csprng,external-interrupts,hwrng,no-boards,random,threading,usb | |
- name: rustdoc for ESP32 | |
run: RUSTDOCFLAGS='-D warnings' cargo doc --target=riscv32imac-unknown-none-elf --features external-interrupts,esp-hal/esp32c6,esp-hal-embassy/esp32c6 -p riot-rs-esp | |
- name: rustdoc for RP | |
run: RUSTDOCFLAGS='-D warnings' cargo doc --features external-interrupts,embassy-rp/rp2040 -p riot-rs-rp | |
- name: rustdoc for nRF | |
run: RUSTDOCFLAGS='-D warnings' cargo doc --features external-interrupts,embassy-nrf/nrf52840 -p riot-rs-nrf | |
- name: rustdoc for STM32 | |
run: RUSTDOCFLAGS='-D warnings' cargo doc --features external-interrupts,embassy-stm32/stm32wb55rg -p riot-rs-stm32 | |
- name: rustfmt | |
run: cargo fmt --check --all | |
- name: yamllint | |
uses: karancode/yamllint-github-action@master | |
with: | |
yamllint_comment: true # Insert inline PR comments | |
- name: Install taplo | |
run: cargo binstall --no-confirm --no-symlinks --no-discover-github-token --force taplo-cli | |
- name: Check toml formatting | |
run: taplo fmt --check | |
# TODO: cargo-sort is disabled for now, as it won't stop formatting / failing perfectly sorted Cargo.toml files. | |
# - name: Install cargo-sort | |
# run: cargo install --git=https://github.com/DevinR528/cargo-sort --rev 55ec89082466f6bb246d870a8d56d166a8e1f08b cargo-sort | |
# - name: Check item order of Cargo.toml files | |
# run: cargo sort --check --grouped --workspace --no-format | |
- name: Ruff | |
uses: chartboost/ruff-action@v1 | |
with: | |
args: format --check # Only check formatting for now | |
- name: typos | |
uses: crate-ci/[email protected] | |
- name: Check that the HTML support matrix is up to date | |
run: ./doc/gen_support_matrix_html.rs check doc/support_matrix.yml book/src/support_matrix.html | |
CI-success: | |
if: ${{ always() }} | |
runs-on: ubuntu-latest | |
name: Final Results | |
needs: [build] | |
steps: | |
- run: | | |
result="${{ needs.build.result }}" | |
if [[ $result == "success" || $result == "skipped" ]]; then | |
exit 0 | |
else | |
exit 1 | |
fi | |
- name: Report nightly failure | |
if: failure() && github.event_name == 'schedule' && github.repository == 'future-proof-iot/RIOT-rs' | |
uses: s3krit/[email protected] | |
with: | |
room_id: ${{ secrets.MATRIX_ROOM_ID }} | |
access_token: ${{ secrets.MATRIX_ACCESS_TOKEN }} | |
message: "The nightly build [failed](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})." | |
server: "matrix.org" |