Просмотр исходного кода

Merge pull request #1949 from porter-dev/nafees/hotfixes

[hotfix] Return first custom domain when one exists, `container.env.build` not found error fix
abelanger5 4 лет назад
Родитель
Сommit
2e6f0ef99a
3 измененных файлов с 75 добавлено и 30 удалено
  1. 47 26
      cli/cmd/deploy/create.go
  2. 16 0
      cli/cmd/deploy/deploy.go
  3. 12 4
      cli/cmd/preview/build_image_driver.go

+ 47 - 26
cli/cmd/deploy/create.go

@@ -284,12 +284,20 @@ func (c *CreateAgent) CreateFromDocker(
 			env = map[string]string{}
 			env = map[string]string{}
 		}
 		}
 
 
-		buildEnv, err := GetNestedMap(mergedValues, "container", "env", "build")
+		envConfig, err := GetNestedMap(mergedValues, "container", "env")
 
 
 		if err == nil {
 		if err == nil {
-			for key, val := range buildEnv {
-				if valStr, ok := val.(string); ok {
-					env[key] = valStr
+			_, exists := envConfig["build"]
+
+			if exists {
+				buildEnv, err := GetNestedMap(mergedValues, "container", "env", "build")
+
+				if err == nil {
+					for key, val := range buildEnv {
+						if valStr, ok := val.(string); ok {
+							env[key] = valStr
+						}
+					}
 				}
 				}
 			}
 			}
 		}
 		}
@@ -527,33 +535,46 @@ func (c *CreateAgent) CreateSubdomainIfRequired(mergedValues map[string]interfac
 				enabled, eOK := enabledVal.(bool)
 				enabled, eOK := enabledVal.(bool)
 				customDomain, cOK := customDomVal.(bool)
 				customDomain, cOK := customDomVal.(bool)
 
 
-				// in the case of ingress enabled but no custom domain, create subdomain
-				if eOK && cOK && enabled && !customDomain {
-					dnsRecord, err := c.Client.CreateDNSRecord(
-						context.Background(),
-						c.CreateOpts.ProjectID,
-						c.CreateOpts.ClusterID,
-						c.CreateOpts.Namespace,
-						c.CreateOpts.ReleaseName,
-					)
-
-					if err != nil {
-						return "", fmt.Errorf("Error creating subdomain: %s", err.Error())
-					}
+				if eOK && cOK && enabled {
+					if customDomain {
+						// return the first custom domain when one exists
+						hostsArr, hostsExists := ingressMap["hosts"]
 
 
-					subdomain = dnsRecord.ExternalURL
+						if hostsExists {
+							hostsArrVal, hostsArrOk := hostsArr.([]string)
 
 
-					if ingressVal, ok := mergedValues["ingress"]; !ok {
-						mergedValues["ingress"] = map[string]interface{}{
-							"porter_hosts": []string{
-								subdomain,
-							},
+							if hostsArrOk && len(hostsArrVal) > 0 {
+								subdomain = hostsArrVal[0]
+							}
 						}
 						}
 					} else {
 					} else {
-						ingressValMap := ingressVal.(map[string]interface{})
+						// in the case of ingress enabled but no custom domain, create subdomain
+						dnsRecord, err := c.Client.CreateDNSRecord(
+							context.Background(),
+							c.CreateOpts.ProjectID,
+							c.CreateOpts.ClusterID,
+							c.CreateOpts.Namespace,
+							c.CreateOpts.ReleaseName,
+						)
+
+						if err != nil {
+							return "", fmt.Errorf("Error creating subdomain: %s", err.Error())
+						}
+
+						subdomain = dnsRecord.ExternalURL
 
 
-						ingressValMap["porter_hosts"] = []string{
-							subdomain,
+						if ingressVal, ok := mergedValues["ingress"]; !ok {
+							mergedValues["ingress"] = map[string]interface{}{
+								"porter_hosts": []string{
+									subdomain,
+								},
+							}
+						} else {
+							ingressValMap := ingressVal.(map[string]interface{})
+
+							ingressValMap["porter_hosts"] = []string{
+								subdomain,
+							}
 						}
 						}
 					}
 					}
 				}
 				}

+ 16 - 0
cli/cmd/deploy/deploy.go

@@ -167,6 +167,21 @@ func (d *DeployAgent) GetBuildEnv(opts *GetBuildEnvOpts) (map[string]string, err
 		return nil, err
 		return nil, err
 	}
 	}
 
 
+<<<<<<< nafees/hotfixes
+	envConfig, err := GetNestedMap(conf, "container", "env")
+
+	if err == nil {
+		_, exists := envConfig["build"]
+
+		if exists {
+			buildEnv, err := GetNestedMap(conf, "container", "env", "build")
+
+			if err == nil {
+				for key, val := range buildEnv {
+					if valStr, ok := val.(string); ok {
+						env[key] = valStr
+					}
+=======
 	if opts.IncludeBuildEnv {
 	if opts.IncludeBuildEnv {
 		buildEnv, err := GetNestedMap(conf, "container", "env", "build")
 		buildEnv, err := GetNestedMap(conf, "container", "env", "build")
 
 
@@ -174,6 +189,7 @@ func (d *DeployAgent) GetBuildEnv(opts *GetBuildEnvOpts) (map[string]string, err
 			for key, val := range buildEnv {
 			for key, val := range buildEnv {
 				if valStr, ok := val.(string); ok {
 				if valStr, ok := val.(string); ok {
 					env[key] = valStr
 					env[key] = valStr
+>>>>>>> master
 				}
 				}
 			}
 			}
 		}
 		}

+ 12 - 4
cli/cmd/preview/build_image_driver.go

@@ -254,12 +254,20 @@ func (d *BuildDriver) Apply(resource *models.Resource) (*models.Resource, error)
 			env = map[string]string{}
 			env = map[string]string{}
 		}
 		}
 
 
-		buildEnv, err := deploy.GetNestedMap(mergedValues, "container", "env", "build")
+		envConfig, err := deploy.GetNestedMap(mergedValues, "container", "env")
 
 
 		if err == nil {
 		if err == nil {
-			for key, val := range buildEnv {
-				if valStr, ok := val.(string); ok {
-					env[key] = valStr
+			_, exists := envConfig["build"]
+
+			if exists {
+				buildEnv, err := deploy.GetNestedMap(mergedValues, "container", "env", "build")
+
+				if err == nil {
+					for key, val := range buildEnv {
+						if valStr, ok := val.(string); ok {
+							env[key] = valStr
+						}
+					}
 				}
 				}
 			}
 			}
 		}
 		}