name: CI on: push: branches: - master pull_request: jobs: # == CHECK == # check: name: "Check beta stable and MSRV=1.78.0" runs-on: ubuntu-latest strategy: matrix: rust-toolchains: - 1.78.0 - stable - beta cargo-locked: ["--locked", ""] steps: - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: ${{ matrix.rust-toolchains }} override: true - name: Clone repo uses: actions/checkout@v2 - name: Update `Cargo.lock` if: matrix.cargo-locked != '--locked' run: cargo update -v - name: Cargo check uses: actions-rs/cargo@v1 with: command: check args: ${{ matrix.cargo-locked }} # == BUILD & TEST == # test: name: Build and test runs-on: ${{ matrix.os }} needs: [check] strategy: fail-fast: false matrix: os: - ubuntu-latest - macos-latest - windows-latest rust-toolchains: - 1.78.0 - stable steps: - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: profile: default override: true toolchain: ${{ matrix.rust-toolchains }} - name: Clone repo uses: actions/checkout@v2 - name: Cargo test uses: actions-rs/cargo@v1 env: RUSTDOCFLAGS: '-Zcrate-attr=feature(macro_attributes_in_derive_output)' RUSTFLAGS: '-Zcrate-attr=feature(macro_attributes_in_derive_output)' RUSTC_BOOTSTRAP: '1' with: command: test - name: Cargo test (embedded doc tests) if: matrix.rust-toolchains == 'stable' uses: actions-rs/cargo@v1 env: RUSTC_BOOTSTRAP: 1 with: command: test args: --features better-docs --doc # # == UI TESTS == # ui-test: # name: UI Tests # runs-on: ubuntu-latest # needs: [check] # steps: # - name: Install Rust toolchain # uses: actions-rs/toolchain@v1 # with: # profile: default # override: true # toolchain: stable # - name: Clone repo # uses: actions/checkout@v2 # - name: Cargo UI test # uses: actions-rs/cargo@v1 # with: # command: test-ui required-jobs: name: 'All the required jobs' needs: - check - test runs-on: ubuntu-latest if: ${{ always() }} steps: - name: 'Check success of the required jobs' run: | RESULT=$(echo "${{ join(needs.*.result, '') }}" | sed -e "s/success//g") if [ -n "$RESULT" ]; then echo "❌" false fi echo "✅"