on:
push:
branches:
- master
tags-ignore: '*'
pull_request:
branches:
- '*'
tags-ignore: '*'
schedule:
- cron: '13 3 * * *'
name: CI
jobs:
rustfmt:
name: โข๏ธ Formatting โข๏ธ
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
components: rustfmt
- run: cargo fmt --all -- --check
lints:
name: ๐ณ๏ธ Lints ๐ณ๏ธ
needs: rustfmt
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: ubuntu-latest
rust: "1.65.0"
- os: ubuntu-latest
rust: stable
- os: ubuntu-latest
rust: beta
- os: ubuntu-latest
rust: nightly
- os: macos-latest
rust: stable
- os: windows-latest
rust: stable
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ matrix.rust }}
override: true
components: clippy
- run: cargo clippy --all -- -D warnings
test-linux:
name: ๐งช Linux ๐งช
needs: lints
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: ubuntu-latest
rust: "1.65.0"
- os: ubuntu-latest
rust: stable
- os: ubuntu-latest
rust: beta
- os: ubuntu-latest
rust: nightly
steps:
- name: โ๏ธ Checkout โ๏ธ
uses: actions/checkout@v3
with:
submodules: recursive
- name: ๐ต Cache ๐ต
uses: actions/cache@v3
with:
path: |
~/.cargo/bin/cargo-tarpaulin*
~/.cargo/bin/cargo-*-all-features*
key: ${{ runner.os }}-${{ matrix.rust }}-${{ hashFiles('**/Cargo.toml') }}
- uses: actions-rs/toolchain@v1
name: ๐งฐ Toolchain ๐งฐ
with:
profile: minimal
toolchain: ${{ matrix.rust }}
override: true
- name: ๐พ Install (cargo-tarpaulin) ๐พ
uses: actions-rs/install@v0.1
with:
crate: cargo-tarpaulin
version: latest
use-tool-cache: true
continue-on-error: true
- name: ๐พ Install (cargo-all-features) ๐พ
uses: actions-rs/install@v0.1
with:
crate: cargo-all-features
version: latest
use-tool-cache: true
continue-on-error: true
- name: ๐งช Test ๐งช
run: cargo test-all-features
- name: ๐ Code Coverage ๐
run: cargo tarpaulin --out Xml
- name: ๐ Upload Code Coverage ๐
uses: codecov/codecov-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./cobertura.xml
test-macos:
name: ๐งช MacOS ๐งช
needs: lints
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: macos-latest
rust: "1.65.0"
- os: macos-latest
rust: stable
- os: macos-latest
rust: beta
- os: macos-latest
rust: nightly
steps:
- name: โ๏ธ Checkout โ๏ธ
uses: actions/checkout@v3
with:
submodules: recursive
- name: ๐ต Cache ๐ต
uses: actions/cache@v3
with:
path: |
~/.cargo/bin/cargo-*-all-features*
key: ${{ runner.os }}-${{ matrix.rust }}-${{ hashFiles('**/Cargo.toml') }}
- uses: actions-rs/toolchain@v1
name: ๐งฐ Toolchain ๐งฐ
with:
profile: minimal
toolchain: ${{ matrix.rust }}
override: true
- name: ๐พ Install (cargo-all-features) ๐พ
uses: actions-rs/install@v0.1
with:
crate: cargo-all-features
version: latest
use-tool-cache: true
continue-on-error: true
- name: ๐งช Test ๐งช
run: cargo test-all-features
test-windows:
name: ๐งช Windows ๐งช
needs: lints
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: windows-latest
rust: 1.65.0-msvc
- os: windows-latest
rust: stable-msvc
- os: windows-latest
rust: beta-msvc
- os: windows-latest
rust: nightly-msvc
- os: windows-latest
rust: 1.65.0-gnu
- os: windows-latest
rust: stable-gnu
- os: windows-latest
rust: beta-gnu
- os: windows-latest
rust: nightly-gnu
steps:
- name: โ๏ธ Checkout โ๏ธ
uses: actions/checkout@v3
with:
submodules: recursive
- name: ๐ต Cache ๐ต
uses: actions/cache@v3
with:
path: |
~/.cargo/bin/cargo-*-all-features*
key: ${{ runner.os }}-${{ matrix.rust }}-${{ hashFiles('**/Cargo.toml') }}
- uses: actions-rs/toolchain@v1
name: ๐งฐ Toolchain ๐งฐ
with:
profile: minimal
toolchain: ${{ matrix.rust }}
override: true
- name: ๐พ Install (cargo-all-features) ๐พ
uses: actions-rs/install@v0.1
with:
crate: cargo-all-features
version: latest
use-tool-cache: true
continue-on-error: true
- name: ๐งช Test ๐งช
run: cargo test-all-features