Faster CI with cargo-batch

This commit is contained in:
Dario Nieuwenhuis 2021-11-15 20:14:59 +01:00
parent 10a3a8bbed
commit c8e69a14eb
2 changed files with 66 additions and 144 deletions

View file

@ -2,9 +2,9 @@ name: Rust
on: on:
push: push:
branches: [ staging, trying, master ] branches: [staging, trying, master]
pull_request: pull_request:
branches: [ master ] branches: [master]
env: env:
CARGO_TERM_COLOR: always CARGO_TERM_COLOR: always
@ -12,162 +12,37 @@ env:
jobs: jobs:
all: all:
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04
needs: [build, fmt, test, metapac_gen] needs: [build, test, metapac_gen]
steps: steps:
- name: Done - name: Done
run: exit 0 run: exit 0
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy:
matrix:
include:
- package: embassy
target: thumbv7em-none-eabi
- package: embassy
target: thumbv7em-none-eabi
features: log,executor-agnostic
- package: embassy
target: thumbv7em-none-eabi
features: defmt
- package: embassy
target: thumbv6m-none-eabi
features: defmt
- package: examples/std
target: x86_64-unknown-linux-gnu
- package: embassy-nrf
target: thumbv7em-none-eabi
features: nrf52805
- package: embassy-nrf
target: thumbv7em-none-eabi
features: nrf52810
- package: embassy-nrf
target: thumbv7em-none-eabi
features: nrf52811
- package: embassy-nrf
target: thumbv7em-none-eabi
features: nrf52820
- package: embassy-nrf
target: thumbv7em-none-eabi
features: nrf52832
- package: embassy-nrf
target: thumbv7em-none-eabi
features: nrf52833
- package: embassy-nrf
target: thumbv8m.main-none-eabihf
features: nrf9160-s
- package: embassy-nrf
target: thumbv8m.main-none-eabihf
features: nrf9160-ns
- package: embassy-nrf
target: thumbv8m.main-none-eabihf
features: nrf5340-app-s
- package: embassy-nrf
target: thumbv8m.main-none-eabihf
features: nrf5340-app-ns
- package: embassy-nrf
target: thumbv8m.main-none-eabihf
features: nrf5340-net
- package: embassy-nrf
target: thumbv7em-none-eabi
features: nrf52840
- package: embassy-nrf
target: thumbv7em-none-eabi
features: nrf52840,log
- package: embassy-nrf
target: thumbv7em-none-eabi
features: nrf52840,defmt
- package: examples/nrf
target: thumbv7em-none-eabi
- package: examples/rp
target: thumbv6m-none-eabi
- package: embassy-stm32
target: thumbv7em-none-eabi
features: stm32f411ce,defmt
- package: embassy-stm32
target: thumbv7em-none-eabi
features: stm32f429zi,log
- package: embassy-stm32
target: thumbv7em-none-eabi
features: stm32h755zi_cm7,defmt
- package: embassy-stm32
target: thumbv7em-none-eabi
features: stm32l476vg,defmt
- package: embassy-stm32
target: thumbv6m-none-eabi
features: stm32l072cz,defmt
- package: embassy-stm32
target: thumbv7m-none-eabi
features: stm32l151cb-a,defmt
- package: examples/stm32f4
target: thumbv7em-none-eabi
- package: examples/stm32l4
target: thumbv7em-none-eabi
- package: examples/stm32h7
target: thumbv7em-none-eabi
- package: examples/stm32l0
target: thumbv6m-none-eabi
- package: examples/stm32l1
target: thumbv7m-none-eabi
- package: examples/stm32wb55
target: thumbv7em-none-eabihf
- package: examples/stm32wl55
target: thumbv7em-none-eabihf
- package: examples/stm32f0
target: thumbv6m-none-eabi
- package: examples/stm32g0
target: thumbv6m-none-eabi
- package: examples/wasm
target: wasm32-unknown-unknown
- package: examples/stm32f1
target: thumbv7m-none-eabi
- package: examples/stm32f7
target: thumbv7em-none-eabihf
- package: examples/stm32u5
target: thumbv7em-none-eabihf
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
with: with:
submodules: true submodules: true
- uses: actions-rs/toolchain@v1 - name: Cache multiple paths
with:
toolchain: stable
- name: cache
id: cache-target
uses: actions/cache@v2 uses: actions/cache@v2
with: with:
path: target path: |
key: ${{ runner.os }}-${{ matrix.target }} ~/.cargo/bin/
~/.cargo/registry/index/
# We have to append the "-D warnings" flag to .cargo/config rather than ~/.cargo/registry/cache/
# using the RUSTFLAGS environment variable because if we set RUSTFLAGS ~/.cargo/git/db/
# cargo will ignore the rustflags config in .cargo/config. target_ci
- name: Check key: rust3-${{ runner.os }}-${{ hashFiles('rust-toolchain.toml') }}
- name: build
run: | run: |
mkdir -p .cargo curl -L -o /usr/local/bin/cargo-batch https://github.com/embassy-rs/cargo-batch/releases/download/batch-0.1.0/cargo-batch
echo -e '[target."cfg(all())"]\nrustflags = ["-D", "warnings"]' >> .cargo/config chmod +x /usr/local/bin/cargo-batch
cd ${{ matrix.package }} && RUSTFLAGS=-Dwarnings cargo check --features=${{ matrix.features }} --target=${{ matrix.target }} ./ci.sh
rm -rf target_ci/*{,/release}/{build,deps,.fingerprint}/{lib,}{embassy,stm32}*
fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: Check fmt
run: find -name '*.rs' | xargs rustfmt --check --skip-children --unstable-features --edition 2018
test: test:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: Test - name: Test
run: cd embassy && cargo test run: cd embassy && cargo test
@ -177,8 +52,5 @@ jobs:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
with: with:
submodules: true submodules: true
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: Generate pregenerated metapac - name: Generate pregenerated metapac
run: cd stm32-metapac-gen; cargo run --release run: cd stm32-metapac-gen; cargo run --release

50
ci.sh Executable file
View file

@ -0,0 +1,50 @@
#!/bin/bash
set -euo pipefail
export CARGO_TARGET_DIR=$PWD/target_ci
export RUSTFLAGS=-Dwarnings
find -name '*.rs' -not -path '*target*' -not -path '*stm32-metapac-gen/out/*' | xargs rustfmt --check --skip-children --unstable-features --edition 2018
cargo batch \
--- build --release --manifest-path embassy/Cargo.toml --target thumbv7em-none-eabi \
--- build --release --manifest-path embassy/Cargo.toml --target thumbv7em-none-eabi --features log,executor-agnostic \
--- build --release --manifest-path embassy/Cargo.toml --target thumbv7em-none-eabi --features defmt \
--- build --release --manifest-path embassy/Cargo.toml --target thumbv6m-none-eabi --features defmt \
--- build --release --manifest-path embassy-nrf/Cargo.toml --target thumbv7em-none-eabi --features nrf52805 \
--- build --release --manifest-path embassy-nrf/Cargo.toml --target thumbv7em-none-eabi --features nrf52810 \
--- build --release --manifest-path embassy-nrf/Cargo.toml --target thumbv7em-none-eabi --features nrf52811 \
--- build --release --manifest-path embassy-nrf/Cargo.toml --target thumbv7em-none-eabi --features nrf52820 \
--- build --release --manifest-path embassy-nrf/Cargo.toml --target thumbv7em-none-eabi --features nrf52832 \
--- build --release --manifest-path embassy-nrf/Cargo.toml --target thumbv7em-none-eabi --features nrf52833 \
--- build --release --manifest-path embassy-nrf/Cargo.toml --target thumbv8m.main-none-eabihf --features nrf9160-s \
--- build --release --manifest-path embassy-nrf/Cargo.toml --target thumbv8m.main-none-eabihf --features nrf9160-ns \
--- build --release --manifest-path embassy-nrf/Cargo.toml --target thumbv8m.main-none-eabihf --features nrf5340-app-s \
--- build --release --manifest-path embassy-nrf/Cargo.toml --target thumbv8m.main-none-eabihf --features nrf5340-app-ns \
--- build --release --manifest-path embassy-nrf/Cargo.toml --target thumbv8m.main-none-eabihf --features nrf5340-net \
--- build --release --manifest-path embassy-nrf/Cargo.toml --target thumbv7em-none-eabi --features nrf52840 \
--- build --release --manifest-path embassy-nrf/Cargo.toml --target thumbv7em-none-eabi --features nrf52840,log \
--- build --release --manifest-path embassy-nrf/Cargo.toml --target thumbv7em-none-eabi --features nrf52840,defmt \
--- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32f411ce,defmt \
--- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32f429zi,log \
--- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32h755zi_cm7,defmt \
--- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32l476vg,defmt \
--- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv6m-none-eabi --features stm32l072cz,defmt \
--- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7m-none-eabi --features stm32l151cb-a,defmt \
--- build --release --manifest-path examples/std/Cargo.toml --target x86_64-unknown-linux-gnu --out-dir out/examples/std \
--- build --release --manifest-path examples/nrf/Cargo.toml --target thumbv7em-none-eabi --out-dir out/examples/nrf \
--- build --release --manifest-path examples/rp/Cargo.toml --target thumbv6m-none-eabi --out-dir out/examples/rp \
--- build --release --manifest-path examples/stm32f0/Cargo.toml --target thumbv6m-none-eabi --out-dir out/examples/stm32f0 \
--- build --release --manifest-path examples/stm32f1/Cargo.toml --target thumbv7m-none-eabi --out-dir out/examples/stm32f1 \
--- build --release --manifest-path examples/stm32f4/Cargo.toml --target thumbv7em-none-eabi --out-dir out/examples/stm32f4 \
--- build --release --manifest-path examples/stm32f7/Cargo.toml --target thumbv7em-none-eabihf --out-dir out/examples/stm32f7 \
--- build --release --manifest-path examples/stm32g0/Cargo.toml --target thumbv6m-none-eabi --out-dir out/examples/stm32g0 \
--- build --release --manifest-path examples/stm32h7/Cargo.toml --target thumbv7em-none-eabi --out-dir out/examples/stm32h7 \
--- build --release --manifest-path examples/stm32l0/Cargo.toml --target thumbv6m-none-eabi --out-dir out/examples/stm32l0 \
--- build --release --manifest-path examples/stm32l1/Cargo.toml --target thumbv7m-none-eabi --out-dir out/examples/stm32l1 \
--- build --release --manifest-path examples/stm32l4/Cargo.toml --target thumbv7em-none-eabi --out-dir out/examples/stm32l4 \
--- build --release --manifest-path examples/stm32u5/Cargo.toml --target thumbv8m.main-none-eabihf --out-dir out/examples/stm32u5 \
--- build --release --manifest-path examples/stm32wb55/Cargo.toml --target thumbv7em-none-eabihf --out-dir out/examples/stm32wb55 \
--- build --release --manifest-path examples/stm32wl55/Cargo.toml --target thumbv7em-none-eabihf --out-dir out/examples/stm32wl55 \
--- build --release --manifest-path examples/wasm/Cargo.toml --target wasm32-unknown-unknown --out-dir out/examples/wasm \