allow multiple destinations, error handling for each push

This commit is contained in:
jesusofsuburb1a 2018-05-17 09:35:41 +02:00
parent 7d0466db37
commit 4c190a7037
2 changed files with 29 additions and 21 deletions

View File

@ -85,10 +85,9 @@ var RootCmd = &cobra.Command{
os.Exit(1)
}
for _, destination := range destinations {
if err := executor.DoPush(ref, image, destination, tarPath); err != nil {
if err := executor.DoPush(ref, image, destinations, tarPath); err != nil {
logrus.Error(err)
}
os.Exit(1)
}
},

View File

@ -170,7 +170,9 @@ func DoBuild(dockerfilePath, srcContext, snapshotMode string, args []string) (na
return nil, nil, err
}
func DoPush(ref name.Reference, image v1.Image, destination, tarPath string) error {
func DoPush(ref name.Reference, image v1.Image, destinations []string, tarPath string) error {
// continue pushing unless an error occurs
for _, destination := range destinations {
// Push the image
destRef, err := name.NewTag(destination, name.WeakValidation)
if err != nil {
@ -189,7 +191,14 @@ func DoPush(ref name.Reference, image v1.Image, destination, tarPath string) err
if err != nil {
return err
}
return remote.Write(destRef, image, pushAuth, http.DefaultTransport, wo)
err = remote.Write(destRef, image, pushAuth, http.DefaultTransport, wo)
if err != nil {
logrus.Error(fmt.Errorf("Failed to push to destination %s", destination))
return err
}
}
return nil
}
func saveStageDependencies(index int, stages []instructions.Stage, buildArgs *dockerfile.BuildArgs) error {
// First, get the files in this stage later stages will need