Faster CI with cargo-batch
This commit is contained in:
parent
10a3a8bbed
commit
c8e69a14eb
2 changed files with 66 additions and 144 deletions
160
.github/workflows/rust.yml
vendored
160
.github/workflows/rust.yml
vendored
|
@ -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
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