Skip to content

Commit f5568d2

Browse files
committed
imagetools: output pushed digest to stdout
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
1 parent 0a62a9e commit f5568d2

2 files changed

Lines changed: 46 additions & 8 deletions

File tree

commands/imagetools/create.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,9 @@ func runCreate(ctx context.Context, dockerCli command.Cli, in createOptions, arg
240240
if err == nil {
241241
err = err1
242242
}
243+
if err == nil {
244+
fmt.Println(desc.Digest.String())
245+
}
243246

244247
return err
245248
}

tests/imagetools.go

Lines changed: 43 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
package tests
22

33
import (
4+
"bytes"
45
"encoding/json"
56
"os/exec"
7+
"strings"
68
"testing"
79

810
"github.com/containerd/containerd/v2/core/images"
911
"github.com/containerd/continuity/fs/fstest"
1012
"github.com/containerd/platforms"
1113
"github.com/moby/buildkit/util/testutil/integration"
14+
"github.com/opencontainers/go-digest"
1215
ocispecs "github.com/opencontainers/image-spec/specs-go/v1"
1316
"github.com/pkg/errors"
1417
"github.com/stretchr/testify/require"
@@ -51,8 +54,16 @@ func testImagetoolsCopyManifest(t *testing.T, sb integration.Sandbox) {
5154
target2 := registry2 + "/buildx/imtools2-manifest:latest"
5255

5356
cmd = buildxCmd(sb, withArgs("imagetools", "create", "-t", target2, target))
54-
dt, err = cmd.CombinedOutput()
55-
require.NoError(t, err, string(dt))
57+
stdout := bytes.Buffer{}
58+
stderr := bytes.Buffer{}
59+
cmd.Stdout = &stdout
60+
cmd.Stderr = &stderr
61+
require.NoError(t, cmd.Run(), stdout.String(), stderr.String())
62+
outputDigest := strings.TrimSpace(stdout.String())
63+
require.NotEmpty(t, outputDigest)
64+
t.Logf("digest: %s", outputDigest)
65+
_, err = digest.Parse(outputDigest)
66+
require.NoError(t, err)
5667

5768
cmd = buildxCmd(sb, withArgs("imagetools", "inspect", target2, "--raw"))
5869
dt, err = cmd.CombinedOutput()
@@ -80,8 +91,16 @@ func testImagetoolsCopyManifest(t *testing.T, sb integration.Sandbox) {
8091
}
8192

8293
cmd = buildxCmd(sb, withArgs("imagetools", "create", "--prefer-index=false", "-t", target2+"-not-index", target))
83-
dt, err = cmd.CombinedOutput()
84-
require.NoError(t, err, string(dt))
94+
stdout = bytes.Buffer{}
95+
stderr = bytes.Buffer{}
96+
cmd.Stdout = &stdout
97+
cmd.Stderr = &stderr
98+
require.NoError(t, cmd.Run(), stdout.String(), stderr.String())
99+
outputDigest = strings.TrimSpace(stdout.String())
100+
require.NotEmpty(t, outputDigest)
101+
t.Logf("digest: %s", outputDigest)
102+
_, err = digest.Parse(outputDigest)
103+
require.NoError(t, err)
85104

86105
cmd = buildxCmd(sb, withArgs("imagetools", "inspect", target2+"-not-index", "--raw"))
87106
dt, err = cmd.CombinedOutput()
@@ -124,8 +143,16 @@ func testImagetoolsCopyIndex(t *testing.T, sb integration.Sandbox) {
124143
target2 := registry2 + "/buildx/imtools2:latest"
125144

126145
cmd = buildxCmd(sb, withArgs("imagetools", "create", "-t", target2, target))
127-
dt, err = cmd.CombinedOutput()
128-
require.NoError(t, err, string(dt))
146+
stdout := bytes.Buffer{}
147+
stderr := bytes.Buffer{}
148+
cmd.Stdout = &stdout
149+
cmd.Stderr = &stderr
150+
require.NoError(t, cmd.Run(), stdout.String(), stderr.String())
151+
outputDigest := strings.TrimSpace(stdout.String())
152+
require.NotEmpty(t, outputDigest)
153+
t.Logf("digest: %s", outputDigest)
154+
_, err = digest.Parse(outputDigest)
155+
require.NoError(t, err)
129156

130157
cmd = buildxCmd(sb, withArgs("imagetools", "inspect", target2, "--raw"))
131158
dt, err = cmd.CombinedOutput()
@@ -142,8 +169,16 @@ func testImagetoolsCopyIndex(t *testing.T, sb integration.Sandbox) {
142169
}
143170

144171
cmd = buildxCmd(sb, withArgs("imagetools", "create", "--prefer-index=false", "-t", target2+"-still-index", target))
145-
dt, err = cmd.CombinedOutput()
146-
require.NoError(t, err, string(dt))
172+
stdout = bytes.Buffer{}
173+
stderr = bytes.Buffer{}
174+
cmd.Stdout = &stdout
175+
cmd.Stderr = &stderr
176+
require.NoError(t, cmd.Run(), stdout.String(), stderr.String())
177+
outputDigest = strings.TrimSpace(stdout.String())
178+
require.NotEmpty(t, outputDigest)
179+
t.Logf("digest: %s", outputDigest)
180+
_, err = digest.Parse(outputDigest)
181+
require.NoError(t, err)
147182

148183
cmd = buildxCmd(sb, withArgs("imagetools", "inspect", target2+"-still-index", "--raw"))
149184
dt, err = cmd.CombinedOutput()

0 commit comments

Comments
 (0)