gke-deploy/core/image/image.go (21 lines of code) (raw):

// Package image contains related to container images. package image import ( "context" "fmt" "github.com/GoogleCloudPlatform/cloud-builders/gke-deploy/services" "github.com/google/go-containerregistry/pkg/name" ) // Name gets an image's name from a Reference. // e.g., If the string representation of the Reference is "gcr.io/my-project/my-image:1.0.0", this // returns "gcr.io/my-project/my-image". func Name(ref name.Reference) string { return fmt.Sprintf("%s/%s", ref.Context().RegistryStr(), ref.Context().RepositoryStr()) } // ResolveDigest gets an image's corresponding digest. func ResolveDigest(ctx context.Context, ref name.Reference, rs services.RemoteService) (string, error) { im, err := rs.Image(ctx, ref) if err != nil { return "", fmt.Errorf("failed to get remote image reference: %v", err) } digest, err := im.Digest() if err != nil { return "", fmt.Errorf("failed to get image digest: %v", err) } return fmt.Sprintf("%s:%s", digest.Algorithm, digest.Hex), nil }