Faster CI with cargo-batch
This commit is contained in:
parent
10a3a8bbed
commit
c8e69a14eb
2 changed files with 66 additions and 144 deletions
156
.github/workflows/rust.yml
vendored
156
.github/workflows/rust.yml
vendored
|
@ -12,162 +12,37 @@ env:
|
|||
jobs:
|
||||
all:
|
||||
runs-on: ubuntu-20.04
|
||||
needs: [build, fmt, test, metapac_gen]
|
||||
needs: [build, test, metapac_gen]
|
||||
steps:
|
||||
- name: Done
|
||||
run: exit 0
|
||||
build:
|
||||
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:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: true
|
||||
- uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: stable
|
||||
- name: cache
|
||||
id: cache-target
|
||||
- name: Cache multiple paths
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: target
|
||||
key: ${{ runner.os }}-${{ matrix.target }}
|
||||
|
||||
# We have to append the "-D warnings" flag to .cargo/config rather than
|
||||
# using the RUSTFLAGS environment variable because if we set RUSTFLAGS
|
||||
# cargo will ignore the rustflags config in .cargo/config.
|
||||
- name: Check
|
||||
path: |
|
||||
~/.cargo/bin/
|
||||
~/.cargo/registry/index/
|
||||
~/.cargo/registry/cache/
|
||||
~/.cargo/git/db/
|
||||
target_ci
|
||||
key: rust3-${{ runner.os }}-${{ hashFiles('rust-toolchain.toml') }}
|
||||
- name: build
|
||||
run: |
|
||||
mkdir -p .cargo
|
||||
echo -e '[target."cfg(all())"]\nrustflags = ["-D", "warnings"]' >> .cargo/config
|
||||
cd ${{ matrix.package }} && RUSTFLAGS=-Dwarnings cargo check --features=${{ matrix.features }} --target=${{ matrix.target }}
|
||||
|
||||
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
|
||||
curl -L -o /usr/local/bin/cargo-batch https://github.com/embassy-rs/cargo-batch/releases/download/batch-0.1.0/cargo-batch
|
||||
chmod +x /usr/local/bin/cargo-batch
|
||||
./ci.sh
|
||||
rm -rf target_ci/*{,/release}/{build,deps,.fingerprint}/{lib,}{embassy,stm32}*
|
||||
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: stable
|
||||
- name: Test
|
||||
run: cd embassy && cargo test
|
||||
|
||||
|
@ -177,8 +52,5 @@ jobs:
|
|||
- uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: true
|
||||
- uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: stable
|
||||
- name: Generate pregenerated metapac
|
||||
run: cd stm32-metapac-gen; cargo run --release
|
||||
|
|
50
ci.sh
Executable file
50
ci.sh
Executable 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 \
|
Loading…
Reference in a new issue