cargo-binstall/.github/workflows/ci.yml
Jiahao XU c8b92b1985
Speedup CI (#842)
- Remove `tools: cross` input to `actions/just-setup`
    since we use `cargo-zigbuild` for cross compiling instead of `cross-rs`
    now.
 - Only install `cargo-zigbuild` in `just ci-install-deps` if `JUST_USE_CARGO_ZIGBUILD` is enabled
 - Include hash of `rustc -vV` in `build-cache`
    Switching between different versions of `rustc` will cause all crates to be
    rebuilt using new `rustc`.
 - Replace input `cache` with `index-cache` and `build-cache` in `actions/just-setup`
    for better control of caching behavior
 -  Reuse workflow `test`'s `build-cache` in workflow `lint`

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
2023-03-02 13:09:25 +11:00

140 lines
3.4 KiB
YAML

name: CI
on:
workflow_dispatch:
pull_request:
types:
- opened
- reopened
- synchronize
- auto_merge_enabled
paths-ignore:
- README.md
- SUPPORT.md
push:
branches:
- main
paths-ignore:
- README.md
- SUPPORT.md
concurrency:
group: ${{ github.workflow }}-${{ github.ref || github.run_id }}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
CARGO_UNSTABLE_SPARSE_REGISTRY: "true"
jobs:
test:
strategy:
fail-fast: false
matrix:
include:
- target: x86_64-apple-darwin
os: macos-latest
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
- target: x86_64-unknown-linux-musl
os: ubuntu-latest
c: true
- target: x86_64-pc-windows-msvc
os: windows-latest
runs-on: ${{ matrix.os }}
env:
CARGO_BUILD_TARGET: ${{ matrix.target }}
JUST_USE_CARGO_ZIGBUILD: ${{ matrix.c }}
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/just-setup
with:
cache-suffix: ${{ env.CARGO_BUILD_TARGET }}
- run: just ci-install-deps
- run: just test
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
linux-cross-check:
strategy:
fail-fast: false
matrix:
target:
- armv7-unknown-linux-musleabihf
- armv7-unknown-linux-gnueabihf
- aarch64-unknown-linux-musl
- aarch64-unknown-linux-gnu
runs-on: ubuntu-latest
env:
CARGO_BUILD_TARGET: ${{ matrix.target }}
JUST_USE_CARGO_ZIGBUILD: true
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/just-setup
with:
cache-suffix: ${{ env.CARGO_BUILD_TARGET }}
- run: just ci-install-deps
- run: just check
apple-m1-check:
runs-on: macos-latest
env:
CARGO_BUILD_TARGET: aarch64-apple-darwin
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/just-setup
with:
cache-suffix: ${{ env.CARGO_BUILD_TARGET }}
- run: just check
lint:
strategy:
fail-fast: false
matrix:
include:
- target: x86_64-apple-darwin
os: macos-latest
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
- target: x86_64-pc-windows-msvc
os: windows-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/just-setup
with:
cache-suffix: ${{ matrix.target }}
- run: just toolchain rustfmt,clippy
- run: just ci-install-deps
- run: just lint
# Dummy job to have a stable name for the "all tests pass" requirement
tests-pass:
name: Tests pass
needs:
- test
- linux-cross-check
- apple-m1-check
- lint
if: always() # always run even if dependencies fail
runs-on: ubuntu-latest
steps:
# fail if ANY dependency has failed or been skipped or cancelled
- if: "contains(needs.*.result, 'failure') || contains(needs.*.result, 'skipped') || contains(needs.*.result, 'cancelled')"
run: exit 1
# if everything succeeds and PR is ready for review, test the release/package process
release-builds:
if: (github.event_name == 'pull_request' && github.event.pull_request.draft == false) || github.event_name == 'workflow_dispatch'
needs: tests-pass
uses: ./.github/workflows/release-build.yml