* feat: Add GitHub Actions workflows for security audits, CodeQL analysis, contributor updates, performance benchmarks, integration tests, fuzz testing, and reusable Rust build jobs - Implemented `sec-audit.yml` for Rust package security audits using `rustsec/audit-check` and `cargo-deny-action`. - Created `sec-codeql.yml` for CodeQL analysis scheduled twice daily. - Added `sync-contributors.yml` to update the NOTICE file with new contributors automatically. - Introduced `test-benchmarks.yml` for performance benchmarks using Criterion. - Established `test-e2e.yml` for running integration and end-to-end tests. - Developed `test-fuzz.yml` for fuzz testing with configurable runtime. - Created `test-rust-build.yml` as a reusable job for executing Rust commands with customizable parameters. - Documented main branch delivery flows in `main-branch-flow.md` for clarity on CI/CD processes. * ci(workflows): update workflow scripts and rename for clarity; remove obsolete lint feedback script * chore(ci): externalize workflow scripts and relocate main flow doc * chore(ci): align workflow names with file naming style
62 lines
1.6 KiB
YAML
62 lines
1.6 KiB
YAML
name: Test Rust Build
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
run_command:
|
|
description: "Shell command(s) to execute."
|
|
required: true
|
|
type: string
|
|
timeout_minutes:
|
|
description: "Job timeout in minutes."
|
|
required: false
|
|
default: 20
|
|
type: number
|
|
toolchain:
|
|
description: "Rust toolchain channel/version."
|
|
required: false
|
|
default: "stable"
|
|
type: string
|
|
components:
|
|
description: "Optional rustup components."
|
|
required: false
|
|
default: ""
|
|
type: string
|
|
targets:
|
|
description: "Optional rustup targets."
|
|
required: false
|
|
default: ""
|
|
type: string
|
|
use_cache:
|
|
description: "Whether to enable rust-cache."
|
|
required: false
|
|
default: true
|
|
type: boolean
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
run:
|
|
runs-on: blacksmith-2vcpu-ubuntu-2404
|
|
timeout-minutes: ${{ inputs.timeout_minutes }}
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
|
|
|
- name: Setup Rust toolchain
|
|
uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable
|
|
with:
|
|
toolchain: ${{ inputs.toolchain }}
|
|
components: ${{ inputs.components }}
|
|
targets: ${{ inputs.targets }}
|
|
|
|
- name: Restore Rust cache
|
|
if: inputs.use_cache
|
|
uses: useblacksmith/rust-cache@f53e7f127245d2a269b3d90879ccf259876842d5 # v3
|
|
|
|
- name: Run command
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
${{ inputs.run_command }}
|