chore: release #1876
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: 🧪 Tests and Checks | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
branches: ["**"] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
CARGO_INCREMENTAL: 0 | |
RUST_BACKTRACE: short | |
jobs: | |
changes: | |
runs-on: ubuntu-latest | |
permissions: | |
pull-requests: read | |
outputs: | |
examples: ${{ steps.filter.outputs.examples }} | |
rust: ${{ steps.filter.outputs.rust }} | |
deny: ${{ steps.filter.outputs.deny }} | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- uses: dorny/paths-filter@v3 | |
id: filter | |
with: | |
filters: | | |
examples: | |
- 'examples/**' | |
rust: | |
- '**/Cargo.*' | |
- '**/src/**' | |
- '**/tests/**' | |
- '**/build.rs' | |
- '**/migrations/**' | |
- '**/fixtures/**' | |
- '**/wit/**' | |
deny: | |
- 'deny.toml' | |
run-checks: | |
needs: changes | |
if: ${{ needs.changes.outputs.rust == 'true' }} | |
env: | |
SCCACHE_GHA_ENABLED: "true" | |
RUSTC_WRAPPER: "sccache" | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-14, windows-latest] | |
rust-toolchain: [stable, nightly, 1.75.0] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Use mold-linker | |
if: ${{ matrix.os == 'ubuntu-latest' }} | |
uses: rui314/setup-mold@v1 | |
- name: Install Rust Toolchain | |
id: toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
components: rustfmt, clippy | |
toolchain: ${{ matrix.rust-toolchain }} | |
- name: Override rust-toolchain.toml | |
run: rustup override set ${{steps.toolchain.outputs.name}} | |
- name: Cache Project | |
uses: Swatinem/rust-cache@v2 | |
with: | |
cache-on-failure: true | |
shared-key: check-${{ matrix.rust-toolchain }}-${{ matrix.os }} | |
save-if: ${{ github.event_name == 'push' }} | |
- name: Sccache | |
uses: mozilla-actions/[email protected] | |
- name: Check Format | |
run: cargo fmt --all -- --check | |
- name: Run Linter | |
run: cargo clippy --all -- -D warnings | |
- name: Install cargo-hakari | |
if: ${{ matrix.rust-toolchain == 'stable' }} | |
uses: taiki-e/install-action@v2 | |
with: | |
tool: cargo-hakari | |
- name: Check workspace-hack Cargo.toml is up-to-date | |
if: ${{ matrix.rust-toolchain == 'stable' }} | |
run: cargo hakari generate --diff | |
- name: Check Crates Depend on workspace-hack | |
if: ${{ matrix.rust-toolchain == 'stable' }} | |
run: cargo hakari manage-deps --dry-run | |
# Only "test" release build on push event. | |
- name: Test Release | |
if: ${{ matrix.rust-toolchain == 'stable' && github.event_name == 'push' }} | |
run: cargo build --workspace --release | |
run-deny: | |
needs: changes | |
if: ${{ needs.changes.outputs.rust == 'true' || needs.changes.outputs.examples == 'true' || needs.changes.outputs.deny == 'true' }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Use mold-linker | |
uses: rui314/setup-mold@v1 | |
- name: Install Rust Toolchain | |
uses: dtolnay/rust-toolchain@stable | |
- name: Cache Project | |
uses: Swatinem/rust-cache@v2 | |
with: | |
cache-on-failure: true | |
shared-key: run-deny-stable-ubuntu-latest | |
save-if: ${{ github.event_name == 'push' }} | |
# Check for security advisories | |
- name: Check Advisories | |
uses: EmbarkStudios/cargo-deny-action@v1 | |
with: | |
command: check advisories | |
continue-on-error: true | |
# Audit licenses, unreleased crates, and unexpected duplicate versions. | |
- name: Check Bans, Licenses, and Sources | |
uses: EmbarkStudios/cargo-deny-action@v1 | |
with: | |
command: check bans licenses sources | |
run-tests: | |
needs: changes | |
if: ${{ needs.changes.outputs.rust == 'true' }} | |
env: | |
SCCACHE_GHA_ENABLED: "true" | |
RUSTC_WRAPPER: "sccache" | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-13] | |
rust-toolchain: [stable, nightly] | |
default-features: [all, none] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Setup IPFS | |
uses: ibnesayeed/setup-ipfs@master | |
with: | |
run_daemon: false | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Use mold-linker | |
if: ${{ matrix.os == 'ubuntu-latest' }} | |
uses: rui314/setup-mold@v1 | |
- name: Install Rust Toolchain | |
id: toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ matrix.rust-toolchain }} | |
- name: Override rust-toolchain.toml | |
run: rustup override set ${{steps.toolchain.outputs.name}} | |
- name: Cache Project | |
uses: Swatinem/rust-cache@v2 | |
with: | |
cache-on-failure: true | |
shared-key: test-all-${{ matrix.rust-toolchain }}-${{ matrix.os }} | |
save-if: ${{ github.event_name == 'push' }} | |
- name: Sccache | |
uses: mozilla-actions/[email protected] | |
- name: Install nextest | |
uses: taiki-e/install-action@nextest | |
- name: Run Tests (all-features) | |
if: ${{ matrix.default-features == 'all' }} | |
run: cargo nextest run --workspace --profile ci --all-features | |
continue-on-error: ${{ matrix.rust-toolchain == 'nightly' }} | |
- name: Run Tests (no-default-features) | |
if: ${{ matrix.default-features == 'none' }} | |
run: cargo nextest run --profile ci --no-default-features --features "test-utils" | |
continue-on-error: ${{ matrix.rust-toolchain == 'nightly' }} | |
- name: Run Doc Tests | |
if: ${{ matrix.default-features == 'all' }} | |
run: cargo test --doc --workspace | |
continue-on-error: ${{ matrix.rust-toolchain == 'nightly' }} | |
run-tests-windows: | |
needs: changes | |
if: ${{ needs.changes.outputs.rust == 'true' }} | |
env: | |
RUSTFLAGS: -Dwarnings -Ctarget-feature=+crt-static | |
strategy: | |
fail-fast: false | |
matrix: | |
rust-toolchain: [stable, nightly] | |
default-features: [all, none] | |
runs-on: windows-latest | |
steps: | |
- name: Setup IPFS | |
uses: ibnesayeed/setup-ipfs@master | |
with: | |
run_daemon: false | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Install Rust Toolchain | |
id: toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ matrix.rust-toolchain }} | |
- name: Override rust-toolchain.toml | |
run: rustup override set ${{steps.toolchain.outputs.name}} | |
- name: Cache Project | |
uses: Swatinem/rust-cache@v2 | |
with: | |
cache-on-failure: true | |
shared-key: test-all-${{ matrix.rust-toolchain }}-windows-latest | |
save-if: ${{ github.event_name == 'push' }} | |
- name: Install nextest | |
uses: taiki-e/install-action@nextest | |
- name: Run Tests (all-features) | |
if: ${{ matrix.default-features == 'all' }} | |
run: cargo nextest run --workspace --profile ci --all-features | |
continue-on-error: ${{ matrix.rust-toolchain == 'nightly' }} | |
- name: Run Tests (no-default-features) | |
if: ${{ matrix.default-features == 'none' }} | |
run: cargo nextest run --profile ci --no-default-features --features "test-utils" | |
continue-on-error: ${{ matrix.rust-toolchain == 'nightly' }} | |
- name: Run Doc Tests | |
if: ${{ matrix.default-features == 'all' }} | |
run: cargo test --doc --workspace | |
continue-on-error: ${{ matrix.rust-toolchain == 'nightly' }} | |
run-cargo-tests: | |
needs: changes | |
if: ${{ needs.changes.outputs.rust == 'true' }} | |
env: | |
SCCACHE_GHA_ENABLED: "true" | |
RUSTC_WRAPPER: "sccache" | |
runs-on: ubuntu-latest | |
steps: | |
- name: Setup IPFS | |
uses: ibnesayeed/setup-ipfs@master | |
with: | |
run_daemon: false | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Install Rust Toolchain | |
id: toolchain | |
uses: dtolnay/rust-toolchain@stable | |
- name: Cache Project | |
uses: Swatinem/rust-cache@v2 | |
with: | |
cache-on-failure: true | |
shared-key: test-all-stable-ubuntu-latest | |
save-if: ${{ github.event_name == 'push' }} | |
- name: Sccache | |
uses: mozilla-actions/[email protected] | |
- name: Run Tests (all-features) | |
run: cargo test --workspace --all-features | |
run-docs: | |
needs: [changes] | |
if: ${{ needs.changes.outputs.rust == 'true' }} | |
env: | |
SCCACHE_GHA_ENABLED: "true" | |
RUSTC_WRAPPER: "sccache" | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Use mold-linker | |
uses: rui314/setup-mold@v1 | |
- name: Install Rust Toolchain | |
uses: dtolnay/rust-toolchain@stable | |
- name: Cache Project | |
uses: Swatinem/rust-cache@v2 | |
with: | |
cache-on-failure: true | |
shared-key: doc | |
save-if: ${{ github.event_name == 'push' }} | |
- name: Sccache | |
uses: mozilla-actions/[email protected] | |
- name: Run Doc(s) compilation | |
env: | |
RUSTDOCFLAGS: -Dwarnings | |
run: cargo doc --workspace --document-private-items | |
build-and-run-examples: | |
needs: changes | |
if: ${{ needs.changes.outputs.examples == 'true' }} | |
env: | |
SCCACHE_GHA_ENABLED: "true" | |
RUSTC_WRAPPER: "sccache" | |
runs-on: ubuntu-latest | |
steps: | |
- name: Setup IPFS | |
uses: ibnesayeed/setup-ipfs@master | |
with: | |
run_daemon: false | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Use mold-linker | |
uses: rui314/setup-mold@v1 | |
- name: Install Rust Toolchain | |
uses: dtolnay/rust-toolchain@nightly | |
- name: Cache Project | |
uses: Swatinem/rust-cache@v2 | |
with: | |
cache-on-failure: true | |
shared-key: cargo-examples | |
save-if: ${{ github.event_name == 'push' }} | |
- name: Sccache | |
uses: mozilla-actions/[email protected] | |
- name: Build example-websocket-relay | |
run: cargo build -p websocket-relay | |
- name: Run example-websocket-relay | |
shell: bash | |
run: timeout 10s cargo run -p websocket-relay || true |