(ctx devspacecontext.Context, deployConfig *latest.DeploymentConfig, options *Options)
| 160 | } |
| 161 | |
| 162 | func (c *controller) deployOne(ctx devspacecontext.Context, deployConfig *latest.DeploymentConfig, options *Options) (bool, error) { |
| 163 | event := "deploy" |
| 164 | if options.Render { |
| 165 | event = "render" |
| 166 | } |
| 167 | |
| 168 | var ( |
| 169 | deployClient deployer.Interface |
| 170 | err error |
| 171 | method string |
| 172 | ) |
| 173 | |
| 174 | if !options.Render && deployConfig.Namespace != "" { |
| 175 | err = kubectlclient.EnsureNamespace(ctx.Context(), ctx.KubeClient(), deployConfig.Namespace, ctx.Log()) |
| 176 | if err != nil { |
| 177 | return false, err |
| 178 | } |
| 179 | } |
| 180 | |
| 181 | if deployConfig.Kubectl != nil { |
| 182 | deployClient, err = kubectl.New(ctx, deployConfig) |
| 183 | if err != nil { |
| 184 | return true, errors.Errorf("error deploying: deployment %s error: %v", deployConfig.Name, err) |
| 185 | } |
| 186 | |
| 187 | method = "kubectl" |
| 188 | } else if deployConfig.Helm != nil { |
| 189 | // Get helm client |
| 190 | helmClient, err := helmclient.NewClient(ctx.Log()) |
| 191 | if err != nil { |
| 192 | return true, err |
| 193 | } |
| 194 | |
| 195 | deployClient, err = helm.New(helmClient, deployConfig) |
| 196 | if err != nil { |
| 197 | return true, errors.Errorf("error deploying: deployment %s error: %v", deployConfig.Name, err) |
| 198 | } |
| 199 | |
| 200 | method = "helm" |
| 201 | } else { |
| 202 | return true, errors.Errorf("error deploying: deployment %s has no deployment method", deployConfig.Name) |
| 203 | } |
| 204 | // Execute before deployment deploy hook |
| 205 | err = hook.ExecuteHooks(ctx, map[string]interface{}{ |
| 206 | "DEPLOY_NAME": deployConfig.Name, |
| 207 | "DEPLOY_CONFIG": deployConfig, |
| 208 | }, hook.EventsForSingle("before:"+event, deployConfig.Name)...) |
| 209 | if err != nil { |
| 210 | return true, err |
| 211 | } |
| 212 | |
| 213 | wasDeployed := false |
| 214 | if !options.Render { |
| 215 | wasDeployed, err = deployClient.Deploy(ctx, options.ForceDeploy) |
| 216 | } else { |
| 217 | err = deployClient.Render(ctx, options.RenderWriter) |
| 218 | } |
| 219 | if err != nil { |
no test coverage detected