# Main CI pipeline to validate PRs. # # CI pipeline based on: # - https://github.com/heim-rs/heim/blob/master/.github/workflows/ci.yml # - https://github.com/BurntSushi/ripgrep/blob/master/.github/workflows/ci.yml name: ci on: workflow_dispatch: pull_request: push: branches: - master jobs: # Check rustfmt rustfmt: runs-on: ${{ matrix.os }} strategy: matrix: os: - ubuntu-18.04 - macOS-latest - windows-2019 steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true components: rustfmt - run: cargo fmt --all -- --check # Check clippy. This doesn't check ARM though. clippy: runs-on: ${{ matrix.os }} strategy: matrix: os: - ubuntu-18.04 - macOS-latest - windows-2019 steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true components: clippy - run: cargo clippy --all-targets --workspace -- -D warnings # Compile/check test. check: name: ${{ matrix.toolchain }} / ${{ matrix.triple.target }} needs: [rustfmt, clippy] runs-on: ${{ matrix.triple.os }} strategy: fail-fast: false matrix: triple: # Standard x86-64 stuff, stable - { os: "ubuntu-18.04", target: "x86_64-unknown-linux-gnu", cross: false, rust: stable, } - { os: "ubuntu-18.04", target: "i686-unknown-linux-gnu", cross: true, rust: stable, } - { os: "ubuntu-18.04", target: "x86_64-unknown-linux-musl", cross: false, rust: stable, } - { os: "ubuntu-18.04", target: "i686-unknown-linux-musl", cross: true, rust: stable, } - { os: "macOS-latest", target: "x86_64-apple-darwin", cross: false, rust: stable, } - { os: "windows-2019", target: "i686-pc-windows-msvc", cross: true, rust: stable, } - { os: "windows-2019", target: "x86_64-pc-windows-msvc", cross: false, rust: stable, } - { os: "windows-2019", target: "x86_64-pc-windows-gnu", cross: false, rust: stable, } # aarch64 - { os: "ubuntu-18.04", target: "aarch64-unknown-linux-gnu", cross: true, rust: stable, } # armv7 - { os: "ubuntu-18.04", target: "armv7-unknown-linux-gnueabihf", cross: true, rust: stable, } # PowerPC 64 LE - { os: "ubuntu-18.04", target: "powerpc64le-unknown-linux-gnu", cross: true, rust: stable, } steps: - uses: actions/checkout@v2 - name: Install toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: ${{ matrix.triple.rust }} override: true target: ${{ matrix.triple.target }} - name: Check uses: actions-rs/cargo@v1 with: command: check args: --all-targets --verbose --target=${{ matrix.triple.target }} use-cross: ${{ matrix.triple.cross }} tests: needs: [check] name: Test ${{ matrix.os }} runs-on: ${{ matrix.os }} continue-on-error: true strategy: fail-fast: false matrix: os: - ubuntu-18.04 - macOS-latest - windows-2019 steps: - uses: actions/checkout@v2 - name: Install toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - name: Run tests run: cargo test --no-fail-fast env: CARGO_HUSKY_DONT_INSTALL_HOOKS: true RUST_BACKTRACE: full complete: needs: [tests] name: CI Pipeline Complete runs-on: ubuntu-latest steps: - name: Echo completion shell: bash run: | echo "Complete!"