diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..1a91d14 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,34 @@ +version: 2 +updates: + - package-ecosystem: "cargo" + directory: "/" + schedule: + interval: "weekly" + day: "monday" + time: "04:00" + timezone: "UTC" + open-pull-requests-limit: 5 + commit-message: + prefix: "chore(deps)" + groups: + cargo-minor-and-patch: + patterns: + - "*" + update-types: + - "minor" + - "patch" + + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + day: "monday" + time: "04:00" + timezone: "UTC" + open-pull-requests-limit: 5 + commit-message: + prefix: "ci(deps)" + groups: + github-actions: + patterns: + - "*" diff --git a/.github/workflows/security-audit.yml b/.github/workflows/security-audit.yml new file mode 100644 index 0000000..9fdfdbc --- /dev/null +++ b/.github/workflows/security-audit.yml @@ -0,0 +1,40 @@ +name: Security audit + +on: + push: + pull_request: + schedule: + # Weekly, Mondays at 04:17 UTC + - cron: "17 4 * * 1" + +permissions: + contents: read + +concurrency: + group: security-audit-${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + audit: + name: cargo audit + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 + with: + persist-credentials: false + + - name: Install stable Rust toolchain + uses: dtolnay/rust-toolchain@b725eda525362e7cf34af9a7243cac1e3f01a7ec # stable + with: + toolchain: stable + + - name: Install cargo-audit + run: cargo install cargo-audit --version 0.22.2 --locked + + # api does not commit a Cargo.lock, so generate one for scanning only. + - name: Generate lockfile + run: cargo generate-lockfile + + - name: Audit dependencies + run: cargo audit --deny warnings diff --git a/CHANGELOG.md b/CHANGELOG.md index bd07e58..e40bcf7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 2026-10-24 — Dependency security automation + +- Added `.github/workflows/security-audit.yml`: runs `cargo audit` 0.22.2 with `--deny warnings` on push, pull request and a weekly schedule. The workflow generates a temporary lockfile before auditing because the workspace does not version one. +- Added weekly Dependabot updates for Cargo dependencies and GitHub Actions (`open-pull-requests-limit: 5`, minor/patch grouped). +- Actions are pinned by commit SHA and checkouts do not persist credentials. No crate source or public API changed; a generated lockfile audits clean (16 crates, 0 vulnerabilities, 0 warnings). + ## 2026-09-12 - Added `xfetch-guest-api`: host-call bridge for WebAssembly core-module guests (`host_call`, `http_request`, `exec`, `log`, `protocol_version`) plus the `xfetch_alloc`/`xfetch_free` exports the host needs. - Added `wit/xfetch-runtime.wit`: the component-model contract with `plugin`, `effect` and `extension` worlds and the typed `fetch`/`exec`/`log`/`protocol-version` host interface.