@@ -9213,7 +9213,13 @@ cat <<EOF > $BUILDKIT_SCAN_DESTINATION/spdx.json
9213
9213
{
9214
9214
"_type": "https://in-toto.io/Statement/v0.1",
9215
9215
"predicateType": "https://spdx.dev/Document",
9216
- "predicate": {"name": "fallback"}
9216
+ "predicate": {
9217
+ "name": "fallback",
9218
+ "extraParams": {
9219
+ "ARG1": "$BUILDKIT_SCAN_ARG1",
9220
+ "ARG2": "$BUILDKIT_SCAN_ARG2"
9221
+ }
9222
+ }
9217
9223
}
9218
9224
EOF
9219
9225
`
@@ -9436,6 +9442,74 @@ EOF
9436
9442
require .Equal (t , "https://in-toto.io/Statement/v0.1" , attest .Type )
9437
9443
require .Equal (t , intoto .PredicateSPDX , attest .PredicateType )
9438
9444
require .Subset (t , attest .Predicate , map [string ]interface {}{"name" : "frontend" })
9445
+
9446
+ // test configuring the scanner (simple)
9447
+ target = registry + "/buildkit/testsbom4:latest"
9448
+ _ , err = c .Build (sb .Context (), SolveOpt {
9449
+ FrontendAttrs : map [string ]string {
9450
+ "attest:sbom" : "generator=" + scannerTarget + ",ARG1=foo,ARG2=bar" ,
9451
+ },
9452
+ Exports : []ExportEntry {
9453
+ {
9454
+ Type : ExporterImage ,
9455
+ Attrs : map [string ]string {
9456
+ "name" : target ,
9457
+ "push" : "true" ,
9458
+ },
9459
+ },
9460
+ },
9461
+ }, "" , makeTargetFrontend (false ), nil )
9462
+ require .NoError (t , err )
9463
+
9464
+ desc , provider , err = contentutil .ProviderFromRef (target )
9465
+ require .NoError (t , err )
9466
+
9467
+ imgs , err = testutil .ReadImages (sb .Context (), provider , desc )
9468
+ require .NoError (t , err )
9469
+ require .Equal (t , 2 , len (imgs .Images ))
9470
+
9471
+ att = imgs .Find ("unknown/unknown" )
9472
+ attest = intoto.Statement {}
9473
+ require .NoError (t , json .Unmarshal (att .LayersRaw [0 ], & attest ))
9474
+ require .Equal (t , "https://in-toto.io/Statement/v0.1" , attest .Type )
9475
+ require .Equal (t , intoto .PredicateSPDX , attest .PredicateType )
9476
+ require .Subset (t , attest .Predicate , map [string ]interface {}{
9477
+ "extraParams" : map [string ]interface {}{"ARG1" : "foo" , "ARG2" : "bar" },
9478
+ })
9479
+
9480
+ // test configuring the scanner (complex)
9481
+ target = registry + "/buildkit/testsbom4:latest"
9482
+ _ , err = c .Build (sb .Context (), SolveOpt {
9483
+ FrontendAttrs : map [string ]string {
9484
+ "attest:sbom" : "\" generator=" + scannerTarget + "\" ,\" ARG1=foo\" ,\" ARG2=hello,world\" " ,
9485
+ },
9486
+ Exports : []ExportEntry {
9487
+ {
9488
+ Type : ExporterImage ,
9489
+ Attrs : map [string ]string {
9490
+ "name" : target ,
9491
+ "push" : "true" ,
9492
+ },
9493
+ },
9494
+ },
9495
+ }, "" , makeTargetFrontend (false ), nil )
9496
+ require .NoError (t , err )
9497
+
9498
+ desc , provider , err = contentutil .ProviderFromRef (target )
9499
+ require .NoError (t , err )
9500
+
9501
+ imgs , err = testutil .ReadImages (sb .Context (), provider , desc )
9502
+ require .NoError (t , err )
9503
+ require .Equal (t , 2 , len (imgs .Images ))
9504
+
9505
+ att = imgs .Find ("unknown/unknown" )
9506
+ attest = intoto.Statement {}
9507
+ require .NoError (t , json .Unmarshal (att .LayersRaw [0 ], & attest ))
9508
+ require .Equal (t , "https://in-toto.io/Statement/v0.1" , attest .Type )
9509
+ require .Equal (t , intoto .PredicateSPDX , attest .PredicateType )
9510
+ require .Subset (t , attest .Predicate , map [string ]interface {}{
9511
+ "extraParams" : map [string ]interface {}{"ARG1" : "foo" , "ARG2" : "hello,world" },
9512
+ })
9439
9513
}
9440
9514
9441
9515
func testSBOMScanSingleRef (t * testing.T , sb integration.Sandbox ) {
0 commit comments