diff --git a/cmd/up.go b/cmd/up.go index e9eae851..34d3e1c5 100644 --- a/cmd/up.go +++ b/cmd/up.go @@ -37,6 +37,8 @@ var ( UpBuildBranch string UpBuildRepo string UpController string + // UpPushImage decides if we should push the docker image + UpPushImage bool ) var upCmd = &cobra.Command{ @@ -53,6 +55,7 @@ var upCmd = &cobra.Command{ // Create the Convert options. UpOpt = kobject.ConvertOptions{ Build: UpBuild, + PushImage: UpPushImage, Replicas: UpReplicas, InputFiles: GlobalFiles, Provider: GlobalProvider, @@ -82,6 +85,7 @@ func init() { upCmd.Flags().StringVar(&UpBuild, "build", "local", `Set the type of build ("local"|"build-config" (OpenShift only)|"none")`) upCmd.Flags().StringVar(&UpBuildRepo, "build-repo", "", "Specify source repository for buildconfig (default remote origin)") upCmd.Flags().StringVar(&UpBuildBranch, "build-branch", "", "Specify repository branch to use for buildconfig (default master)") + upCmd.Flags().BoolVar(&UpPushImage, "push-image", true, "If we should push the docker image we built") upCmd.Flags().StringVar(&UpController, "controller", "", `Set the output controller ("deployment"|"daemonSet"|"replicationController")`) upCmd.Flags().MarkHidden("insecure-repository") upCmd.Flags().MarkHidden("build-repo") diff --git a/pkg/kobject/kobject.go b/pkg/kobject/kobject.go index 41344baa..29821efb 100644 --- a/pkg/kobject/kobject.go +++ b/pkg/kobject/kobject.go @@ -41,6 +41,7 @@ type ConvertOptions struct { BuildRepo string BuildBranch string Build string + PushImage bool CreateChart bool GenerateYaml bool GenerateJSON bool diff --git a/pkg/transformer/kubernetes/kubernetes.go b/pkg/transformer/kubernetes/kubernetes.go index e5f2d845..26abecd8 100644 --- a/pkg/transformer/kubernetes/kubernetes.go +++ b/pkg/transformer/kubernetes/kubernetes.go @@ -846,7 +846,7 @@ func (k *Kubernetes) Transform(komposeObject kobject.KomposeObject, opt kobject. return nil, fmt.Errorf("image key required within build parameters in order to build and push service '%s'", name) } - log.Infof("Build key detected. Attempting to build and push image '%s'", service.Image) + log.Infof("Build key detected. Attempting to build image '%s'", service.Image) // Get the directory where the compose file is composeFileDir, err := transformer.GetComposeFileDir(opt.InputFiles) @@ -861,11 +861,13 @@ func (k *Kubernetes) Transform(komposeObject kobject.KomposeObject, opt kobject. } // Push the built image to the repo! - err = transformer.PushDockerImage(service, name) - if err != nil { - return nil, errors.Wrapf(err, "Unable to push Docker image for service %v", name) + if opt.PushImage { + log.Infof("Push image enabled. Attempting to push image '%s'", service.Image) + err = transformer.PushDockerImage(service, name) + if err != nil { + return nil, errors.Wrapf(err, "Unable to push Docker image for service %v", name) + } } - } // If there's no "image" key, use the name of the container that's built diff --git a/pkg/transformer/openshift/openshift.go b/pkg/transformer/openshift/openshift.go index 54ef4668..7e78792e 100644 --- a/pkg/transformer/openshift/openshift.go +++ b/pkg/transformer/openshift/openshift.go @@ -316,9 +316,11 @@ func (o *OpenShift) Transform(komposeObject kobject.KomposeObject, opt kobject.C } // Push the built container to the repo! - err = transformer.PushDockerImage(service, name) - if err != nil { - log.Fatalf("Unable to push Docker image for service %v: %v", name, err) + if opt.PushImage { + err = transformer.PushDockerImage(service, name) + if err != nil { + log.Fatalf("Unable to push Docker image for service %v: %v", name, err) + } } }