Skip to content

Examine the Rust Core #501

Examine the Rust Core

Examine the Rust Core #501

Workflow file for this run

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