Repository navigation
release(v3.1.x): v3.1.4 prep and standard dependency audit - #395
Merged
Merged
Conversation
- Migrate the three documented ignores from v3/audit-ignore to v3/.cargo/audit.toml ([advisories] ignore), adding advisory links, and delete v3/audit-ignore. - Replace the "Security Audit" job with "Dependency Audit": cargo-audit pinned to 0.22.2 (SHA-pinned binstall), `cargo audit --deny warnings` run in v3/, no `if:`, so it runs on every push, pull_request and workflow_dispatch. Drop the run-audit dispatch input. - Drop the ci-v3.yml path filters so the check always reports on v3.1.x PRs and pushes. - CI v3 Required Checks and CI v3 Status now fail when Dependency Audit is anything but success. - Pin aquasecurity/trivy-action by SHA to v0.36.0 with Trivy v0.76.0. - cargo-audit.sh (used by `make v3-audit`) now runs the same command; `make v3-audit` installs cargo-audit 0.22.2 --locked.
- ci-v3.yml mark-passed also runs for pushes to v3.1.x, so the commit a v3.1.x release tag points at gets the v3-ci-passed-<sha>-<distro> images that release-v3.yml's verify-ci-image looks up. - release-v3.yml update-version-files checks out v3.1.x instead of main (main has no v3 product code and is protected) and pushes HEAD:v3.1.x. A new guard step skips the changelog, the next-version bump, the Cargo.lock regeneration and the push when v3/CHANGELOG.md already has the released version and v3/Cargo.toml already carries it, which the release PR provides. - SHA-pin the floating actions in the jobs touched here (mark-passed, verify-ci-image, publish-npm, update-version-files). docker/login-action is pinned to v4.6.0 because the v4 tag now points at v4.7.0, which is under 3 days old.
- v3/Cargo.toml workspace version 3.1.3 -> 3.1.4 (all 12 crates inherit it); v3/Cargo.lock updated with `cargo update -w` (only the 12 sindri-* version lines change). - rust-version "1.94" -> "1.94.1": the dependency set (aws-sdk-s3 >= 1.140 and the matching aws-* crates) already requires rustc 1.94.1, which v3/rust-toolchain.toml pins. Patch-level, within the line. - packages/@pacphi/sindri-cli* package.json: version and the wrapper's optionalDependencies 3.1.0 -> 3.1.4 (publish-npm also sets them from the tag at release time). - v3/CHANGELOG.md: add the [3.1.4] - 2026-10-23 entry summarising #385's security fixes and this PR. Prettier also normalised blank lines in older entries (whitespace only), which the pre-commit check requires.
SECURITY.md keeps v3 supported with ongoing v3.1.x releases, so the entry should not call 3.1.4 the line's final release.
Pin every action in the v3 release workflow (release-v3.yml) by commit SHA, with a `# vX.Y.Z` comment, at the newest release within its current major (0.x: minor) that is at least 3 days old. This covers build-binaries, generate-changelog, promote-image, sign-image, attest-provenance, generate-sbom, create-release and notify-release; the jobs already pinned earlier use the same SHAs. - actions/checkout v6.1.0, actions/upload-artifact v7.0.2, actions/download-artifact v8.0.2, actions/cache v5.1.0, actions/attest-build-provenance v4.2.2, actions/github-script v8.0.0, docker/metadata-action v6.2.0, softprops/action-gh-release v2.6.2, anchore/sbom-action v0.22.2, dtolnay/rust-toolchain stable (b725eda): the same commits their floating tags resolve to today. - docker/login-action v4.6.0: the v4 tag now points at v4.7.0 (published 2026-10-23), which is under 3 days old. - sigstore/cosign-installer v4.1.0 -> v4.1.2 (patch, 2026-05-07). No behaviour change otherwise; make_latest is left unset, so a stable v3 release still becomes GitHub's Latest release.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR prepares the v3.1.4 patch release from the
v3.1.xmaintenance branch. There is no release candidate. It also movesv3.1.xonto the owner's dependency-audit standard. #385's security fixes are already on the branch; this PR adds the audit standard, the release-workflow fixes and the version bump.No tag is created here. The tag is pushed after merge; see "Tagging" below.
Commits
1.
ci(v3.1.x): standard Dependency Audit with native .cargo/audit.tomlv3/audit-ignorenow live inv3/.cargo/audit.tomlunder[advisories] ignore, andv3/audit-ignoreis deleted. Each entry keeps its path, reasoning, reachability and exit condition, and now also has its RustSec link.Security AuditbecomesDependency Audit. The new job:cargo binstall --locked cargo-audit@0.22.2, with a SHA-pinnedcargo-bins/cargo-binstallv1.17.7;cargo audit --deny warningsinv3/;if:, and therun-auditdispatch input is removed.ci-v3.yml(deliberate). Every push and PR onv3.1.xnow runs the workflow:Dependency Auditcheck always reports, so no PR can wait forever on a check that never runs.v3.1.xbuilds the CI image that the release promotes.CI v3 Required ChecksandCI v3 Statusboth fail whenDependency Auditis anything butsuccess.aquasecurity/trivy-actionis pinned toed142fd0673e97e23eac54620cfb913e5ce36c25 # v0.36.0, which is the annotated tag dereferenced to its commit. It also setsversion: v0.76.0, the newest Trivy release at least 3 days old; v0.76.1 came out 2026-10-21T11:18Z.make v3-audit..github/scripts/v3/cargo-audit.shnow runs the same command, andmake v3-auditinstalls cargo-audit--version 0.22.2 --locked.2.
ci(v3.1.x): release the v3 line from v3.1.xmark-passed(inci-v3.yml) now runs for pushes torefs/heads/v3.1.xas well asmain. This producesv3-ci-passed-<sha>-{ubuntu,fedora,opensuse}, the imagesverify-ci-imagelooks for first.update-version-files(inrelease-v3.yml):ref: v3.1.xinstead ofmainand pushesHEAD:v3.1.x.cargo generate-lockfile, and tried to push. Now, whenv3/CHANGELOG.mdalready has## [<version>]and[workspace.package] versionalready equals the tag version, the job skips every later step: download, changelog, bump, toolchain, lockfile regeneration, commit and push. The job still succeeds.3.1.4givesskip=trueand3.1.5givesskip=false.mark-passed,verify-ci-image,publish-npm,update-version-files), in main's@<sha> # vX.Y.Zstyle:stable@ b725eda (2026-10-16).docker/login-actionis pinned to v4.6.0, because@v4now resolves to v4.7.0 (published 2026-10-23T15:22Z, under 3 days old).3.
chore(v3.1.x): prepare v3.1.4v3/Cargo.tomlworkspace version goes 3.1.3 → 3.1.4, and all 12 crates inherit it.v3/Cargo.lockwas updated withcargo update -w, which changes only the 12sindri-*version lines.rust-versiongoes"1.94"→"1.94.1". aws-sdk-s3 ≥ 1.140 and the matching aws-* crates already require it, andrust-toolchain.tomlalready pins 1.94.1. This is a patch-level change.packages/@pacphi/sindri-cli*/package.jsonversion, and the wrapper's 5optionalDependencies, go 3.1.0 → 3.1.4.v3/CHANGELOG.mdgets a## [3.1.4] - 2026-10-23entry summarizing deps(v3.1.x): consolidate dependency updates and security fixes #385's security fixes and this PR. Prettier also normalized blank lines in older entries (whitespace only), because the pre-commitprettier --checkrequires it.4.
docs(v3.1.x): describe 3.1.4 as a v3.1.x patch release in the CHANGELOGSECURITY.mdkeeps v3 supported with ongoing v3.1.x releases, so the entry no longer calls 3.1.4 the line's "final" release.5.
ci(v3.1.x): pin release actionsrelease-v3.ymlis now pinned by commit SHA with a# vX.Y.Zcomment. Each is at the newest release in its major (0.x: minor) that is at least 3 days old.docker/login-actionis pinned to v4.6.0;@v4now points at v4.7.0, which is under 3 days old.sigstore/cosign-installermoves from v4.1.0 to v4.1.2.make_latestis unchanged, so v3.1.4 becomes GitHub's Latest release.Audit
cd v3 && cargo audit --deny warningswith only.cargo/audit.toml(cargo-audit 0.22.2, 1351 advisories, 599 crates).cargo/audit.tomlremoved (control)What
release-v3.ymlwill do for tagv3.1.4The tag push runs the workflow file as of the tagged commit, which is this branch's version of the file.
version=3.1.4,is_prerelease=falsev3.1.3..v3.1.4touchingv3/; this becomes the GitHub Release body (not the CHANGELOG.md entry)cross), macOS aarch64, windows x86_64; rustc 1.94.1 fromv3/rust-toolchain.toml; binaries reportsindri 3.1.4v3-ci-passed-<tagged sha>-ubuntu, thenv3-ci-<sha>-ubuntu, then up to 10 ancestors with no container-affecting changecosign sign --yes(keyless, by digest) for3.1.4-{ubuntu,fedora,opensuse}actions/attest-build-provenancefor each distro's3.1.4-<distro>digest:3.1.4, attached withcosign attach sbom, and uploaded as an artifact[3.1.4]and Cargo 3.1.4, so it skips without pushing.sha256files,checksums.txt,install-v3.sh,VERIFY.md,sbom.spdx.jsonpromote-image tags:
3.1.4-<d>,3.1-<d>,3-<d>,<d>,latest-<d>.3.1.4,3.1,3,v3,v3-latest,latest.DOCKERHUB_USERNAMEandDOCKERHUB_TOKENare set, and neither is a repository secret today.publish-npm:
npm publish --provenance --access public --tag latestfor@pacphi/sindri-cli-{linux-x64,linux-arm64,darwin-arm64,win32-x64}@3.1.4, then for the@pacphi/sindri-cli@3.1.4wrapper.latestpoints to 3.1.3 for all of them.@pacphi/sindri-cli-darwin-x64is in the wrapper'soptionalDependenciesbut is never built or published. That was already true for 3.1.3. npm skips the missing optional package, andnpm install @pacphi/sindri-cli@3.1.3works, but Intel Macs get no binary.Tagging
v3.1.x(git rev-parse origin/v3.1.xright after merge).v3: CIpush run has finishedMark Promotion Candidates.v3.1.xin between.ci-v3usescancel-in-progress, and no v3.1.x commit has av3-ci-passed-*image yet. The ancestor fallback also stops at this PR, because it changesv3/.Unverified / for the owner
build-binaries(especially thecrossaarch64 build, which installscrossfrom git HEAD), the npm publish, cosign signing and the attestations.NPM_TOKENwas last updated 2026-03-21. Confirm it is still valid at npmjs.com before tagging. If it isn't,publish-npmfails after the images have already been promoted.v3/CHANGELOG.mdhas no[3.1.3]entry: the release bot pushed that one tomain. I didn't backfill it.PNPM_CONFIG_VERIFY_DEPS_BEFORE_RUN=false, because of the knownpnpm.overridesissue.🤖 Generated with Claude Code