summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2022-08-09 12:51:17 +0200
committerMatthias Beyer <mail@beyermatthias.de>2022-08-09 13:27:13 +0200
commit0988df2216de97eb383b767a589c74ede02711d4 (patch)
tree25d0c22ae4ae2e81e3cd3f63eed817d604d03e2b
parent72668c41662c0c842f21a724f8afa1248704c601 (diff)
Add CI configuration
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r--.github/workflows/ci.yml155
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
+