Skip to content

Commit

Permalink
Merge pull request #2684 from crazy-max/inspect-buildkitd-conf
Browse files Browse the repository at this point in the history
inspect: display buildkit daemon configuration file
  • Loading branch information
tonistiigi authored Sep 12, 2024
2 parents cd53819 + 528181c commit 604b723
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 0 deletions.
6 changes: 6 additions & 0 deletions commands/inspect.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,12 @@ func runInspect(ctx context.Context, dockerCli command.Cli, in inspectOptions) e
fmt.Fprintf(w, "\tKeep Bytes:\t%s\n", units.BytesSize(float64(rule.KeepBytes)))
}
}
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)
}
}
}
}
}
Expand Down
69 changes: 69 additions & 0 deletions tests/inspect.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package tests

import (
"os"
"path"
"regexp"
"strings"
"testing"

Expand All @@ -19,6 +22,7 @@ var inspectTests = []func(t *testing.T, sb integration.Sandbox){
testInspect,
testInspectBuildkitdFlags,
testInspectNetworkHostEntitlement,
testInspectBuildkitdConf,
}

func testInspect(t *testing.T, sb integration.Sandbox) {
Expand Down Expand Up @@ -109,3 +113,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))
require.NoError(t, err, out)

var fileLines []string
var fileFound bool
var reConfLine = regexp.MustCompile(`^[\s\t]*>\s(.*)`)
for _, line := range strings.Split(out, "\n") {
if strings.HasPrefix(line, "File#buildkitd.toml:") {
fileFound = true
continue
}
if fileFound {
if matches := reConfLine.FindStringSubmatch(line); len(matches) > 1 {
fileLines = append(fileLines, matches[1])
} else {
break
}
}
}
if !fileFound {
require.Fail(t, "File#buildkitd.toml not found in inspect output")
}
require.Equal(t, expectedContent, strings.Join(fileLines, "\n"), "File#buildkitd.toml content mismatch")
}

0 comments on commit 604b723

Please sign in to comment.