-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ci(.github/*): Add CI configs to project
- Loading branch information
Showing
2 changed files
with
101 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
name: Security audit | ||
on: | ||
schedule: | ||
- cron: "0 0 * * *" | ||
push: | ||
paths: | ||
- "**/Cargo.toml" | ||
- "**/Cargo.lock" | ||
jobs: | ||
security_audit: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: taiki-e/install-action@cargo-deny | ||
- name: Scan for vulnerabilities | ||
run: cargo deny check advisories |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
# The name of your workflow. GitHub displays the names of your workflows on your repository's "Actions" tab | ||
name: Rust | ||
|
||
# To automatically trigger the workflow | ||
on: | ||
# NB: this differs from the book's project! | ||
# These settings allow us to run this specific CI pipeline for PRs against | ||
# this specific branch (a.k.a. book chapter). | ||
push: | ||
branches: | ||
- main | ||
pull_request: | ||
types: [opened, synchronize, reopened] | ||
branches: | ||
- main | ||
|
||
env: | ||
CARGO_TERM_COLOR: always | ||
|
||
# A workflow run is made up of one or more jobs, which run in parallel by default | ||
# Each job runs in a runner environment specified by runs-on | ||
jobs: | ||
# Unique identifier of our job (`job_id`) | ||
test: | ||
# Sets the name `Test` for the job, which is displayed in the GitHub UI | ||
name: Test | ||
# Containers must run in Linux based operating systems | ||
runs-on: ubuntu-latest | ||
steps: | ||
# Downloads a copy of the code in your repository before running CI tests | ||
- name: Check out repository code | ||
# The uses keyword specifies that this step will run v3 of the actions/checkout action. | ||
# This is an action that checks out your repository onto the runner, allowing you to run scripts or other actions against your code (such as build and test tools). | ||
# You should use the checkout action any time your workflow will run against the repository's code. | ||
uses: actions/checkout@v3 | ||
|
||
# This GitHub Action installs a Rust toolchain using rustup. It is designed for one-line concise usage and good defaults. | ||
- name: Install the Rust toolchain | ||
uses: dtolnay/rust-toolchain@stable | ||
|
||
# A GitHub Action that implements smart caching for rust/cargo projects with sensible defaults. | ||
- name: Rust Cache Action | ||
uses: Swatinem/rust-cache@v2 | ||
|
||
- name: Run tests | ||
run: cargo test | ||
|
||
# `fmt` container job | ||
fmt: | ||
name: Rustfmt | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: dtolnay/rust-toolchain@stable | ||
with: | ||
# Specific to dtolnay/rust-toolchain: Comma-separated string of additional components to install | ||
components: rustfmt | ||
- name: Enforce formatting | ||
run: cargo fmt --check | ||
|
||
clippy: | ||
name: Clippy | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: dtolnay/rust-toolchain@stable | ||
with: | ||
components: clippy | ||
- uses: Swatinem/rust-cache@v2 | ||
- name: Linting | ||
run: cargo clippy -- -D warnings | ||
|
||
# `coverage` container job | ||
coverage: | ||
name: Code coverage | ||
runs-on: ubuntu-latest | ||
container: | ||
image: xd009642/tarpaulin | ||
options: --security-opt seccomp=unconfined | ||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v3 | ||
- name: Generate code coverage | ||
run: | | ||
cargo tarpaulin --verbose --workspace |