Skip to content

Commit 08750e9

Browse files
committed
history: use predefined build-arg to override the build name
Signed-off-by: CrazyMax <[email protected]>
1 parent 3f4bf82 commit 08750e9

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

commands/history/utils.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ import (
2626
const recordsLimit = 50
2727

2828
func buildName(fattrs map[string]string, ls *localstate.State) string {
29+
if v, ok := fattrs["build-arg:BUILDKIT_BUILD_NAME"]; ok && v != "" {
30+
return v
31+
}
32+
2933
var res string
3034

3135
var target, contextPath, dockerfilePath, vcsSource string

tests/history.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ var historyTests = []func(t *testing.T, sb integration.Sandbox){
2020
testHistoryLs,
2121
testHistoryRm,
2222
testHistoryLsStoppedBuilder,
23+
testHistoryBuildNameOverride,
2324
}
2425

2526
func testHistoryExport(t *testing.T, sb integration.Sandbox) {
@@ -136,6 +137,45 @@ func testHistoryLsStoppedBuilder(t *testing.T, sb integration.Sandbox) {
136137
require.NoError(t, err, string(bout))
137138
}
138139

140+
func testHistoryBuildNameOverride(t *testing.T, sb integration.Sandbox) {
141+
dir := createTestProject(t)
142+
out, err := buildCmd(sb, withArgs("--build-arg=BUILDKIT_BUILD_NAME=foobar", "--metadata-file", filepath.Join(dir, "md.json"), dir))
143+
require.NoError(t, err, string(out))
144+
145+
dt, err := os.ReadFile(filepath.Join(dir, "md.json"))
146+
require.NoError(t, err)
147+
148+
type mdT struct {
149+
BuildRef string `json:"buildx.build.ref"`
150+
}
151+
var md mdT
152+
err = json.Unmarshal(dt, &md)
153+
require.NoError(t, err)
154+
155+
refParts := strings.Split(md.BuildRef, "/")
156+
require.Len(t, refParts, 3)
157+
158+
cmd := buildxCmd(sb, withArgs("history", "ls", "--filter=ref="+refParts[2], "--format=json"))
159+
bout, err := cmd.Output()
160+
require.NoError(t, err, string(bout))
161+
162+
type recT struct {
163+
Ref string `json:"ref"`
164+
Name string `json:"name"`
165+
Status string `json:"status"`
166+
CreatedAt *time.Time `json:"created_at"`
167+
CompletedAt *time.Time `json:"completed_at"`
168+
TotalSteps int32 `json:"total_steps"`
169+
CompletedSteps int32 `json:"completed_steps"`
170+
CachedSteps int32 `json:"cached_steps"`
171+
}
172+
var rec recT
173+
err = json.Unmarshal(bout, &rec)
174+
require.NoError(t, err)
175+
require.Equal(t, md.BuildRef, rec.Ref)
176+
require.Equal(t, "foobar", rec.Name)
177+
}
178+
139179
type buildRef struct {
140180
Builder string
141181
Node string

0 commit comments

Comments
 (0)