name: Test
on: [ push, pull_request ]
permissions:
contents: read
jobs:
test:
strategy:
matrix:
platform:
- host: macos-latest
name: macOS
- host: ubuntu-latest
name: Linux
- host: windows-latest
name: Windows
runs-on: ${{ matrix.platform.host }}
steps:
- uses: actions/checkout@v7
- name: Update Rust toolchain on ${{ matrix.platform.name }}
run: rustup update
- name: cargo test on ${{ matrix.platform.name }}
run: cargo test --features=experimental
crates_io_publish:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/') && github.event_name == 'push'
name: Publish to crates.io
needs: [test]
permissions:
contents: read
id-token: write
steps:
- name: Harden Runner
uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 with:
egress-policy: block
disable-sudo: true
allowed-endpoints: >
cdn.fwupd.org:443
crates.io:443
esm.ubuntu.com:443
github.com:443
index.crates.io:443
motd.ubuntu.com:443
static.crates.io:443
static.rust-lang.org:443
- name: Checkout repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 - uses: rust-lang/crates-io-auth-action@c6f97d42243bad5fab37ca0427f495c86d5b1a18 id: auth
- run: cargo publish
env:
CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}