From 0b94e9627bbdba8b9c0cae3ca2d7ca602669637e Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Wed, 11 Sep 2024 10:57:21 +0200 Subject: [PATCH] inspect: display buildkit daemon configuration file Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com> --- commands/inspect.go | 8 ++++++ tests/inspect.go | 68 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) diff --git a/commands/inspect.go b/commands/inspect.go index 8dce4753a30..b2f876dd1e8 100644 --- a/commands/inspect.go +++ b/commands/inspect.go @@ -126,6 +126,14 @@ func runInspect(ctx context.Context, dockerCli command.Cli, in inspectOptions) e fmt.Fprintf(w, "\tKeep Bytes:\t%s\n", units.BytesSize(float64(rule.KeepBytes))) } } + if debug.IsEnabled() { + for f, dt := range nodes[i].Files { + fmt.Fprintf(w, "File#%s:\n", f) + for _, line := range strings.Split(string(dt), "\n") { + fmt.Fprintf(w, "\t> %s\n", line) + } + } + } } } } diff --git a/tests/inspect.go b/tests/inspect.go index 8dea100fa07..58a020d4d28 100644 --- a/tests/inspect.go +++ b/tests/inspect.go @@ -1,6 +1,8 @@ package tests import ( + "os" + "path" "strings" "testing" @@ -19,6 +21,7 @@ var inspectTests = []func(t *testing.T, sb integration.Sandbox){ testInspect, testInspectBuildkitdFlags, testInspectNetworkHostEntitlement, + testInspectBuildkitdConf, } func testInspect(t *testing.T, sb integration.Sandbox) { @@ -109,3 +112,68 @@ func testInspectNetworkHostEntitlement(t *testing.T, sb integration.Sandbox) { } require.Fail(t, "network.host insecure entitlement not found in inspect output") } + +func testInspectBuildkitdConf(t *testing.T, sb integration.Sandbox) { + if !isDockerContainerWorker(sb) { + t.Skip("only testing with docker-container worker") + } + + buildkitdConf := ` +# debug enables additional debug logging +debug = true +# insecure-entitlements allows insecure entitlements, disabled by default. +insecure-entitlements = [ "network.host", "security.insecure" ] + +[log] + # log formatter: json or text + format = "text" +` + + expectedContent := `debug = true +insecure-entitlements = ["network.host", "security.insecure"] + +[log] + format = "text" +` + + var builderName string + t.Cleanup(func() { + if builderName == "" { + return + } + out, err := rmCmd(sb, withArgs(builderName)) + require.NoError(t, err, out) + }) + + dirConf := t.TempDir() + buildkitdConfPath := path.Join(dirConf, "buildkitd-conf.toml") + require.NoError(t, os.WriteFile(buildkitdConfPath, []byte(buildkitdConf), 0644)) + + out, err := createCmd(sb, withArgs("--driver", "docker-container", "--buildkitd-config="+buildkitdConfPath)) + require.NoError(t, err, out) + builderName = strings.TrimSpace(out) + + out, err = inspectCmd(sb, withArgs(builderName, "--debug")) + require.NoError(t, err, out) + + var fileContent string + var foundFile bool + for _, line := range strings.Split(out, "\n") { + if strings.HasPrefix(line, "File#buildkitd.toml:") { + foundFile = true + continue + } + if foundFile { + line = strings.TrimSpace(line) + if strings.HasPrefix(line, ">") { + fileContent += strings.TrimPrefix(strings.TrimPrefix(line, ">"), "> ") + "\n" + } else { + break + } + } + } + if !foundFile { + require.Fail(t, "File#buildkitd.toml not found in inspect output") + } + require.Equal(t, expectedContent, fileContent, "File#buildkitd.toml content mismatch") +}