resolveRefDigest returns an image reference that is guaranteed to have a digest.
(url string)
| 1015 | |
| 1016 | // resolveRefDigest returns an image reference that is guaranteed to have a digest. |
| 1017 | func resolveRefDigest(url string) (string, error) { |
| 1018 | ref, err := name.ParseReference(url) |
| 1019 | if err != nil { |
| 1020 | return "", err |
| 1021 | } |
| 1022 | |
| 1023 | if d, ok := ref.(name.Digest); ok { |
| 1024 | return d.String(), nil |
| 1025 | } |
| 1026 | |
| 1027 | descriptor, err := remote.Head(ref, remote.WithAuthFromKeychain(authn.DefaultKeychain)) |
| 1028 | if err != nil { |
| 1029 | return "", err |
| 1030 | } |
| 1031 | digest := descriptor.Digest.String() |
| 1032 | if digest == "" { |
| 1033 | return "", fmt.Errorf("digest for image %q is empty", url) |
| 1034 | } |
| 1035 | |
| 1036 | return fmt.Sprintf("%s@%s", ref.Name(), digest), nil |
| 1037 | } |
| 1038 | |
| 1039 | // createAndPushKeylessImage loads an existing image from disk, along its signature and attestation |
| 1040 | // into the docker registry. |
no test coverage detected