name: ci
permissions:
pull-requests: write
contents: write
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
codestyle:
runs-on: ubuntu-latest
steps:
- name: setup rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: nightly
- name: checkout
uses: actions/checkout@v4
- run: cargo fmt --all -- --check
lint:
runs-on: ubuntu-latest
steps:
- name: setup rust
uses: dtolnay/rust-toolchain@stable
- name: checkout
uses: actions/checkout@v4
- run: cargo clippy --all-targets
compile:
runs-on: ubuntu-latest
steps:
- name: setup rust
uses: dtolnay/rust-toolchain@stable
- name: checkout
uses: actions/checkout@v4
- run: cargo check --all
test-wasm:
runs-on: ubuntu-latest
steps:
- name: setup rust
uses: dtolnay/rust-toolchain@stable
- name: checkout
uses: actions/checkout@v4
- name: build
run: cargo build --target wasm32-unknown-unknown --features js
- name: test
run: cargo test --features js
test:
strategy:
matrix:
rust: [stable, beta, nightly]
runs-on: ubuntu-latest
steps:
- name: install binaries
uses: taiki-e/install-action@v2
with:
tool: cargo-hack
- name: setup rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.rust }}
- name: checkout
uses: actions/checkout@v4
- name: test
run: cargo test
release:
if: github.event_name == 'push'
runs-on: ubuntu-latest
needs: [test]
steps:
- name: setup Rust
uses: dtolnay/rust-toolchain@stable
- name: checkout
uses: actions/checkout@v4
- name: release
uses: MarcoIeni/release-plz-action@v0.5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}