Skip to content

Commit

Permalink
ci: Update CI and add Code Coverage (#326)
Browse files Browse the repository at this point in the history
  • Loading branch information
bconn98 authored Dec 6, 2023
1 parent 1bdb7e7 commit b0a60a1
Show file tree
Hide file tree
Showing 14 changed files with 318 additions and 234 deletions.
11 changes: 11 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,16 @@ insert_final_newline = true
indent_style = space
indent_size = 4

[*.rs]
indent_size = false

[*.md]
trim_trailing_whitespace = false

[*.{yml,yaml}]
indent_size = 2

# Ignore License files
[LICENSE-*]
indent_size = unset
indent_style = unset
23 changes: 23 additions & 0 deletions .github/workflows/audit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
name: Security audit
on:
push:
paths:
- '**/Cargo.toml'
- '**/Cargo.lock'
- '.github/workflows/audit.yml'
jobs:
cargo-audit:
name: Audit the baseline for CVEs
runs-on: ubuntu-latest
steps:
- name: Checkout the source code
uses: actions/checkout@v4

- uses: cargo-bins/cargo-binstall@main

- name: Install cargo-audit
run: cargo binstall -y cargo-audit

- name: Audit
run: cargo audit
35 changes: 35 additions & 0 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
name: coverage

on:
push:
branches:
- main
- devel
pull_request:
branches:
- main
- devel

jobs:
test:
# https://github.com/xd009642/tarpaulin#github-actions
name: coverage
runs-on: ubuntu-latest
container:
image: xd009642/tarpaulin:develop-nightly
options: --security-opt seccomp=unconfined
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Generate code coverage
run: |
cargo +nightly tarpaulin --verbose --all-features --workspace --timeout 120 --out xml
env:
USER: "test-user"

- name: Upload to codecov.io
uses: codecov/codecov-action@v3
with:
fail_ci_if_error: true
20 changes: 20 additions & 0 deletions .github/workflows/editor-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: EditorConfig Checker

on:
push:
branches:
- main
- devel
pull_request:
branches:
- main
- devel

jobs:
editorconfig:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: editorconfig-checker/action-editorconfig-checker@main
- run: editorconfig-checker
45 changes: 45 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
name: Lint Jobs

on:
push:
branches:
- main
- devel
pull_request:
branches:
- main
- devel

jobs:
rust-lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout the source code
uses: actions/checkout@v4

- uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt, clippy

- name: Run cargo check
run: cargo check

- name: Run rustfmt
run: cargo fmt -- --check

- name: Run Clippy
run: cargo clippy --all-features
env:
RUSTFLAGS: -D warnings

docs-lint:
name: Docs Lint
runs-on: ubuntu-latest
steps:
- name: Markdown Linting Action
uses: avto-dev/markdown-lint@v1
with:
config: .markdownlint.yml
args: docs/Configuration.md README.md
188 changes: 69 additions & 119 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,123 +1,73 @@
name: CI
---
name: Build CI

on:
push:
branches:
- main
- devel
pull_request:
branches:
- main
- devel
push:
branches:
- main
- devel
pull_request:
branches:
- main
- devel

jobs:
rust-lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout the source code
uses: actions/checkout@v4

- name: Install Rust stable
run: |
rustup toolchain update --no-self-update stable
rustup default stable
rustup component add clippy rustfmt
- name: Run rustfmt
run: cargo fmt -- --check

- name: Run clippy
run: cargo clippy --all-features
env:
RUSTFLAGS: -D warnings

test:
name: Test
runs-on: ${{ matrix.os }}
strategy:
matrix:
rust_versions: ["stable", "1.67"]
os: [ubuntu-latest, windows-latest]
steps:
- name: Checkout the source code
uses: actions/checkout@v4

- name: Install Rust Versions
run: |
rustup toolchain install --no-self-update ${{ matrix.rust_versions }}
rustup default stable
- name: Build lib
run: rustup run ${{ matrix.rust_versions }} cargo build ${{ matrix.cargo_build_flags }}

- name: test lib
run: cargo test --all-features
env:
RUSTFLAGS: -D warnings

features:
name: Test Individual Features
runs-on: ubuntu-latest
steps:
- name: Checkout the source code
uses: actions/checkout@v4

- name: Install Rust toolchain and jq
run: |
rustup toolchain install --no-self-update stable
rustup default stable
sudo apt-get install -y --no-install-recommends jq
- name: Test lib
run: |
for feature in $(cargo read-manifest | jq -r '.features|keys|join("\n")'); do
echo building with feature "$feature"
RUSTFLAGS='-D warnings' cargo test --no-default-features --features "$feature"
done
bench:
name: Benchmark the background_rotation feature
runs-on: ubuntu-latest
strategy:
matrix:
rust_versions: ["stable", "1.67"]
steps:
- name: Checkout the source code
uses: actions/checkout@v4

- name: Install Rust toolchain
run: |
rustup toolchain install --no-self-update stable
rustup default stable
- name: Rotation with backgrounded rotation
run: cargo bench --features gzip,background_rotation

cargo-audit:
name: Audit the baseline for CVEs
runs-on: ubuntu-latest
steps:
- name: Checkout the source code
uses: actions/checkout@v4

- name: Install Rust toolchain
run: |
rustup toolchain install --no-self-update stable
rustup default stable
- name: Install Auditting Tools
run: cargo install cargo-audit

- name: Audit project
run: cargo audit

docs-lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Markdown Linting Action
uses: avto-dev/[email protected]
with:
config: .markdownlint.yml
args: docs/Configuration.md README.md
test:
name: Test
runs-on: ${{ matrix.os }}
strategy:
matrix:
rust_versions: ["stable", "1.67"]
os: [ubuntu-latest, windows-latest]
steps:
- name: Checkout the source code
uses: actions/checkout@v4

- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust_versions }}

- name: Build lib
run: cargo build

- name: Test lib
run: cargo test --all-features
env:
RUSTFLAGS: -D warnings

features:
name: Test Individual Features
runs-on: ubuntu-latest
steps:
- name: Checkout the source code
uses: actions/checkout@v4

- uses: dtolnay/rust-toolchain@stable

- name: Install jq
run: |
sudo apt-get install -y --no-install-recommends jq
- name: Test lib
run: |
for feature in $(cargo read-manifest | jq -r '.features|keys|join("\n")'); do
echo building with feature "$feature"
RUSTFLAGS='-D warnings' cargo test --no-default-features --features "$feature"
done
bench:
name: Benchmark the background_rotation feature
runs-on: ubuntu-latest
strategy:
matrix:
rust_versions: ["stable", "1.67"]
steps:
- name: Checkout the source code
uses: actions/checkout@v4

- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust_versions }}

- name: Bench features
run: cargo bench --all-features
38 changes: 19 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,25 +31,25 @@ log4rs.yaml:
```yaml
refresh_rate: 30 seconds
appenders:
stdout:
kind: console
requests:
kind: file
path: "log/requests.log"
encoder:
pattern: "{d} - {m}{n}"
root:
level: warn
appenders:
- stdout
loggers:
app::backend::db:
level: info
app::requests:
level: info
appenders:
- requests
additive: false
stdout:
kind: console
requests:
kind: file
path: "log/requests.log"
encoder:
pattern: "{d} - {m}{n}"
root:
level: warn
appenders:
- stdout
loggers:
app::backend::db:
level: info
app::requests:
level: info
appenders:
- requests
additive: false
```
lib.rs:
Expand Down
Loading

0 comments on commit b0a60a1

Please sign in to comment.