Skip to content

Commit a609d2e

Browse files
committed
sbom: propogate image-resolve-mode for generator image
Signed-off-by: Justin Chadwell <[email protected]>
1 parent a2d1c24 commit a609d2e

File tree

4 files changed

+17
-7
lines changed

4 files changed

+17
-7
lines changed

control/control.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
apitypes "github.com/moby/buildkit/api/types"
1818
"github.com/moby/buildkit/cache/remotecache"
1919
"github.com/moby/buildkit/client"
20+
"github.com/moby/buildkit/client/llb"
2021
"github.com/moby/buildkit/cmd/buildkitd/config"
2122
controlgateway "github.com/moby/buildkit/control/gateway"
2223
"github.com/moby/buildkit/exporter"
@@ -414,14 +415,19 @@ func (c *Controller) Solve(ctx context.Context, req *controlapi.SolveRequest) (*
414415
if err != nil {
415416
return nil, errors.Wrapf(err, "failed to parse sbom generator %s", src)
416417
}
418+
ref = reference.TagNameOnly(ref)
417419

418420
useCache := true
419421
if v, ok := req.FrontendAttrs["no-cache"]; ok && v == "" {
420422
// disable cache if cache is disabled for all stages
421423
useCache = false
422424
}
423-
ref = reference.TagNameOnly(ref)
424-
procs = append(procs, proc.SBOMProcessor(ref.String(), useCache))
425+
resolveMode := llb.ResolveModeDefault.String()
426+
if v, ok := req.FrontendAttrs["image-resolve-mode"]; ok {
427+
resolveMode = v
428+
}
429+
430+
procs = append(procs, proc.SBOMProcessor(ref.String(), useCache, resolveMode))
425431
}
426432

427433
if attrs, ok := attests["provenance"]; ok {

frontend/attestations/sbom/sbom.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,12 @@ const (
3333
// attestation.
3434
type Scanner func(ctx context.Context, name string, ref llb.State, extras map[string]llb.State, opts ...llb.ConstraintsOpt) (result.Attestation[*llb.State], error)
3535

36-
func CreateSBOMScanner(ctx context.Context, resolver llb.ImageMetaResolver, scanner string) (Scanner, error) {
36+
func CreateSBOMScanner(ctx context.Context, resolver llb.ImageMetaResolver, scanner string, resolveOpt llb.ResolveImageConfigOpt) (Scanner, error) {
3737
if scanner == "" {
3838
return nil, nil
3939
}
4040

41-
_, dt, err := resolver.ResolveImageConfig(ctx, scanner, llb.ResolveImageConfigOpt{})
41+
_, dt, err := resolver.ResolveImageConfig(ctx, scanner, resolveOpt)
4242
if err != nil {
4343
return nil, err
4444
}

frontend/dockerfile/builder/build.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,9 @@ func Build(ctx context.Context, c client.Client) (_ *client.Result, err error) {
9999

100100
var scanner sbom.Scanner
101101
if bc.SBOM != nil {
102-
scanner, err = sbom.CreateSBOMScanner(ctx, c, bc.SBOM.Generator)
102+
scanner, err = sbom.CreateSBOMScanner(ctx, c, bc.SBOM.Generator, llb.ResolveImageConfigOpt{
103+
ResolveMode: opts["image-resolve-mode"],
104+
})
103105
if err != nil {
104106
return nil, err
105107
}

solver/llbsolver/proc/sbom.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
"github.com/pkg/errors"
1515
)
1616

17-
func SBOMProcessor(scannerRef string, useCache bool) llbsolver.Processor {
17+
func SBOMProcessor(scannerRef string, useCache bool, resolveMode string) llbsolver.Processor {
1818
return func(ctx context.Context, res *llbsolver.Result, s *llbsolver.Solver, j *solver.Job, usage *resources.SysSampler) (*llbsolver.Result, error) {
1919
// skip sbom generation if we already have an sbom
2020
if sbom.HasSBOM(res.Result) {
@@ -26,7 +26,9 @@ func SBOMProcessor(scannerRef string, useCache bool) llbsolver.Processor {
2626
return nil, err
2727
}
2828

29-
scanner, err := sbom.CreateSBOMScanner(ctx, s.Bridge(j), scannerRef)
29+
scanner, err := sbom.CreateSBOMScanner(ctx, s.Bridge(j), scannerRef, llb.ResolveImageConfigOpt{
30+
ResolveMode: resolveMode,
31+
})
3032
if err != nil {
3133
return nil, err
3234
}

0 commit comments

Comments
 (0)