nigig-org/nimanyatta/.github/workflows/predeploy-security.yml
andodeki fd8b0632ca
Some checks failed
repo hygiene / hygiene (push) Has been cancelled
Include nimanyatta as normal tree (not embedded git)
2026-09-26 09:29:36 +03:00

69 lines
2 KiB
YAML

name: predeploy-security
# Runs on every PR/push to main and can be triggered manually before a deploy.
on:
push:
branches: [main]
pull_request:
workflow_dispatch:
permissions:
contents: read
security-events: write
jobs:
secrets-scan:
name: Secret scanning
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Scan for leaked secrets
uses: gitleaks/gitleaks-action@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
shellcheck:
name: Lint deploy scripts
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run shellcheck on deploy scripts
run: |
shellcheck deploy/hardening.sh deploy/verify-hardening.sh
cargo-audit:
name: Dependency vulnerability audit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Install cargo-audit
run: cargo install cargo-audit --locked
- name: Audit dependencies
run: cargo audit
build-release:
name: Release build check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Build broadcast_server (release)
run: cargo build --release --features b_server --bin broadcast_server
env:
CARGO_TERM_COLOR: always
hardening-verify:
name: Verify hardening checks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Syntax-check hardening scripts
run: bash -n deploy/hardening.sh deploy/verify-hardening.sh
- name: Create mock environment and run verification
run: |
# Build a minimal fake environment to prove verify-hardening.sh is safe to run
# on a server and fails cleanly when nothing is hardened (non-root here).
bash deploy/verify-hardening.sh || echo "verify-hardening.sh correctly reported unhardened state (exit $?)"