# 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: paths-ignore: - 'README.md' - 'docs/**' - '.github/ISSUE_TEMPLATE/**' push: branches: - master paths-ignore: - 'README.md' - 'docs/**' - '.github/ISSUE_TEMPLATE/**' - 'CHANGELOG.md' - 'CONTRIBUTING.md' jobs: # Check rustfmt rustfmt: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: - ubuntu-latest - macOS-latest - windows-2019 steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true components: rustfmt - uses: Swatinem/rust-cache@v1 - run: cargo fmt --all -- --check # Check clippy. Note that this doesn't check ARM. clippy: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: - ubuntu-latest - macOS-latest - windows-2019 steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true components: clippy - uses: Swatinem/rust-cache@v1 # TODO: Can probably put cache here in the future; I'm worried if this will cause issues with clippy though since cargo check breaks it; maybe wait until 1.52, when fix lands. - run: cargo clippy --all-targets --workspace -- -D warnings # Compile/check/test. check: needs: [rustfmt, clippy] runs-on: ${{ matrix.triple.os }} continue-on-error: true strategy: fail-fast: false matrix: triple: # Standard x86-64 stuff, stable - { os: "ubuntu-latest", target: "x86_64-unknown-linux-gnu", cross: false, rust: stable, toTest: "true", } - { os: "ubuntu-latest", target: "i686-unknown-linux-gnu", cross: true, rust: stable, } # - { # os: "ubuntu-latest", # target: "x86_64-unknown-linux-musl", # cross: false, # rust: stable, # } # - { # os: "ubuntu-latest", # target: "i686-unknown-linux-musl", # cross: true, # rust: stable, # } - { os: "macOS-latest", target: "x86_64-apple-darwin", cross: false, rust: stable, toTest: "true", } # Big Sur builds are disabled, unfortunately. # - { # os: "macOS-11.0", # target: "x86_64-apple-darwin", # cross: false, # rust: stable, # } - { os: "windows-2019", target: "x86_64-pc-windows-msvc", cross: false, rust: stable, toTest: "true", } - { os: "windows-2019", target: "i686-pc-windows-msvc", cross: true, rust: stable, } # - { # os: "windows-2019", # target: "x86_64-pc-windows-gnu", # cross: false, # rust: stable, # } # aarch64 - { os: "ubuntu-latest", target: "aarch64-unknown-linux-gnu", cross: true, rust: stable, } # armv7 - { os: "ubuntu-latest", target: "armv7-unknown-linux-gnueabihf", cross: true, rust: stable, } # armv6 - { os: "ubuntu-latest", target: "arm-unknown-linux-gnueabihf", cross: true, rust: stable, } # PowerPC 64 LE - { os: "ubuntu-latest", target: "powerpc64le-unknown-linux-gnu", cross: true, rust: stable, } # macOS ARM - { os: "macOS-latest", target: "aarch64-apple-darwin", 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 }} - uses: Swatinem/rust-cache@v1 - name: Check uses: actions-rs/cargo@v1 with: command: check args: --all-targets --verbose --target=${{ matrix.triple.target }} --no-default-features use-cross: ${{ matrix.triple.cross }} - name: Run tests if: matrix.triple.toTest == 'true' run: cargo test --no-fail-fast env: CARGO_HUSKY_DONT_INSTALL_HOOKS: true RUST_BACKTRACE: full