func PushImage()

in internal/cs/pushimage.go [53:89]


func PushImage(ctx context.Context, in *PushImageInput, lio LightsailImageOperator, imgo ImageOperator) error {
	authConfig, err := getServiceRegistryAuth(ctx, lio)
	if err != nil {
		return err
	}

	remoteImage := RemoteImage{AuthConfig: *authConfig, Tag: generateUniqueTag()}

	err = imgo.TagImage(ctx, in.Image, remoteImage.Ref())
	if err != nil {
		return err
	}
	defer tryUntagImage(ctx, imgo, remoteImage.Ref())

	digest, err := imgo.PushImage(ctx, remoteImage)
	if err != nil {
		return err
	}

	registered, err := lio.RegisterContainerImageWithContext(
		ctx,
		new(lightsail.RegisterContainerImageInput).
			SetServiceName(in.Service).
			SetLabel(in.Label).
			SetDigest(digest),
	)
	if err != nil {
		return err
	}

	fmt.Printf("Digest: %s\nImage %q registered.\nRefer to this image as %q in deployments.\n",
		aws.StringValue(registered.ContainerImage.Digest),
		in.Image,
		aws.StringValue(registered.ContainerImage.Image))

	return nil
}