func()

in internal/cs/dockerengine.go [59:84]


func (e *DockerEngine) PushImage(ctx context.Context, remoteImage RemoteImage) (digest string, err error) {
	authBytes, err := json.Marshal(remoteImage.AuthConfig)
	if err != nil {
		return "", err
	}
	pushRes, err := e.c.ImagePush(ctx, remoteImage.Ref(), image.PushOptions{
		RegistryAuth: base64.URLEncoding.EncodeToString(authBytes),
	})
	if err != nil {
		return "", err
	}
	defer pushRes.Close()

	termFd, isTerm := term.GetFdInfo(os.Stderr)
	if err = jsonmessage.DisplayJSONMessagesStream(
		// Skip statuses that have irrelevant details such as repo address.
		skipStatuses(pushRes, remoteImage.ServerAddress, remoteImage.Tag),
		os.Stderr, termFd, isTerm,
		extractDigest(&digest)); err != nil {
		return "", err
	}
	if digest == "" {
		return "", errors.New("image push response does not contain the image digest")
	}
	return digest, nil
}