Examine the Rust Core #501
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
name: Examine the Rust Core | |
on: | |
push: | |
branches: [develop, production] | |
paths: | |
- ".github/workflows/core.yml" | |
- ".github/actions/**" | |
- "**.rs" # Include all rust files | |
- "**Cargo.toml" # Include all Cargo.toml files | |
- "**Cargo.lock" # Include all Cargo.lock files | |
- "!client/bindings/**" # Exclude all bindings | |
pull_request: | |
branches: [develop, production] | |
paths: | |
- ".github/workflows/core.yml" | |
- ".github/actions/**" | |
- "**.rs" # Include all rust files | |
- "**Cargo.toml" # Include all Cargo.toml files | |
- "**Cargo.lock" # Include all Cargo.lock files | |
- "!client/bindings/**" # Exclude all bindings | |
schedule: | |
- cron: "0 1 * * *" | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
test: | |
name: Test | |
if: ${{ ! github.event.schedule }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [windows-latest, macos-latest, ubuntu-latest] | |
steps: | |
- name: Checkout the Source Code | |
uses: actions/checkout@v3 | |
- name: Set Up Nightly Rust | |
uses: ./.github/actions/setup-rust | |
with: | |
toolchain: nightly | |
cache: true | |
cache-job-id: ${{ github.workflow }}-${{ github.job }}-${{ matrix.os }} | |
cache-hash: ${{ hashFiles('.github/workflows/core.yml') }} | |
- name: Install Protoc | |
uses: arduino/setup-protoc@v1 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Install Required Dependencies (Ubuntu) | |
if: ${{ startsWith(matrix.os, 'ubuntu') }} | |
run: | | |
sudo apt-get update | |
sudo apt-get install libudev-dev libusb-1.0-0-dev | |
- name: Run Cargo Test | |
uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: --all-features --release | |
lint: | |
name: Lint | |
if: ${{ ! github.event.schedule }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout the Source Code | |
uses: actions/checkout@v3 | |
- name: Set Up Beta Clippy | |
uses: ./.github/actions/setup-rust | |
with: | |
toolchain: beta | |
components: clippy | |
cache: true | |
cache-job-id: ${{ github.workflow }}-${{ github.job }} | |
cache-hash: ${{ hashFiles('.github/workflows/core.yml') }} | |
- name: Install Protoc | |
uses: arduino/setup-protoc@v1 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Install Required Dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install libudev-dev libusb-1.0-0-dev | |
- name: Run Clippy | |
uses: actions-rs/clippy-check@v1 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
args: --all-features --all-targets -- --deny warnings | |
name: Clippy Results for the Rust Core | |
check-unused-deps: | |
name: Check Unused Dependencies | |
if: ${{ ! github.event.schedule }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout the Source Code | |
uses: actions/checkout@v3 | |
- name: Install Cargo-udeps with Nightly Rust | |
uses: ./.github/actions/setup-rust | |
with: | |
toolchain: nightly | |
install: cargo-udeps | |
cache: true | |
cache-job-id: ${{ github.workflow }}-${{ github.job }} | |
cache-hash: ${{ hashFiles('.github/workflows/core.yml') }} | |
- name: Install Protoc | |
uses: arduino/setup-protoc@v1 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Install Required Dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install libudev-dev libusb-1.0-0-dev | |
- name: Run Cargo Udeps | |
uses: actions-rs/cargo@v1 | |
with: | |
command: udeps | |
args: --all-targets --all-features | |
check-format: | |
name: Check Format | |
if: ${{ ! github.event.schedule }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout the Source Code | |
uses: actions/checkout@v3 | |
- name: Set Up Nightly Rustfmt | |
uses: ./.github/actions/setup-rust | |
with: | |
toolchain: nightly | |
components: rustfmt | |
cache: false | |
- name: Install cargo-license-template | |
uses: actions-rs/cargo@v1 | |
with: | |
command: install | |
args: --force cargo-license-template | |
- name: Run Cargo Fmt | |
uses: actions-rs/cargo@v1 | |
with: | |
command: fmt | |
args: --all -- --check | |
- name: Run cargo-license-template | |
uses: actions-rs/cargo@v1 | |
with: | |
command: license-template | |
args: --template .license_template | |
audit: | |
name: Perform Security Audit | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout the Source Code | |
uses: actions/checkout@v3 | |
- name: Install Cargo-audit with Nightly Rust | |
uses: ./.github/actions/setup-rust | |
with: | |
toolchain: nightly | |
install: cargo-audit | |
cache: true | |
cache-job-id: ${{ github.workflow }}-${{ github.job }} | |
cache-hash: ${{ hashFiles('.github/workflows/core.yml') }} | |
- name: Run Cargo Audit | |
uses: actions-rs/cargo@v1 | |
with: | |
command: audit | |
# The ignored security advisories: | |
# | |
# - RUSTSEC-2021-0141: `dotenv` is Unmaintained. | |
# - `dotenv` is only used in examples. | |
# - RUSTSEC-2021-0145: `atty` potential unaligned read. | |
# - Waiting for https://github.com/mackwic/colored/pull/122 to be merged. | |
args: --file Cargo.lock --deny warnings --ignore RUSTSEC-2021-0141 --ignore RUSTSEC-2021-0145 |