Merge pull request #61 from liamkinne/cache-defmt #190
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: | |
- master | |
# Run on any PR | |
pull_request: | |
jobs: | |
fmt: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
- run: cargo fmt --all -- --check | |
test: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
- run: cargo test --features arrayvec | |
clippy: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
- run: cargo clippy -- -D warnings | |
fuzz: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: cargo-bins/cargo-binstall@main | |
- name: Install cargo fuzz | |
run: cargo binstall cargo-fuzz --no-confirm --target x86_64-unknown-linux-gnu | |
- name: Smoke-test fuzz targets | |
run: | | |
cargo fuzz build --sanitizer none | |
for target in $(cargo fuzz list) ; do | |
cargo fuzz run --sanitizer none $target -- -max_total_time=10 | |
done | |
binary-size: | |
runs-on: ubuntu-latest | |
permissions: | |
actions: read | |
pull-requests: write | |
steps: | |
- uses: dtolnay/rust-toolchain@nightly | |
- uses: actions/cache@v3 | |
id: cache-cargo | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
./example/target/ | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- run: rustup target add thumbv7em-none-eabihf | |
- run: rustup component add rust-src llvm-tools | |
- if: steps.cache-cargo.outputs.cache-hit != 'true' | |
run: cargo install cargo-binutils | |
- name: Check out the repo with the full git history | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: '0' | |
- name: Build new binary | |
working-directory: ./example | |
run: | | |
echo 'RESULT<<EOF' >> $GITHUB_OUTPUT | |
cargo size --release >> $GITHUB_OUTPUT | |
echo 'EOF' >> $GITHUB_OUTPUT | |
id: new-size | |
- name: Save binary | |
run: | | |
mv ./example/target/thumbv7em-none-eabihf/release/example ./example/target/thumbv7em-none-eabihf/release/original.elf | |
- name: If it's a PR checkout the base commit | |
if: ${{ github.event.pull_request }} | |
run: git checkout ${{ github.event.pull_request.base.sha }} | |
- name: Rebuild with the base commit | |
if: ${{ github.event.pull_request }} | |
working-directory: ./example | |
run: cargo build --release | |
- name: Run Bloaty to compare both output files | |
if: ${{ github.event.pull_request }} | |
id: bloaty-comparison | |
uses: carlosperate/bloaty-action@v1 | |
with: | |
bloaty-args: ./example/target/thumbv7em-none-eabihf/release/original.elf -- ./example/target/thumbv7em-none-eabihf/release/example | |
output-to-summary: true | |
- name: Add a PR comment with the bloaty diff | |
if: ${{ github.event.pull_request }} | |
continue-on-error: true | |
uses: actions/github-script@v7 | |
with: | |
script: | | |
github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: `## PR build size\n \`\`\`\n${{ join(steps.new-size.outputs.*, '\n') }}\n\`\`\`\n ### Diff\n\`\`\`\n${{ steps.bloaty-comparison.outputs.bloaty-output-encoded }}\`\`\`\n` | |
}) |