mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-07-24 20:28:02 +08:00
build: opt to set progress warnings in response
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
This commit is contained in:
@@ -16,6 +16,7 @@ import (
|
||||
"github.com/containerd/containerd/platforms"
|
||||
"github.com/containerd/continuity/fs/fstest"
|
||||
"github.com/creack/pty"
|
||||
"github.com/moby/buildkit/client"
|
||||
"github.com/moby/buildkit/frontend/subrequests/lint"
|
||||
"github.com/moby/buildkit/frontend/subrequests/outline"
|
||||
"github.com/moby/buildkit/frontend/subrequests/targets"
|
||||
@@ -59,7 +60,8 @@ var buildTests = []func(t *testing.T, sb integration.Sandbox){
|
||||
testBuildNetworkModeBridge,
|
||||
testBuildShmSize,
|
||||
testBuildUlimit,
|
||||
testBuildMetadata,
|
||||
testBuildMetadataProvenance,
|
||||
testBuildMetadataWarnings,
|
||||
testBuildMultiExporters,
|
||||
testBuildLoadPush,
|
||||
testBuildSecret,
|
||||
@@ -560,19 +562,22 @@ COPY --from=build /ulimit /
|
||||
require.Contains(t, string(dt), `1024`)
|
||||
}
|
||||
|
||||
func testBuildMetadata(t *testing.T, sb integration.Sandbox) {
|
||||
func testBuildMetadataProvenance(t *testing.T, sb integration.Sandbox) {
|
||||
t.Run("default", func(t *testing.T) {
|
||||
buildMetadataProvenance(t, sb, "")
|
||||
})
|
||||
t.Run("max", func(t *testing.T) {
|
||||
buildMetadata(t, sb, "max")
|
||||
buildMetadataProvenance(t, sb, "max")
|
||||
})
|
||||
t.Run("min", func(t *testing.T) {
|
||||
buildMetadata(t, sb, "min")
|
||||
buildMetadataProvenance(t, sb, "min")
|
||||
})
|
||||
t.Run("disabled", func(t *testing.T) {
|
||||
buildMetadata(t, sb, "disabled")
|
||||
buildMetadataProvenance(t, sb, "disabled")
|
||||
})
|
||||
}
|
||||
|
||||
func buildMetadata(t *testing.T, sb integration.Sandbox, metadataMode string) {
|
||||
func buildMetadataProvenance(t *testing.T, sb integration.Sandbox, metadataMode string) {
|
||||
dir := createTestProject(t)
|
||||
dirDest := t.TempDir()
|
||||
|
||||
@@ -616,6 +621,61 @@ func buildMetadata(t *testing.T, sb integration.Sandbox, metadataMode string) {
|
||||
require.Equal(t, provenancetypes.BuildKitBuildType, prv.BuildType)
|
||||
}
|
||||
|
||||
func testBuildMetadataWarnings(t *testing.T, sb integration.Sandbox) {
|
||||
t.Run("default", func(t *testing.T) {
|
||||
buildMetadataWarnings(t, sb, "")
|
||||
})
|
||||
t.Run("true", func(t *testing.T) {
|
||||
buildMetadataWarnings(t, sb, "true")
|
||||
})
|
||||
t.Run("false", func(t *testing.T) {
|
||||
buildMetadataWarnings(t, sb, "false")
|
||||
})
|
||||
}
|
||||
|
||||
func buildMetadataWarnings(t *testing.T, sb integration.Sandbox, mode string) {
|
||||
dockerfile := []byte(`
|
||||
frOM busybox as base
|
||||
cOpy Dockerfile .
|
||||
from scratch
|
||||
COPy --from=base \
|
||||
/Dockerfile \
|
||||
/
|
||||
`)
|
||||
dir := tmpdir(
|
||||
t,
|
||||
fstest.CreateFile("Dockerfile", dockerfile, 0600),
|
||||
)
|
||||
|
||||
cmd := buildxCmd(
|
||||
sb,
|
||||
withArgs("build", "--metadata-file", filepath.Join(dir, "md.json"), dir),
|
||||
withEnv("BUILDX_METADATA_WARNINGS="+mode),
|
||||
)
|
||||
out, err := cmd.CombinedOutput()
|
||||
require.NoError(t, err, string(out))
|
||||
|
||||
dt, err := os.ReadFile(filepath.Join(dir, "md.json"))
|
||||
require.NoError(t, err)
|
||||
|
||||
type mdT struct {
|
||||
BuildRef string `json:"buildx.build.ref"`
|
||||
BuildWarnings []client.VertexWarning `json:"buildx.build.warnings"`
|
||||
}
|
||||
var md mdT
|
||||
err = json.Unmarshal(dt, &md)
|
||||
require.NoError(t, err, string(dt))
|
||||
|
||||
require.NotEmpty(t, md.BuildRef, string(dt))
|
||||
if mode == "" || mode == "false" {
|
||||
require.Empty(t, md.BuildWarnings, string(dt))
|
||||
return
|
||||
}
|
||||
|
||||
skipNoCompatBuildKit(t, sb, ">= 0.14.0-0", "lint")
|
||||
require.Len(t, md.BuildWarnings, 3, string(dt))
|
||||
}
|
||||
|
||||
func testBuildMultiExporters(t *testing.T, sb integration.Sandbox) {
|
||||
if !isDockerContainerWorker(sb) {
|
||||
t.Skip("only testing with docker-container worker")
|
||||
|
Reference in New Issue
Block a user