Skip to content

Add SLSA build provenance (or SHA256SUMS) for committed dist/bin/ launcher binaries #94

Description

@potiuk

Hi matlab-actions team,

Starting with v3.1.0 / v3.1.1 the release pipeline commits the MATLAB launcher binaries directly into the action tree:

dist/bin/glnxa64/run-matlab-command
dist/bin/maca64/run-matlab-command
dist/bin/maci64/run-matlab-command
dist/bin/win64/run-matlab-command.exe

This is a real improvement over fetching them via common-utils at install time — consumers who pin a SHA now get exactly the bytes you shipped at release time, not whatever a CDN happens to serve later.

It does, however, leave one gap on the downstream-review side: there's no way to tie those bytes back to the workflow run that produced them. The launcher (src/index.tsdist/index.js) rebuilds cleanly from source, but the four native binaries are opaque to any rebuild check.

We're running into this on the Apache Software Foundation side, where apache/infrastructure-actions allowlists every action SHA used by ASF projects. Our automated check (verify-action-build) classifies v3.1.1 as "unverified pre-compiled binaries" because neither of its two verification paths is available:

  1. gh attestation verify --owner matlab-actions <binary> — no SLSA attestation found.
  2. Release asset SHA256SUMS — no assets are attached to any release.

The downstream PR is apache/infrastructure-actions#846; we'd like to land v3.1.1, but the policy is to hold in-tree binaries without provenance.

Either of these would close the gap:

(a) Add actions/attest-build-provenance to .github/workflows/publish.yml so each binary gets a SLSA attestation. The runs-on/action project did this in a one-line PR (runs-on/action#37) and the result was that gh attestation verify --owner runs-on <binary> started succeeding for every subsequent release. This is the strongest signal and ideal because it ties each artifact to the exact workflow run.

(b) Or ship a SHA256SUMS file as a release asset listing the four dist/bin/* binaries. A simple sha256sum dist/bin/*/run-matlab-command* > SHA256SUMS + gh release upload step in publish.yml works. Weaker than (a) (the checksum file itself isn't signed yet) but a strong cryptographic chain from release to the bytes that ship.

Happy to send a PR with the workflow change if it would help — let me know which path you'd prefer.

Thanks!

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions