in k8s/go/pkg/resolver/resolver.go [221:270]
func (r *Resolver) publishSingle(spec imageSpec, stamper *compat.Stamper) (string, error) {
layers, err := spec.layers()
if err != nil {
return "", fmt.Errorf("unable to convert the layer parts in image spec for %s into a single comma separated argument: %v", spec.name, err)
}
imgParts, err := compat.ImagePartsFromArgs(spec.imgConfig, "", spec.imgTarball, layers)
if err != nil {
return "", fmt.Errorf("unable to determine parts of the image from the specified arguments: %v", err)
}
cr := compat.Reader{Parts: imgParts}
img, err := cr.ReadImage()
if err != nil {
return "", fmt.Errorf("error reading image: %v", err)
}
stampedName := stamper.Stamp(spec.name)
var ref name.Reference
if r.flags.ImgChroot != "" {
n := path.Join(r.flags.ImgChroot, stampedName)
t, err := name.NewTag(n, name.WeakValidation)
if err != nil {
return "", fmt.Errorf("unable to create a docker tag from stamped name %q: %v", n, err)
}
ref = t
} else {
t, err := name.NewTag(stampedName, name.WeakValidation)
if err != nil {
return "", fmt.Errorf("unable to create a docker tag from stamped name %q: %v", stampedName, err)
}
ref = t
}
auth, err := authn.DefaultKeychain.Resolve(ref.Context())
if err != nil {
return "", fmt.Errorf("unable to get authenticator for image %v", ref.Name())
}
if !r.flags.NoPush {
if err := remote.Write(ref, img, remote.WithAuth(auth)); err != nil {
return "", fmt.Errorf("unable to push image %v: %v", ref.Name(), err)
}
}
d, err := img.Digest()
if err != nil {
return "", fmt.Errorf("unable to get digest of image %v", ref.Name())
}
return fmt.Sprintf("%s/%s@%v", ref.Context().RegistryStr(), ref.Context().RepositoryStr(), d), nil
}