Publish and verify

Publish a reproducible release

A package release connects a Git revision, one manifest and the image digest produced for it. The repository is the package origin; the Store is a catalog that points people to that origin.

Make the source and image agree

Build the image from the tagged source and publish every supported architecture. image_ref: source can follow the selected Git branch, release or commit while cpak lock records immutable image digests for the resolved graph.

cpak validate cpak.json
cpak lock cpak.json
cpak test cpak.json

Attach an SBOM and build provenance in CI. Verify vendor checksums before copying artifacts into an image, and keep the final stage free of build caches.

Write for the Store separately

README.md explains the repository to contributors. STORE-README.md explains installation, first launch or vendor authentication to the person using the package. The Store reads it from the same resolved tag or commit as the manifest, never from an unrelated moving branch.

Review permission changes as API changes

Adding a permission changes the package contract. Interactive updates show the new request before activation. Non-interactive updates refuse a permission increase. Mention the reason in the package release rather than hiding it in a manifest diff.

Test first install, update, rollback and removal. If the package has addons or nested dependencies, include their install and cleanup paths in the test.

Publishing packages covers Store metadata, signatures and release channels.

Projects and technologies around cpak