name: Rust Tests on: pull_request: branches: - master push: branches: - master jobs: build: name: ${{ matrix.toolchain }} / ${{ matrix.target }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: toolchain: - stable - nightly target: - x86_64-unknown-linux-gnu - x86_64-unknown-linux-musl - wasm32-unknown-unknown steps: - uses: actions/checkout@v2 # Setup musl if needed - run: sudo apt-get update if: matrix.target == 'x86_64-unknown-linux-musl' - run: sudo apt-get install -y musl musl-dev musl-tools cmake if: matrix.target == 'x86_64-unknown-linux-musl' # Caching stuff - uses: actions/cache@v2 with: path: | ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ key: ${{ runner.os }}-cargo-deps-${{ hashFiles('**/Cargo.toml') }} - uses: actions/cache@v2 with: path: | target/ key: ${{ runner.os }}-cargo-target-${{ matrix.toolchain }}-${{ matrix.target }}-${{ hashFiles('**/Cargo.toml') }} - uses: actions-rs/toolchain@v1 with: toolchain: ${{ matrix.toolchain }} target: ${{ matrix.target }} override: true # If glibc, compile and test all - uses: actions-rs/cargo@v1 name: "Build" if: matrix.target == 'x86_64-unknown-linux-gnu' with: command: build toolchain: ${{ matrix.toolchain }} args: --target ${{ matrix.target }} --all-features - uses: actions-rs/cargo@v1 name: "Test" if: matrix.target == 'x86_64-unknown-linux-gnu' with: command: test toolchain: ${{ matrix.toolchain }} args: --target ${{ matrix.target }} --all-features # If musl, compile and test all - uses: actions-rs/cargo@v1 name: "Build" if: matrix.target == 'x86_64-unknown-linux-musl' with: command: build toolchain: ${{ matrix.toolchain }} args: --target ${{ matrix.target }} --all-features env: CC: musl-gcc CXX: g++ - uses: actions-rs/cargo@v1 name: "Test" if: matrix.target == 'x86_64-unknown-linux-musl' with: command: test toolchain: ${{ matrix.toolchain }} args: --target ${{ matrix.target }} --all-features env: CC: musl-gcc CXX: g++ - uses: actions-rs/cargo@v1 name: "Build" if: matrix.target == 'wasm32-unknown-unknown' with: command: build toolchain: ${{ matrix.toolchain }} args: --target wasm32-unknown-unknown --features reqwest # Build examples - uses: actions-rs/cargo@v1 name: "Build reqwest-wasm-example" if: matrix.target == 'wasm32-unknown-unknown' && matrix.toolchain == 'stable' with: command: build toolchain: ${{ matrix.toolchain }} args: --target ${{ matrix.target }} --manifest-path ./example-projects/reqwest-wasm-example/Cargo.toml - uses: actions-rs/cargo@v1 name: "Build rdkafka-example" if: matrix.target == 'x86_64-unknown-linux-gnu' && matrix.toolchain == 'stable' with: command: build toolchain: ${{ matrix.toolchain }} args: --target ${{ matrix.target }} --manifest-path ./example-projects/rdkafka-example/Cargo.toml - uses: actions-rs/cargo@v1 name: "Build actix-web-example" if: matrix.target == 'x86_64-unknown-linux-gnu' && matrix.toolchain == 'stable' with: command: build toolchain: ${{ matrix.toolchain }} args: --target ${{ matrix.target }} --manifest-path ./example-projects/actix-web-example/Cargo.toml - uses: actions-rs/cargo@v1 name: "Build warp-example" if: matrix.target == 'x86_64-unknown-linux-gnu' && matrix.toolchain == 'stable' with: command: build toolchain: ${{ matrix.toolchain }} args: --target ${{ matrix.target }} --manifest-path ./example-projects/warp-example/Cargo.toml - uses: actions-rs/cargo@v1 name: "Build axum-example" if: matrix.target == 'x86_64-unknown-linux-gnu' && matrix.toolchain == 'stable' with: command: build toolchain: ${{ matrix.toolchain }} args: --target ${{ matrix.target }} --manifest-path ./example-projects/axum-example/Cargo.toml - uses: actions-rs/cargo@v1 name: "Build poem-example" if: matrix.target == 'x86_64-unknown-linux-gnu' && matrix.toolchain == 'stable' with: command: build toolchain: ${{ matrix.toolchain }} args: --target ${{ matrix.target }} --manifest-path ./example-projects/poem-example/Cargo.toml