name: ci-build on: push: paths: - 'clients/**' - 'common/**' - 'explorer-api/**' - 'gateway/**' - 'integrations/**' - 'mixnode/**' - 'sdk/lib/socks5-listener/**' - 'sdk/rust/nym-sdk/**' - 'service-providers/**' - 'nym-api/**' - 'nym-outfox/**' - 'tools/nym-cli/**' - 'tools/nym-nr-query/**' - 'tools/ts-rs-cli/**' - 'Cargo.toml' pull_request: paths: - 'clients/**' - 'common/**' - 'explorer-api/**' - 'gateway/**' - 'integrations/**' - 'mixnode/**' - 'sdk/lib/socks5-listener/**' - 'sdk/rust/nym-sdk/**' - 'service-providers/**' - 'nym-api/**' - 'nym-outfox/**' - 'tools/nym-cli/**' - 'tools/nym-nr-query/**' - 'tools/ts-rs-cli/**' - 'Cargo.toml' workflow_dispatch: jobs: build: strategy: fail-fast: false matrix: os: [custom-linux, custom-runner-mac-m1] runs-on: ${{ matrix.os }} env: CARGO_TERM_COLOR: always steps: - name: Install Dependencies (Linux) run: sudo apt-get update && sudo apt-get -y install libwebkit2gtk-4.0-dev build-essential curl wget libssl-dev libgtk-3-dev libudev-dev squashfs-tools protobuf-compiler continue-on-error: true if: matrix.os == 'custom-linux' - name: Check out repository code uses: actions/checkout@v4 - name: Install rust toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true components: rustfmt, clippy - name: Check formatting uses: actions-rs/cargo@v1 with: command: fmt args: --all -- --check - name: Build all binaries uses: actions-rs/cargo@v1 with: command: build # Enable wireguard by default on linux only args: --workspace --features wireguard # while disabled by default, this build ensures nothing is broken within # `axum` feature - name: Build with `axum` feature uses: actions-rs/cargo@v1 with: command: build args: --features axum - name: Build all examples if: matrix.os == 'custom-linux' uses: actions-rs/cargo@v1 with: command: build args: --workspace --examples --features wireguard - name: Run all tests if: matrix.os == 'custom-linux' uses: actions-rs/cargo@v1 with: command: test args: --workspace --features wireguard - name: Run expensive tests if: (github.ref == 'refs/heads/develop' || github.event.pull_request.base.ref == 'develop' || github.event.pull_request.base.ref == 'master') && matrix.os == 'custom-linux' uses: actions-rs/cargo@v1 with: command: test args: --workspace --features wireguard -- --ignored - name: Annotate with clippy checks if: matrix.os == 'custom-linux' uses: actions-rs/clippy-check@v1 continue-on-error: true with: token: ${{ secrets.GITHUB_TOKEN }} args: --workspace --features wireguard - name: Clippy uses: actions-rs/cargo@v1 with: command: clippy args: --workspace --all-targets --features wireguard,axum -- -D warnings