Selaa lähdekoodia

use new env var values when updating the application

Alexander Belanger 4 vuotta sitten
vanhempi
sitoutus
0bea104515
3 muutettua tiedostoa jossa 42 lisäystä ja 13 poistoa
  1. 4 1
      cli/cmd/apply.go
  2. 13 2
      cli/cmd/deploy.go
  3. 25 10
      cli/cmd/deploy/deploy.go

+ 4 - 1
cli/cmd/apply.go

@@ -371,7 +371,10 @@ func (d *Driver) updateApplication(resource *models.Resource, client *api.Client
 		return nil, err
 	}
 
-	buildEnv, err := updateAgent.GetBuildEnv()
+	buildEnv, err := updateAgent.GetBuildEnv(&deploy.GetBuildEnvOpts{
+		UseNewConfig: true,
+		NewConfig:    appConf.Values,
+	})
 
 	if err != nil {
 		return nil, err

+ 13 - 2
cli/cmd/deploy.go

@@ -327,7 +327,9 @@ func updateGetEnv(_ *types.GetAuthenticatedUserResponse, client *api.Client, arg
 		return err
 	}
 
-	buildEnv, err := updateAgent.GetBuildEnv()
+	buildEnv, err := updateAgent.GetBuildEnv(&deploy.GetBuildEnvOpts{
+		UseNewConfig: false,
+	})
 
 	if err != nil {
 		return err
@@ -411,7 +413,16 @@ func updateBuildWithAgent(updateAgent *deploy.DeployAgent) error {
 		})
 	}
 
-	buildEnv, err := updateAgent.GetBuildEnv()
+	// read the values if necessary
+	valuesObj, err := readValuesFile()
+	if err != nil {
+		return err
+	}
+
+	buildEnv, err := updateAgent.GetBuildEnv(&deploy.GetBuildEnvOpts{
+		UseNewConfig: true,
+		NewConfig:    valuesObj,
+	})
 
 	if err != nil {
 		if stream {

+ 25 - 10
cli/cmd/deploy/deploy.go

@@ -140,9 +140,22 @@ func NewDeployAgent(client *client.Client, app string, opts *DeployOpts) (*Deplo
 	return deployAgent, nil
 }
 
+type GetBuildEnvOpts struct {
+	UseNewConfig bool
+	NewConfig    map[string]interface{}
+}
+
 // GetBuildEnv retrieves the build env from the release config and returns it
-func (d *DeployAgent) GetBuildEnv() (map[string]string, error) {
-	return GetEnvFromConfig(d.release.Config)
+func (d *DeployAgent) GetBuildEnv(opts *GetBuildEnvOpts) (map[string]string, error) {
+	conf := d.release.Config
+
+	if opts.UseNewConfig {
+		if opts.NewConfig != nil {
+			conf = utils.CoalesceValues(d.release.Config, opts.NewConfig)
+		}
+	}
+
+	return GetEnvFromConfig(conf)
 }
 
 // SetBuildEnv sets the build env vars in the process so that other commands can
@@ -248,20 +261,22 @@ func (d *DeployAgent) Build() error {
 
 	err = d.pullCurrentReleaseImage()
 
-	buildAgent := &BuildAgent{
-		SharedOpts:  d.opts.SharedOpts,
-		client:      d.client,
-		imageRepo:   d.imageRepo,
-		env:         d.env,
-		imageExists: d.imageExists,
-	}
-
 	// if image is not found, don't return an error
 	if err != nil && err != docker.PullImageErrNotFound {
 		return err
 	} else if err != nil && err == docker.PullImageErrNotFound {
 		fmt.Println("could not find image, moving to build step")
 		d.imageExists = false
+	} else if err == nil {
+		d.imageExists = true
+	}
+
+	buildAgent := &BuildAgent{
+		SharedOpts:  d.opts.SharedOpts,
+		client:      d.client,
+		imageRepo:   d.imageRepo,
+		env:         d.env,
+		imageExists: d.imageExists,
 	}
 
 	if d.opts.Method == DeployBuildTypeDocker {