Skip to content

feat(build): add hve-core release pipeline with dependency SBOM and signing artifacts#420

Merged
WilliamBerryiii merged 3 commits into
mainfrom
feat/release-pipeline-sbom-scorecard-419
Apr 8, 2026
Merged

feat(build): add hve-core release pipeline with dependency SBOM and signing artifacts#420
WilliamBerryiii merged 3 commits into
mainfrom
feat/release-pipeline-sbom-scorecard-419

Conversation

@WilliamBerryiii
Copy link
Copy Markdown
Member

Pull Request

Description

Add hve-core-aligned release pipeline with dependency SBOM generation, Sigstore signing artifact uploads, and OpenSSF Scorecard trigger improvements. Mirrors the release pipeline patterns from microsoft/hve-core to improve supply chain security posture.

Closes #419

Type of Change

  • ✨ New feature (non-breaking change adding functionality)

Component(s) Affected

  • workflows/ - Training and evaluation workflows

Changes

Release Pipeline (main.yml)

  • generate-dependency-sbom job: sparse-checkout of all 16 dependency manifests (package.json, pyproject.toml, uv.lock, go.mod) across JavaScript, Python, and Go ecosystems; generates dependencies.spdx.json via anchore/sbom-action with .syft.yaml config and uploads to release assets
  • Triple attestation in attest-release: build provenance, artifact SBOM, and dependency SBOM attestations via actions/attest; extracts .sigstore.json and .intoto.jsonl signing artifacts from the attestation bundle and uploads them to the release
  • sbom-diff job: downloads previous release's dependencies.spdx.json, computes added/removed/changed dependency diff, and uploads dependency-diff.md to the release
  • append-verification-notes job: appends Sigstore verification CLI instructions to release notes
  • publish-release dependencies updated to gate on all new jobs

Scorecard Workflow (scorecard.yml)

  • Added workflow_run trigger keyed to CI workflow completion so Scorecard re-scans immediately after releases
  • Added workflow_dispatch for manual re-runs
  • Added concurrency group to prevent duplicate runs
  • Added condition to skip workflow_run triggers from failed CI runs

SBOM Cataloger Config (.syft.yaml)

  • New Syft configuration for JavaScript (npm), Python, and Go catalogers with search-remote-licenses enabled

Testing Performed

  • YAML validated with yaml.safe_load (0 errors)
  • YAML validated with actionlint (0 errors)

Documentation Impact

  • No documentation changes needed

Checklist

…igning artifacts

- add .syft.yaml cataloger config for JavaScript, Python, and Go dependencies
- add generate-dependency-sbom job with sparse-checkout of all dependency manifests
- add triple attestation (build provenance, artifact SBOM, dependency SBOM)
- add sbom-diff and append-verification-notes release pipeline jobs
- upload .sigstore.json and .intoto.jsonl signing artifacts to release assets

Closes #419

📦 - Generated by Copilot
@WilliamBerryiii WilliamBerryiii requested a review from a team as a code owner April 8, 2026 19:07
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 8, 2026

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Snapshot Warnings

⚠️: No snapshots were found for the head SHA 9b56d5a.
Ensure that dependencies are being submitted on PR branches and consider enabling retry-on-snapshot-warnings. See the documentation for more information and troubleshooting advice.

OpenSSF Scorecard

PackageVersionScoreDetails
actions/actions/download-artifact 95815c38cf2ff2164869cbab79da8d1f422bc89e 🟢 6.1
Details
CheckScoreReason
Packaging⚠️ -1packaging workflow not detected
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Maintained🟢 1025 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Code-Review🟢 10all changesets reviewed
Binary-Artifacts🟢 10no binaries found in the repo
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Security-Policy🟢 9security policy file detected
Branch-Protection⚠️ 0branch protection not enabled on development/release branches
SAST🟢 10SAST tool is run on all commits
actions/actions/upload-artifact bbbca2ddaa5d8feaa63e36b76fdaad77386f024f 🟢 5.7
Details
CheckScoreReason
Code-Review🟢 10all changesets reviewed
Maintained🟢 54 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 5
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Binary-Artifacts🟢 10no binaries found in the repo
Packaging⚠️ -1packaging workflow not detected
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
Pinned-Dependencies⚠️ 1dependency not pinned by hash detected -- score normalized to 1
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Signed-Releases⚠️ -1no releases found
Security-Policy🟢 9security policy file detected
Branch-Protection⚠️ 0branch protection not enabled on development/release branches
SAST🟢 10SAST tool is run on all commits

Scanned Files

  • .github/workflows/main.yml

@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented Apr 8, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 64.04%. Comparing base (d97d42c) to head (9b56d5a).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #420   +/-   ##
=======================================
  Coverage   64.04%   64.04%           
=======================================
  Files         250      250           
  Lines       15319    15319           
  Branches     2108     2060   -48     
=======================================
  Hits         9811     9811           
  Misses       5220     5220           
  Partials      288      288           
Flag Coverage Δ
pester 81.21% <ø> (ø)
pytest 92.40% <ø> (ø)
pytest-dataviewer 63.87% <ø> (ø)
pytest-fuzz 1.59% <ø> (ø)
vitest 50.80% <ø> (ø)
🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@WilliamBerryiii WilliamBerryiii merged commit 2ff839a into main Apr 8, 2026
31 checks passed
@WilliamBerryiii WilliamBerryiii deleted the feat/release-pipeline-sbom-scorecard-419 branch April 8, 2026 20:31
WilliamBerryiii pushed a commit that referenced this pull request Apr 9, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.7.0](v0.6.1...v0.7.0)
(2026-04-09)


### ✨ Features

* **build:** add hve-core release pipeline with dependency SBOM and
signing artifacts
([#420](#420))
([2ff839a](2ff839a))
* **build:** enforce strict warnings across all linters
([#392](#392))
([b75e217](b75e217))
* **evaluation:** add fuzz testing infrastructure and property-based
tests
([#416](#416))
([d97d42c](d97d42c))
* **infrastructure:** add optional ADLS Gen2 data lake storage account
([#398](#398))
([3bb9012](3bb9012))
* **settings:** add HVE Core extension to workspace and devcontainer
recommendations
([#226](#226))
([f0735d8](f0735d8))


### 🐛 Bug Fixes

* **docs:** fix broken links, harden Docusaurus config, and integrate CI
workflow
([#430](#430))
([ea99997](ea99997))
* **scripts:** join shellcheck version output before -match to populate
$Matches
([#432](#432))
([8768e76](8768e76))
* **scripts:** map unmapped ShellCheck severity levels and harden
version parsing
([#434](#434))
([1e95a17](1e95a17))
* **scripts:** resolve ShellCheck SC2034 and enable source-path
resolution
([#443](#443))
([04438ea](04438ea))


### 🔧 Miscellaneous

* **deps-dev:** bump basic-ftp from 5.2.0 to 5.2.1
([#429](#429))
([438660a](438660a))
* **deps:** bump cryptography from 46.0.6 to 46.0.7
([#425](#425))
([2366647](2366647))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: physical-ai-toolchain-release[bot] <267194360+physical-ai-toolchain-release[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add hve-core release pipeline with dependency SBOM, signing artifacts, and Scorecard fixes

3 participants