name: Build on: push: branches: - main - master - debugger pull_request: {} jobs: # 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 metadata,serde,internals" - "--features unchecked,serde,metadata,internals" - "--features sync,serde,metadata,internals" - "--features no_position,serde,metadata,internals" - "--features no_optimize,serde,metadata,internals" - "--features no_float,serde,metadata,internals" - "--features f32_float,serde,metadata,internals" - "--features decimal,serde,metadata,internals" - "--features no_float,decimal" - "--tests --features only_i32,serde,metadata,internals" - "--features only_i64,serde,metadata,internals" - "--features no_index,serde,metadata,internals" - "--features no_object,serde,metadata,internals" - "--features no_function,serde,metadata,internals" - "--features no_module,serde,metadata,internals" - "--features no_closure,serde,metadata,internals" - "--features unicode-xid-ident,serde,metadata,internals" - "--features sync,no_function,no_float,no_position,no_optimize,no_module,no_closure,metadata,serde,unchecked" - "--features no_function,no_float,no_position,no_index,no_object,no_optimize,no_module,no_closure,unchecked" toolchain: [stable] experimental: [false] include: # smoketests for future and experimental 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}} # 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}} 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: nightly, os: ubuntu-latest, experimental: false, flags: "--features metadata"} - {toolchain: nightly, 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}}