diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2022-08-09 12:51:17 +0200 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2022-08-09 13:27:13 +0200 |
commit | 0988df2216de97eb383b767a589c74ede02711d4 (patch) | |
tree | 25d0c22ae4ae2e81e3cd3f63eed817d604d03e2b | |
parent | 72668c41662c0c842f21a724f8afa1248704c601 (diff) |
Add CI configuration
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r-- | .github/workflows/ci.yml | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..981cc0b --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,155 @@ +name: "CI" + +on: + push: + pull_request: + +env: + CARGO_TERM_COLOR: always + +jobs: + check: + name: check + runs-on: ubuntu-latest + strategy: + matrix: + rust: + - 1.60.0 + - stable + - beta + # - nightly + steps: + - name: Checkout sources + uses: actions/checkout@v3 + - name: Install toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ matrix.rust }} + override: true + - uses: swatinem/rust-cache@v1 + - name: cargo-check + uses: actions-rs/cargo@v1 + with: + command: check + + deny: + name: deny + needs: check + runs-on: ubuntu-latest + strategy: + matrix: + checks: + - advisories + - bans licenses sources + + # Prevent sudden announcement of a new advisory from failing ci: + continue-on-error: ${{ matrix.checks == 'advisories' }} + + steps: + - uses: actions/checkout@v3 + - name: cargo-deny + uses: EmbarkStudios/cargo-deny-action@v1 + with: + command: check ${{ matrix.checks }} + + + fmt: + name: format + needs: check + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - uses: actions-rs/toolchain@v1 + with: + toolchain: 1.60.0 + - run: rustup component add rustfmt + - name: cargo-fmt + uses: actions-rs/cargo@v1 + with: + command: fmt + args: -- --check + + doc: + name: doc + runs-on: ubuntu-latest + needs: check + + steps: + - uses: actions/checkout@v3 + - name: cargo-doc + uses: actions-rs/cargo@v1 + with: + command: doc + args: --all-features --workspace --no-deps --document-private-items + + test: + needs: check + name: test + runs-on: ubuntu-latest + strategy: + matrix: + rust: + - 1.60.0 + - stable + - beta + # - nightly + steps: + - name: Checkout sources + uses: actions/checkout@v3 + - name: Install toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ matrix.rust }} + override: true + - uses: swatinem/rust-cache@v1 + - name: cargo-test + uses: actions-rs/cargo@v1 + with: + command: test + args: --all --all-features + + clippy: + needs: check + name: clippy + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions-rs/toolchain@v1 + with: + toolchain: 1.60.0 + override: true + - uses: swatinem/rust-cache@v1 + - run: rustup component add clippy + - name: cargo-clippy + run: cargo clippy --all --all-targets --all-features -- -D warnings + + dco-check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + with: + fetch-depth: 0 + - name: Setup Python + uses: actions/setup-python@v4.0.0 + with: + python-version: '3.x' + - name: Install gitlint + run: pip install gitlint + - run: gitlint --commits $(git merge-base origin/master HEAD).. + + ci: + if: ${{ success() }} + needs: + - check + - clippy + - dco-check + - deny + - doc + - fmt + - test + runs-on: ubuntu-latest + steps: + - name: CI succeeded + run: exit 0 + |