Skip to content

ci: Update release targets #631

ci: Update release targets

ci: Update release targets #631

Workflow file for this run

name: Rust
on:
push:
branches: [main, dev]
pull_request:
branches: [main, dev]
jobs:
read_msrv:
name: Read MSRV
uses: actions-rust-lang/msrv/.github/workflows/msrv.yml@main
formatting:
name: cargo fmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# Ensure rustfmt is installed and setup problem matcher
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
components: rustfmt
toolchain: nightly
- name: Rustfmt Check
uses: actions-rust-lang/rustfmt@v1
clippy:
name: clippy (stable)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Cache ~/.cargo
uses: actions/cache@v4
with:
path: ~/.cargo
key: ${{ runner.os }}-clippy-dotcargo
- name: Cache cargo build
uses: actions/cache@v4
with:
path: target
key: ${{ runner.os }}-clippy-cargo-build-target
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
components: clippy
- name: cargo clippy
run: cargo clippy --all-features
test:
name: "test (${{ matrix.os }} ${{ matrix.channel }})"
needs:
- read_msrv
runs-on: ${{ matrix.image }}
strategy:
fail-fast: false
matrix:
channel:
- MSRV
- stable
- nightly
os:
- Linux
- Windows
- macOS
include:
- os: Linux
image: ubuntu-latest
target: x86_64-unknown-linux-gnu
- os: Windows
image: windows-latest
target: x86_64-pc-windows-msvc
- os: macOS
image: macos-latest
target: aarch64-apple-darwin
- channel: msrv
rust: ${{ needs.read_msrv.outputs.msrv }}
- channel: stable
rust: stable
- channel: nightly
rust: nightly
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.rust }}
target: wasm32-unknown-unknown
- name: Cache ~/.cargo
uses: actions/cache@v4
with:
path: ~/.cargo
key: ${{ runner.os }}-test-dotcargo-${{ matrix.rust }}
- name: Cache cargo build
uses: actions/cache@v4
with:
path: target
key: ${{ runner.os }}-test-build-target-${{ matrix.rust }}
- name: build library (no default features)
run: cargo build -p magic-wormhole --target ${{ matrix.target }} --no-default-features
- name: build library (features=transit)
run: cargo build -p magic-wormhole --target ${{ matrix.target }} --no-default-features --features=transit
- name: build library (features=transfer)
run: cargo build -p magic-wormhole --target ${{ matrix.target }} --no-default-features --features=transfer
- name: build library (features=forwarding)
run: cargo build -p magic-wormhole --target ${{ matrix.target }} --no-default-features --features=forwarding
- name: build CLI
run: cargo build -p magic-wormhole-cli --target ${{ matrix.target }} --features=all
- name: build WASM
run: cargo build -p magic-wormhole --target wasm32-unknown-unknown --no-default-features --features transit --features transfer
- name: test
run: cargo test --verbose --workspace --features=all,native-tls,experimental
dist:
name: "dist (${{ matrix.os }})"
runs-on: ${{ matrix.image }}
strategy:
fail-fast: false
matrix:
os:
- Linux
- Windows
- macOS
include:
- os: Linux
image: ubuntu-latest
target: x86_64-unknown-linux-gnu
- os: Windows
image: windows-latest
target: x86_64-pc-windows-gnu
- os: macOS
image: macos-latest
target: aarch64-apple-darwin
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
target: ${{ matrix.target }}
- name: Cache ~/.cargo
uses: actions/cache@v4
with:
path: ~/.cargo
key: ${{ runner.os }}-test-dotcargo-stable
- name: Cache cargo build
uses: actions/cache@v4
with:
path: target
key: ${{ runner.os }}-test-build-target-stable
- name: Build
run: cargo build -p magic-wormhole-cli --target ${{ matrix.target }} --bins --locked --release
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: magic-wormhole-cli-${{ matrix.target }}
path: |
./target/${{ matrix.target }}/release/wormhole-rs
./target/${{ matrix.target }}/release/wormhole-rs.exe
if-no-files-found: error
coverage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: nightly
- uses: taiki-e/cache-cargo-install-action@v1
with:
tool: cargo-tarpaulin
- name: Cache ~/.cargo
uses: actions/cache@v4
with:
path: ~/.cargo
key: ${{ runner.os }}-coverage-dotcargo
- name: Cache cargo build
uses: actions/cache@v4
with:
path: target
key: ${{ runner.os }}-coverage-cargo-build-target
- name: Run tarpaulin
run: cargo tarpaulin --workspace --out Xml
- name: upload coverage
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
cargo-deny:
name: Cargo deny
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: nightly
- name: Checkout Rust toolcnain
uses: actions/checkout@v4
- uses: EmbarkStudios/cargo-deny-action@v1
semver:
name: semver
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: nightly
- name: Check semver
uses: obi1kenobi/cargo-semver-checks-action@v2