@@ -20,6 +20,75 @@ Reusable workflows must be placed in the `.github/workflows` directory as mentio
2020
2121## Usage
2222
23+ ### release-build-output
24+
25+ Release build-output companions are created inside the producer job by the
26+ [ ` release-build-output-dispatch ` ] ( https://github.com/rapidsai/shared-actions/tree/main/release-build-output-dispatch )
27+ shared action. Running beside the build keeps the producer's matrix,
28+ source-artifact name, and original files authoritative and avoids a second
29+ runner and artifact download.
30+
31+ The standard wheel and Conda builders expose opt-in ` release-build-output ` and
32+ ` release-unit ` inputs. The shared action reads exact package metadata from the
33+ built files and uploads ` release-build-output-<artifact-name> ` :
34+
35+ ``` yaml
36+ wheel-build-nx-cugraph :
37+ uses : rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@codex/release-build-output-manifests
38+ with :
39+ # existing build inputs omitted
40+ release-build-output : true
41+ release-unit : wheel:nx-cugraph
42+ ` ` `
43+
44+ ` custom-job.yaml` exposes the same opt-in plus `release-output-directory`,
45+ ` release-artifacts` , and either `release-package` or
46+ ` release-package-file` . Descriptors may name producer-supplied SBOM,
47+ provenance, and signature sidecars relative to the output directory. Each path
48+ or glob must resolve to exactly one file; the action never guesses a release
49+ artifact.
50+
51+ ` ` ` yaml
52+ cuvs-java-build:
53+ uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@codex/release-build-output-manifests
54+ with:
55+ # existing build inputs omitted
56+ artifact-name: cuvs-java-cuda12.9.1
57+ file_to_upload: java/cuvs-java/target/
58+ release-build-output: true
59+ release-output-directory: java/cuvs-java/target
60+ release-unit: maven:cuvs-java
61+ release-package-file: cuvs-java.release-package.json
62+ release-artifacts: '[{"path":"cuvs-java-*-x86_64-cuda*.jar"}]'
63+ ` ` `
64+
65+ The release coordinator downloads both artifacts into the same directory, for
66+ example `release-build-outputs/cuvs-java/cuda12.9.1/`. The resulting tree has
67+ one `release-build-output.json` per producer job and is consumed directly by
68+ ` rapids-release shadow file` . It does not require Artifactory.
69+
70+ The companion artifact also carries `release-build-metadata.json`. It records
71+ the artifact identity, manifest filename, GitHub build identity, and one
72+ ` metadata.artifacts` entry per primary artifact. Each entry explicitly sets
73+ ` sbom_kind` to `producer-dependency` or `generated-identity`. SBOM and
74+ provenance paths remain authoritative in `release-build-output.json`; supplied
75+ sidecars are copied under `release-evidence/` so the companion is independently
76+ self-contained.
77+
78+ When no SBOM is selected, the action generates an SPDX artifact-identity
79+ envelope containing package identity and the primary artifact SHA-256. It is
80+ classified as `generated-identity`, contains no dependency inventory, and must
81+ not be reported as a producer-supplied dependency SBOM. A descriptor-selected
82+ producer SBOM is instead classified as `producer-dependency`.
83+
84+ The in-development branch ref above is intentional for rollout canaries. It
85+ allows downstream validation before this contract is merged to
86+ ` shared-workflows/main` .
87+
88+ The cross-repository enrollment inventory, blockers, and proposed PR sequence
89+ are maintained in
90+ [`rapidsai/build-infra#381`](https://github.com/rapidsai/build-infra/issues/381).
91+
2392# ## matrix_filter
2493
2594Several of the workflows in this project have matrices (combinations of workflow inputs) expressed in inline YAML/JSON.
0 commit comments