func PushImage()

in internal/cs/pushimage.go [52: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.RegisterContainerImage(
		ctx,
		&lightsail.RegisterContainerImageInput{
			ServiceName: &in.Service,
			Label:       &in.Label,
			Digest:      &digest,
		},
	)
	if err != nil {
		return err
	}

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

	return nil
}