Update websocket-relay README with brew tips #911
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@v2 | |
id: filter | |
with: | |
filters: | | |
examples: | |
- 'examples/**' | |
rust: | |
- '**/Cargo.*' | |
- '**/src/**' | |
- '**/tests/**' | |
- '**/config/**' | |
- '**/build.rs' | |
- '**/migrations/**' | |
- '**/fixtures/**' | |
deny: | |
- 'deny.toml' | |
run-checks: | |
needs: changes | |
if: ${{ needs.changes.outputs.rust == 'true' || needs.changes.outputs.examples == 'true' }} | |
env: | |
SCCACHE_GHA_ENABLED: "true" | |
RUSTC_WRAPPER: "sccache" | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
rust-toolchain: [stable, nightly] | |
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/sccache-action@v0.0.3 | |
- name: Check Format | |
run: cargo fmt --all -- --check | |
- name: Run Linter | |
run: cargo clippy --all -- -D warnings | |
- name: Verify Publishing of crates | |
uses: katyo/publish-crates@v2 | |
if: ${{ matrix.rust-toolchain == 'stable' && github.event_name == 'push' }} | |
with: | |
dry-run: true | |
# 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: 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-latest] | |
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/sccache-action@v0.0.3 | |
- 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 | |
- name: Run Tests (no-default-features) | |
if: ${{ matrix.default-features == 'none' }} | |
run: cargo nextest run --workspace --profile ci --no-default-features --features "test-utils" | |
- name: Run Doc Tests | |
if: ${{ matrix.default-features == 'all' }} | |
run: cargo test --doc --workspace | |
run-tests-windows: | |
needs: changes | |
if: ${{ needs.changes.outputs.rust == 'true' }} | |
env: | |
RUSTFLAGS: -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 --workspace --profile ci --no-default-features --features "test-utils" | |
- name: Run Doc Tests | |
if: ${{ matrix.default-features == 'all' }} | |
run: cargo test --doc --workspace | |
continue-on-error: ${{ matrix.rust-toolchain == 'nightly' }} | |
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: | |
shared-key: doc | |
save-if: ${{ github.event_name == 'push' }} | |
- name: Sccache | |
uses: mozilla-actions/sccache-action@v0.0.3 | |
- name: Run Doc(s) compilation | |
env: | |
RUSTDOCFLAGS: -Dwarnings | |
run: cargo doc --workspace --document-private-items |