build: return imageID when loading without docker driver

Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
pull/975/head
CrazyMax 3 years ago
parent 002c7d0986
commit 443fcc6355
No known key found for this signature in database
GPG Key ID: 3248E46B6BB8C7F7

@ -762,7 +762,7 @@ func Build(ctx context.Context, drivers []DriverInfo, opt map[string]Options, do
resp[k] = res[0]
respMu.Unlock()
if len(res) == 1 {
digest := res[0].ExporterResponse["containerimage.digest"]
digest := res[0].ExporterResponse[exptypes.ExporterImageDigestKey]
if opt.ImageIDFile != "" {
return ioutil.WriteFile(opt.ImageIDFile, []byte(digest), 0644)
}
@ -774,7 +774,7 @@ func Build(ctx context.Context, drivers []DriverInfo, opt map[string]Options, do
descs := make([]specs.Descriptor, 0, len(res))
for _, r := range res {
s, ok := r.ExporterResponse["containerimage.digest"]
s, ok := r.ExporterResponse[exptypes.ExporterImageDigestKey]
if ok {
descs = append(descs, specs.Descriptor{
Digest: digest.Digest(s),
@ -920,8 +920,9 @@ func Build(ctx context.Context, drivers []DriverInfo, opt map[string]Options, do
}
d := drivers[dp.driverIndex].Driver
if d.IsMobyDriver() {
for _, e := range so.Exports {
if d.IsMobyDriver() {
if e.Type == "moby" && e.Attrs["push"] != "" {
if ok, _ := strconv.ParseBool(e.Attrs["push"]); ok {
pushNames = e.Attrs["name"]
@ -937,14 +938,22 @@ func Build(ctx context.Context, drivers []DriverInfo, opt map[string]Options, do
return err
}
}
remoteDigest, errp := remoteDigestWithMoby(ctx, d, pushList[0])
if errp == nil && remoteDigest != "" {
remoteDigest, err := remoteDigestWithMoby(ctx, d, pushList[0])
if err == nil && remoteDigest != "" {
rr.ExporterResponse[exptypes.ExporterImageDigestKey] = remoteDigest
} else if errp != nil {
} else if err != nil {
return err
}
}
}
} else if names, ok := e.Attrs["name"]; ok && e.Type == "docker" {
nameList := strings.Split(names, ",")
imageID, err := dockerImageID(ctx, d, nameList[0])
if err == nil && imageID != "" {
rr.ExporterResponse[exptypes.ExporterImageDigestKey] = imageID
} else if err != nil {
return err
}
}
}
@ -1073,6 +1082,18 @@ func remoteDigestWithMoby(ctx context.Context, d driver.Driver, name string) (st
return remoteImage.Descriptor.Digest.String(), nil
}
func dockerImageID(ctx context.Context, d driver.Driver, name string) (string, error) {
api := d.Config().DockerAPI
if api == nil {
return "", errors.Errorf("invalid empty Docker API reference") // should never happen
}
image, _, err := api.ImageInspectWithRaw(ctx, name)
if err != nil {
return "", err
}
return image.ID, nil
}
func createTempDockerfile(r io.Reader) (string, error) {
dir, err := ioutil.TempDir("", "dockerfile")
if err != nil {

Loading…
Cancel
Save