// Publish push the docker image into the docker registy. func Publish(client docker.Docker, stream docker.LogStream, configuration *configuration.Configuration) error { if err := configuration.Validate(); err != nil { return err } reference, err := parser.Parse(remote(configuration)) if err != nil { return err } tagOpts := docker.TagOptions{ Name: reference.Name(), Repository: reference.Repository(), Tag: reference.Tag(), } pushOpts := docker.PushOptions{ Name: reference.Name(), Repository: reference.Repository(), Registry: reference.Registry(), Tag: reference.Tag(), } if err = client.Tag(tagOpts); err != nil { return err } err = client.Push(pushOpts, stream) // Remove registry tag if err2 := client.RemoveImage(reference.Remote()); err2 != nil && err == nil { err = err2 } return err }