Skip to content
This repository was archived by the owner on Mar 11, 2023. It is now read-only.

Commit 77aecd4

Browse files
authored
Merge pull request #2 from antifuchs/less-ambiguous-image-digests
Less ambiguous image digests
2 parents 6abdbc3 + 06fcf3c commit 77aecd4

File tree

2 files changed

+22
-5
lines changed
  • cmd
    • pulumi-resource-docker-buildkit
    • pulumi-sdkgen-docker-buildkit

2 files changed

+22
-5
lines changed

cmd/pulumi-resource-docker-buildkit/main.go

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -259,10 +259,22 @@ func (k *dockerBuildkitProvider) dockerBuild(
259259
return nil, fmt.Errorf("docker build failed: %w", err)
260260
}
261261

262-
cmd = exec.Command("docker", "inspect", name, "-f", "{{index .RepoDigests 0}}")
263-
repoDigest, err := cmd.CombinedOutput()
262+
cmd = exec.Command("docker", "images", "--format", "{{.Digest}}", name)
263+
digestB, err := cmd.Output()
264264
if err != nil {
265-
return nil, fmt.Errorf("docker inspect failed: %s: %s", err, string(repoDigest))
265+
var output string
266+
if err, ok := err.(*exec.ExitError); ok {
267+
output = string(err.Stderr)
268+
}
269+
return nil, fmt.Errorf("docker images failed: %s: %s", err, output)
270+
}
271+
digest := strings.TrimSpace(string(digestB))
272+
repoDigest := fmt.Sprintf("%s@%s", name, digest)
273+
274+
cmd = exec.Command("docker", "images", "--format", "present", repoDigest)
275+
output, err := cmd.CombinedOutput()
276+
if err != nil {
277+
return nil, fmt.Errorf("docker image %#v could not be retrieved: %v: %v", repoDigest, err, string(output))
266278
}
267279

268280
outputs := map[string]interface{}{
@@ -271,7 +283,8 @@ func (k *dockerBuildkitProvider) dockerBuild(
271283
"name": name,
272284
"platforms": platforms,
273285
"contextDigest": contextDigest,
274-
"imageDigest": strings.TrimSpace(string(repoDigest)),
286+
"imageDigest": repoDigest,
287+
"digest": digest,
275288
"registryServer": registry["server"].StringValue(),
276289
}
277290
return plugin.MarshalProperties(

cmd/pulumi-sdkgen-docker-buildkit/main.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,11 @@ func run(version string) error {
7777
TypeSpec: schema.TypeSpec{Type: "string"},
7878
},
7979
"imageDigest": {
80-
Description: "The digest of the image manifest.",
80+
Description: "The fully-qualified digest of the image manifest.",
81+
TypeSpec: schema.TypeSpec{Type: "string"},
82+
},
83+
"digest": {
84+
Description: "The bare digest of the image manifest without the docker registry prefix",
8185
TypeSpec: schema.TypeSpec{Type: "string"},
8286
},
8387
"registryServer": {

0 commit comments

Comments
 (0)