Take keys by reference #180
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: | |
- 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 | |
with: | |
targets: "x86_64-unknown-linux-musl" # For some reason the cargo-fuzz install uses musl | |
- name: Install cargo fuzz | |
uses: taiki-e/install-action@v2 | |
with: | |
tool: cargo-fuzz | |
- 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` | |
}) |