mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-01 00:23:56 +08:00 
			
		
		
		
	build: set record provenance in response
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
This commit is contained in:
		| @@ -10,6 +10,7 @@ import ( | ||||
| 	"github.com/containerd/continuity/fs/fstest" | ||||
| 	"github.com/docker/buildx/util/gitutil" | ||||
| 	"github.com/moby/buildkit/identity" | ||||
| 	provenancetypes "github.com/moby/buildkit/solver/llbsolver/provenance/types" | ||||
| 	"github.com/moby/buildkit/util/contentutil" | ||||
| 	"github.com/moby/buildkit/util/testutil" | ||||
| 	"github.com/moby/buildkit/util/testutil/integration" | ||||
| @@ -41,7 +42,7 @@ var bakeTests = []func(t *testing.T, sb integration.Sandbox){ | ||||
| 	testBakeEmpty, | ||||
| 	testBakeShmSize, | ||||
| 	testBakeUlimits, | ||||
| 	testBakeRefs, | ||||
| 	testBakeMetadata, | ||||
| 	testBakeMultiExporters, | ||||
| 	testBakeLoadPush, | ||||
| } | ||||
| @@ -632,7 +633,19 @@ target "default" { | ||||
| 	require.Contains(t, string(dt), `1024`) | ||||
| } | ||||
|  | ||||
| func testBakeRefs(t *testing.T, sb integration.Sandbox) { | ||||
| func testBakeMetadata(t *testing.T, sb integration.Sandbox) { | ||||
| 	t.Run("max", func(t *testing.T) { | ||||
| 		bakeMetadata(t, sb, "max") | ||||
| 	}) | ||||
| 	t.Run("min", func(t *testing.T) { | ||||
| 		bakeMetadata(t, sb, "min") | ||||
| 	}) | ||||
| 	t.Run("disabled", func(t *testing.T) { | ||||
| 		bakeMetadata(t, sb, "disabled") | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func bakeMetadata(t *testing.T, sb integration.Sandbox, metadataMode string) { | ||||
| 	dockerfile := []byte(` | ||||
| FROM scratch | ||||
| COPY foo /foo | ||||
| @@ -656,7 +669,12 @@ target "default" { | ||||
| 		outFlag += ",dest=" + dirDest + "/image.tar" | ||||
| 	} | ||||
|  | ||||
| 	cmd := buildxCmd(sb, withDir(dir), withArgs("bake", "--metadata-file", filepath.Join(dirDest, "md.json"), "--set", outFlag)) | ||||
| 	cmd := buildxCmd( | ||||
| 		sb, | ||||
| 		withDir(dir), | ||||
| 		withArgs("bake", "--metadata-file", filepath.Join(dirDest, "md.json"), "--set", outFlag), | ||||
| 		withEnv("BUILDX_METADATA_PROVENANCE="+metadataMode), | ||||
| 	) | ||||
| 	out, err := cmd.CombinedOutput() | ||||
| 	require.NoError(t, err, out) | ||||
|  | ||||
| @@ -665,7 +683,8 @@ target "default" { | ||||
|  | ||||
| 	type mdT struct { | ||||
| 		Default struct { | ||||
| 			BuildRef string `json:"buildx.build.ref"` | ||||
| 			BuildRef        string                 `json:"buildx.build.ref"` | ||||
| 			BuildProvenance map[string]interface{} `json:"buildx.build.provenance"` | ||||
| 		} `json:"default"` | ||||
| 	} | ||||
| 	var md mdT | ||||
| @@ -673,6 +692,18 @@ target "default" { | ||||
| 	require.NoError(t, err) | ||||
|  | ||||
| 	require.NotEmpty(t, md.Default.BuildRef) | ||||
| 	if metadataMode == "disabled" { | ||||
| 		require.Empty(t, md.Default.BuildProvenance) | ||||
| 		return | ||||
| 	} | ||||
| 	require.NotEmpty(t, md.Default.BuildProvenance) | ||||
|  | ||||
| 	dtprv, err := json.Marshal(md.Default.BuildProvenance) | ||||
| 	require.NoError(t, err) | ||||
|  | ||||
| 	var prv provenancetypes.ProvenancePredicate | ||||
| 	require.NoError(t, json.Unmarshal(dtprv, &prv)) | ||||
| 	require.Equal(t, provenancetypes.BuildKitBuildType, prv.BuildType) | ||||
| } | ||||
|  | ||||
| func testBakeMultiExporters(t *testing.T, sb integration.Sandbox) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 CrazyMax
					CrazyMax