name: Build on: push: branches: - main - master pull_request: {} env: RUST_MSRV: 1.61.0 jobs: msrv: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/cache@v1 with: path: | ~/.cargo/bin ~/.cargo/registry/index ~/.cargo/registry/cache ~/.cargo/git/db/ target key: "${{ runner.os }}-cargo-build-msrv-${{ hashFiles('**/Cargo.lock') }}" - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: ${{ env.RUST_MSRV }} override: true - uses: actions-rs/cargo@v1 with: command: check # typical build with various feature combinations build: name: Build runs-on: ${{ matrix.os }} continue-on-error: ${{ matrix.experimental }} strategy: matrix: os: [ubuntu-latest] flags: - "" - "--features debugging" - "--features metadata,serde,internals" - "--features unchecked,serde,metadata,internals,debugging" - "--features sync,serde,metadata,internals,debugging" - "--features no_position,serde,metadata,internals,debugging" - "--features no_optimize,serde,metadata,internals,debugging" - "--features no_float,serde,metadata,internals,debugging" - "--features f32_float,serde,metadata,internals,debugging" - "--features decimal,serde,metadata,internals,debugging" - "--features no_custom_syntax,serde,metadata,internals,debugging" - "--features no_float,decimal" - "--tests --features only_i32,serde,metadata,internals,debugging" - "--features only_i64,serde,metadata,internals,debugging" - "--features no_index,serde,metadata,internals,debugging" - "--features no_object,serde,metadata,internals,debugging" - "--features no_function,serde,metadata,internals,debugging" - "--features no_module,serde,metadata,internals,debugging" - "--features no_time,serde,metadata,internals,debugging" - "--features no_closure,serde,metadata,internals,debugging" - "--features unicode-xid-ident,serde,metadata,internals,debugging" - "--features sync,no_time,no_function,no_float,no_position,no_optimize,no_module,no_closure,no_custom_syntax,metadata,serde,unchecked,debugging" - "--features no_time,no_function,no_float,no_position,no_index,no_object,no_optimize,no_module,no_closure,no_custom_syntax,unchecked" toolchain: [stable] experimental: [false] include: # smoketests for different toolchains - {toolchain: stable, os: windows-latest, experimental: false, flags: ""} - {toolchain: stable, os: macos-latest, experimental: false, flags: ""} - {toolchain: beta, os: ubuntu-latest, experimental: false, flags: ""} - {toolchain: nightly, os: ubuntu-latest, experimental: true, flags: ""} fail-fast: false steps: - name: Checkout uses: actions/checkout@v2 - name: Setup Toolchain uses: actions-rs/toolchain@v1 with: toolchain: ${{matrix.toolchain}} override: true - name: Test uses: actions-rs/cargo@v1 with: command: test args: ${{matrix.flags}} feature_powerset: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions-rs/toolchain@v1 with: toolchain: stable override: true - uses: taiki-e/install-action@v2 with: tool: cargo-hack@0.5.25 - run: cargo hack check --feature-powerset --depth 2 --no-dev-deps --exclude-features "stdweb wasm-bindgen f32_float" # no-std builds are a bit more extensive to test no_std_build: name: NoStdBuild runs-on: ${{matrix.os}} continue-on-error: ${{matrix.experimental}} strategy: matrix: include: - {os: ubuntu-latest, flags: "--profile unix", experimental: false} - {os: windows-latest, flags: "--profile windows", experimental: true} - {os: macos-latest, flags: "--profile macos", experimental: false} steps: - name: Checkout uses: actions/checkout@v2 - name: Setup Toolchain uses: actions-rs/toolchain@v1 with: toolchain: nightly override: true - name: Build Project uses: actions-rs/cargo@v1 with: command: build args: --manifest-path=no_std/no_std_test/Cargo.toml ${{matrix.flags}} wasm: name: Check Wasm build runs-on: ubuntu-latest strategy: matrix: flags: - "--target wasm32-wasi" # These fail currently, future PR should fix them # - "--target wasm32-unknown-unknown" # - "--target wasm32-unknown-unknown --features wasm-bindgen" - "--target wasm32-unknown-unknown --no-default-features" - "--target wasm32-unknown-unknown --no-default-features --features wasm-bindgen" fail-fast: false steps: - name: Checkout uses: actions/checkout@v2 - name: Setup Generic Wasm Toolchain uses: actions-rs/toolchain@v1 with: toolchain: stable override: true target: wasm32-unknown-unknown - name: Setup Wasi Toolchain uses: actions-rs/toolchain@v1 with: toolchain: stable override: true target: wasm32-wasi - name: Build uses: actions-rs/cargo@v1 with: command: build args: ${{matrix.flags}} rustfmt: name: Check Formatting runs-on: windows-latest continue-on-error: true steps: - name: Checkout uses: actions/checkout@v2 - name: Setup Toolchain uses: actions-rs/toolchain@v1 with: toolchain: nightly override: true components: rustfmt, clippy - name: Run Rustfmt uses: actions-rs/cargo@v1 with: command: fmt args: --all -- --check - name: Run Clippy uses: actions-rs/cargo@v1 with: command: clippy args: --all -- -Aclippy::all -Dclippy::perf codegen_build: name: Codegen Build runs-on: ${{matrix.os}} continue-on-error: ${{matrix.experimental}} strategy: matrix: include: - {toolchain: stable, os: ubuntu-latest, experimental: false, flags: "--features metadata"} - {toolchain: stable, os: windows-latest, experimental: false, flags: "--features metadata"} steps: - name: Checkout uses: actions/checkout@v2 - name: Setup Toolchain uses: actions-rs/toolchain@v1 with: toolchain: ${{matrix.toolchain}} override: true - name: Build Project uses: actions-rs/cargo@v1 with: command: test args: --manifest-path=codegen/Cargo.toml ${{matrix.flags}}