ci: least-privilege release publishing, no persisted tokens, pinned audit, checksums
- Release Builds: the build/test matrix ran ~1,400 third-party build scripts and tests with a contents:write token persisted in .git/config. It now runs with contents:read and persist-credentials: false; a separate publish job (no project or dependency code) downloads the artefacts, writes SHA256SUMS and attaches both to the release. The release now waits for every platform instead of publishing partially. - CI/Fuzz checkouts don't persist credentials; cargo-audit is pinned (0.22.2), fails on yanked crates, and also audits fuzz/Cargo.lock; fuzz runs set -timeout=10 so slow-input bugs (like the IRC OSC one) are reported instead of hiding under libFuzzer's 20-minute default. - updates/index.php: array-valued query parameters no longer raise TypeErrors/warnings; nosniff header.
This commit is contained in:
@@ -22,6 +22,8 @@ jobs:
|
||||
working-directory: rust
|
||||
steps:
|
||||
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Linux dependencies (GUI libs, and sshd for the SSH integration tests)
|
||||
if: runner.os == 'Linux'
|
||||
run: |
|
||||
@@ -39,6 +41,10 @@ jobs:
|
||||
working-directory: rust
|
||||
steps:
|
||||
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
|
||||
- run: cargo install cargo-audit --locked
|
||||
# Ignored advisories and their reasons live in rust/.cargo/audit.toml.
|
||||
- run: cargo audit
|
||||
with:
|
||||
persist-credentials: false
|
||||
- run: cargo install cargo-audit --version 0.22.2 --locked
|
||||
# Ignored advisories and their reasons live in rust/.cargo/audit.toml. Yanked crates
|
||||
# fail the build; the fuzz workspace has its own lockfile, so it's audited too.
|
||||
- run: cargo audit --deny yanked
|
||||
- run: cargo audit --deny yanked --file fuzz/Cargo.lock
|
||||
|
||||
Reference in New Issue
Block a user