Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 57 additions & 23 deletions .github/dependency-review-config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,11 @@
# Fail the action on critical and high severity vulnerabilities
fail-on-severity: high

# Allow specific licenses
# Allow specific licenses (all other licenses will be flagged)
# Note: Cannot specify both allow-licenses and deny-licenses
# Comprehensive list for Rust ecosystem compatibility
allow-licenses:
# Standard permissive licenses
- MIT
- Apache-2.0
- BSD-2-Clause
Expand All @@ -14,33 +17,64 @@ allow-licenses:
- CC0-1.0
- Unlicense
- 0BSD

# Deny specific licenses that are incompatible with project goals
deny-licenses:
- GPL-2.0
- GPL-3.0
- LGPL-2.0
- LGPL-2.1
- LGPL-3.0
- AGPL-3.0
- CC-BY-SA-4.0
- CDDL-1.0
- EPL-1.0
- EPL-2.0
# Unicode licenses (used by unicode-ident, unicode-normalization, etc.)
- Unicode-DFS-2016
- Unicode-3.0
# Compression and utility licenses
- Zlib
# Mozilla and other OSS licenses
- MPL-2.0
- BSL-1.0
# LLVM-related licenses
- Apache-2.0 WITH LLVM-exception
# OpenSSL and cryptography
- OpenSSL
# Blue Oak Model License (used by some Rust crates)
- BlueOak-1.0.0
# Creative Commons licenses
- CC-BY-3.0
- CC-BY-4.0
# Public domain equivalent
- WTFPL
# Additional permissive licenses found in Rust ecosystem
- MIT-0
- NCSA

# Allow specific packages even if they fail other checks
# Uses Package URL (purl) format: pkg:cargo/package-name
allow-dependencies-licenses:
# Core Rust ecosystem crates that are essential
- serde
- serde_json
- tokio
- clap
- pkg:cargo/serde
- pkg:cargo/serde_json
- pkg:cargo/tokio
- pkg:cargo/clap
# Unicode crates with special license definitions
- pkg:cargo/unicode-ident
- pkg:cargo/unicode-normalization
- pkg:cargo/unicode-bidi
- pkg:cargo/unicode-width
- pkg:cargo/unicode-segmentation
- pkg:cargo/unicode-properties
# Cryptography crates with custom licenses
- pkg:cargo/ring
- pkg:cargo/webpki
- pkg:cargo/rustls-webpki
- pkg:cargo/aws-lc-rs
- pkg:cargo/aws-lc-sys
- pkg:cargo/untrusted
# OpenSSL bindings
- pkg:cargo/openssl
- pkg:cargo/openssl-sys
# Low OpenSSF scorecard but essential crates
- pkg:cargo/lab
# GUI framework crates (may have complex license expressions)
- pkg:cargo/iced
- pkg:cargo/iced_core
- pkg:cargo/iced_widget
- pkg:cargo/iced_runtime

# Deny specific packages
deny-packages:
# Example of denying packages with known issues
- openssl-sys
# Deny specific packages using purl format
deny-packages: []

# Allow vulnerabilities for specific advisories (temporary exceptions)
allow-ghsas: []
Expand All @@ -49,4 +83,4 @@ allow-ghsas: []
comment-summary-in-pr: auto
warn-only: false
vulnerability-check: true
license-check: true
license-check: true
40 changes: 6 additions & 34 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -210,40 +210,12 @@ jobs:
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
- name: Cache cargo tools
uses: actions/cache@v4
# Install cargo-nextest using pre-built binaries (much faster than compiling from source)
# This avoids the timeout issue on Windows where cargo-nextest takes >10 minutes to compile
- name: Install cargo-nextest (pre-built binary)
uses: taiki-e/install-action@v2
with:
path: |
~/.cargo/bin/cargo-nextest
~/.cargo/.crates.toml
~/.cargo/.crates2.json
key: cargo-tools-${{ matrix.os }}-nextest
restore-keys: |
cargo-tools-${{ matrix.os }}-

- name: Install cargo-nextest with enhanced sccache resilience
shell: bash
run: |
if ! command -v cargo-nextest > /dev/null 2>&1; then
echo "Installing cargo-nextest with GitHub cache service resilience..."
# Use sccache if available, with robust error handling
if [ "${{ steps.configure_sccache.outputs.sccache_available }}" = "true" ]; then
echo "Attempting installation with sccache (local or GHA mode)..."
export RUSTC_WRAPPER="${{ steps.configure_sccache.outputs.rustc_wrapper }}"
if ! run_with_timeout 300s cargo install cargo-nextest --locked; then
echo "Installation failed with sccache, retrying with direct compilation..."
unset RUSTC_WRAPPER
export RUSTC_WRAPPER=""
run_with_timeout 300s cargo install cargo-nextest --locked
fi
else
echo "Installing with direct compilation (no sccache)..."
export RUSTC_WRAPPER=""
run_with_timeout 300s cargo install cargo-nextest --locked
fi
else
echo "cargo-nextest already installed"
fi
tool: cargo-nextest

- name: Build (if not cached) with sccache fallback
# Cross-platform build detection
Expand All @@ -268,7 +240,7 @@ jobs:

- name: Download build artifacts (if available)
if: inputs.cache_key != ''
uses: actions/download-artifact@v6
uses: actions/download-artifact@v7
with:
name: build-artifacts-${{ matrix.os }}
path: target/
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/master-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ jobs:

# Upload build artifacts for other jobs to use
- name: Upload build artifacts
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
with:
name: build-artifacts-${{ runner.os }}
path: |
Expand Down Expand Up @@ -393,7 +393,7 @@ jobs:
EOF

- name: Upload documentation artifacts
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
with:
name: documentation
path: target/doc/
Expand Down Expand Up @@ -438,7 +438,7 @@ jobs:
shared-key: "master-pipeline"

- name: Cache cargo tools
uses: actions/cache@v4
uses: actions/cache@v5
with:
path: |
~/.cargo/bin/cargo-tarpaulin
Expand Down Expand Up @@ -549,7 +549,7 @@ jobs:
7z a ../../../${{ matrix.artifact_name }} rustirc.exe
shell: pwsh
- name: Upload build artifact
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
with:
name: ${{ matrix.artifact_name }}
path: ${{ matrix.artifact_name }}
Expand All @@ -576,7 +576,7 @@ jobs:
fetch-depth: 0

- name: Download artifacts
uses: actions/download-artifact@v6
uses: actions/download-artifact@v7
with:
path: artifacts

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ jobs:
shell: bash

- name: Upload artifact
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
with:
name: ${{ matrix.asset_name }}
path: |
Expand All @@ -143,7 +143,7 @@ jobs:
fetch-depth: 0

- name: Download all artifacts
uses: actions/download-artifact@v6
uses: actions/download-artifact@v7
with:
path: artifacts

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/security-audit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ jobs:
fetch-depth: 0

- name: Cache cargo audit database
uses: actions/cache@v4
uses: actions/cache@v5
with:
path: ~/.cache/cargo-audit
key: cargo-audit-db-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }}
Expand Down Expand Up @@ -211,7 +211,7 @@ jobs:
echo "count=$total" >> $GITHUB_OUTPUT

- name: Upload audit results as artifact
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
if: always()
with:
name: security-audit-results
Expand Down
Loading
Loading