diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..c3ebf90 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,137 @@ +name: ci +on: [push, pull_request] +jobs: + fmt: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: nightly + components: rustfmt + - uses: Swatinem/rust-cache@v1 + - run: ./scripts/ci/fmt + shell: bash + + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + components: clippy + - uses: Swatinem/rust-cache@v1 + - run: ./scripts/ci/lint + shell: bash + + docs: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + - uses: Swatinem/rust-cache@v1 + - run: ./scripts/ci/docs + shell: bash + + cargo-deny: + runs-on: ubuntu-latest + strategy: + matrix: + checks: + - advisories + - bans licenses sources + continue-on-error: ${{ matrix.checks == 'advisories' }} + steps: + - uses: actions/checkout@v2 + - uses: EmbarkStudios/cargo-deny-action@v1 + with: + command: check ${{ matrix.checks }} + + build-linux: + runs-on: ubuntu-latest + strategy: + matrix: + toolchain: + - stable + - nightly + continue-on-error: ${{ matrix.toolchain == 'nightly' }} + steps: + - uses: actions/checkout@master + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: ${{ matrix.toolchain }} + - uses: Swatinem/rust-cache@v1 + - run: ./scripts/ci/build + shell: bash + + test-linux: + runs-on: ubuntu-latest + needs: build-linux + strategy: + matrix: + toolchain: + - stable + - nightly + continue-on-error: ${{ matrix.toolchain == 'nightly' }} + steps: + - uses: actions/checkout@master + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: ${{ matrix.toolchain }} + - uses: baptiste0928/cargo-install@v1 + with: + crate: cargo-nextest + version: 0.9 + - uses: Swatinem/rust-cache@v1 + - run: ./scripts/ci/test + shell: bash + + build-macos: + runs-on: macos-latest + steps: + - uses: actions/checkout@master + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + - uses: Swatinem/rust-cache@v1 + - run: ./scripts/ci/build + shell: bash + + test-macos: + runs-on: macos-latest + needs: build-macos + steps: + - uses: actions/checkout@master + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + - uses: baptiste0928/cargo-install@v1 + with: + crate: cargo-nextest + version: 0.9 + - uses: Swatinem/rust-cache@v1 + - run: ./scripts/ci/test + shell: bash + + build-windows: + runs-on: windows-latest + continue-on-error: true + steps: + - uses: actions/checkout@master + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + - uses: Swatinem/rust-cache@v1 + - run: ./scripts/ci/build + shell: bash