Worker/koji-finalize: import uploaded SBOM documents

If the Koji target result contains information about any uploaded SBOM
documents, import them to Koji as part of the finalize task.

Signed-off-by: Tomáš Hozza <thozza@redhat.com>
This commit is contained in:
Tomáš Hozza 2024-09-10 17:22:30 +02:00 committed by Tomáš Hozza
parent c109265abb
commit 1c7462b275
2 changed files with 29 additions and 0 deletions

View file

@ -281,6 +281,28 @@ func (impl *KojiFinalizeJobImpl) Run(job worker.Job) error {
Type: koji.BuildOutputTypeLog,
})
}
// SBOM documents output
if len(kojiTargetOptions.SbomDocs) > 0 {
for _, sbomDoc := range kojiTargetOptions.SbomDocs {
outputs = append(outputs, koji.BuildOutput{
BuildRootID: uint64(i),
Filename: sbomDoc.Filename,
FileSize: sbomDoc.Size,
Arch: buildResult.Arch,
ChecksumType: koji.ChecksumType(sbomDoc.ChecksumType),
Checksum: sbomDoc.Checksum,
Type: koji.BuildOutputTypeSbomDoc,
// NB: The extra metadata are not added to the build extra metadata
// because it does not contain any useful information for SBOM documents.
Extra: &koji.BuildOutputExtra{
ImageOutput: koji.SbomDocExtraInfo{
Arch: buildResult.Arch,
},
},
})
}
}
}
build := koji.Build{

View file

@ -159,6 +159,12 @@ type ManifestExtraInfo struct {
func (ManifestExtraInfo) isImageOutputTypeMD() {}
type SbomDocExtraInfo struct {
Arch string `json:"arch"`
}
func (SbomDocExtraInfo) isImageOutputTypeMD() {}
// BuildOutputExtra holds extra metadata associated with the build output.
type BuildOutputExtra struct {
// ImageOutput holds extra metadata about a single "image" output.
@ -176,6 +182,7 @@ const (
BuildOutputTypeImage BuildOutputType = "image"
BuildOutputTypeLog BuildOutputType = "log"
BuildOutputTypeManifest BuildOutputType = "osbuild-manifest"
BuildOutputTypeSbomDoc BuildOutputType = "sbom-doc"
)
// ChecksumType represents the type of a checksum used for a BuildOutput.