Pārlūkot izejas kodu

Merge branch 'master' of github.com:porter-dev/porter into stacks-v1

Feroze Mohideen 3 gadi atpakaļ
vecāks
revīzija
661e3cfb25

+ 29 - 18
api/server/handlers/environment/delete_deployment.go

@@ -11,6 +11,7 @@ import (
 	"github.com/porter-dev/porter/api/server/handlers"
 	"github.com/porter-dev/porter/api/server/handlers"
 	"github.com/porter-dev/porter/api/server/shared"
 	"github.com/porter-dev/porter/api/server/shared"
 	"github.com/porter-dev/porter/api/server/shared/apierrors"
 	"github.com/porter-dev/porter/api/server/shared/apierrors"
+	"github.com/porter-dev/porter/api/server/shared/commonutils"
 	"github.com/porter-dev/porter/api/server/shared/config"
 	"github.com/porter-dev/porter/api/server/shared/config"
 	"github.com/porter-dev/porter/api/server/shared/requestutils"
 	"github.com/porter-dev/porter/api/server/shared/requestutils"
 	"github.com/porter-dev/porter/api/types"
 	"github.com/porter-dev/porter/api/types"
@@ -57,18 +58,6 @@ func (c *DeleteDeploymentHandler) ServeHTTP(w http.ResponseWriter, r *http.Reque
 		return
 		return
 	}
 	}
 
 
-	// delete corresponding namespace
-	agent, err := c.GetAgent(r, cluster, "")
-	if err != nil {
-		c.HandleAPIError(w, r, apierrors.NewErrInternal(err))
-		return
-	}
-
-	// make sure we do not delete any kubernetes "system" namespaces
-	if !isSystemNamespace(depl.Namespace) {
-		agent.DeleteNamespace(depl.Namespace)
-	}
-
 	// check that the environment belongs to the project and cluster IDs
 	// check that the environment belongs to the project and cluster IDs
 	env, err := c.Repo().Environment().ReadEnvironmentByID(project.ID, cluster.ID, depl.EnvironmentID)
 	env, err := c.Repo().Environment().ReadEnvironmentByID(project.ID, cluster.ID, depl.EnvironmentID)
 	if err != nil {
 	if err != nil {
@@ -81,6 +70,34 @@ func (c *DeleteDeploymentHandler) ServeHTTP(w http.ResponseWriter, r *http.Reque
 		return
 		return
 	}
 	}
 
 
+	// try to cancel any existing github workflow for this deployment
+	client, err := getGithubClientFromEnvironment(c.Config(), env)
+	if err == nil {
+		workflowRun, err := commonutils.GetLatestWorkflowRun(client, depl.RepoOwner, depl.RepoName,
+			fmt.Sprintf("porter_%s_env.yml", env.Name), depl.PRBranchFrom)
+		if err == nil {
+			if workflowRun.GetStatus() == "in_progress" || workflowRun.GetStatus() == "queued" ||
+				workflowRun.GetStatus() == "waiting" || workflowRun.GetStatus() == "requested" ||
+				workflowRun.GetStatus() == "pending" {
+				client.Actions.CancelWorkflowRunByID(
+					context.Background(), depl.RepoOwner, depl.RepoName, workflowRun.GetID(),
+				)
+			}
+		}
+	}
+
+	// delete corresponding namespace
+	agent, err := c.GetAgent(r, cluster, "")
+	if err != nil {
+		c.HandleAPIError(w, r, apierrors.NewErrInternal(err))
+		return
+	}
+
+	// make sure we do not delete any kubernetes "system" namespaces
+	if !isSystemNamespace(depl.Namespace) {
+		agent.DeleteNamespace(depl.Namespace)
+	}
+
 	_, err = c.Repo().Environment().DeleteDeployment(depl)
 	_, err = c.Repo().Environment().DeleteDeployment(depl)
 
 
 	if err != nil {
 	if err != nil {
@@ -93,12 +110,6 @@ func (c *DeleteDeploymentHandler) ServeHTTP(w http.ResponseWriter, r *http.Reque
 		return
 		return
 	}
 	}
 
 
-	client, err := getGithubClientFromEnvironment(c.Config(), env)
-	if err != nil {
-		c.HandleAPIError(w, r, apierrors.NewErrInternal(err))
-		return
-	}
-
 	if depl.GHDeploymentID != 0 {
 	if depl.GHDeploymentID != 0 {
 		// set the GitHub deployment status to be inactive
 		// set the GitHub deployment status to be inactive
 		_, _, err := client.Repositories.CreateDeploymentStatus(
 		_, _, err := client.Repositories.CreateDeploymentStatus(

+ 11 - 9
api/server/handlers/stacks/parse.go

@@ -60,15 +60,23 @@ func buildStackValues(parsed *PorterStackYAML, imageInfo *types.ImageInfo) (map[
 	values := make(map[string]interface{})
 	values := make(map[string]interface{})
 
 
 	for name, app := range parsed.Apps {
 	for name, app := range parsed.Apps {
-		defaultValues := getDefaultValues(app, parsed.Env, imageInfo)
+		defaultValues := getDefaultValues(app, parsed.Env)
 		helm_values := utils.CoalesceValues(defaultValues, app.Config)
 		helm_values := utils.CoalesceValues(defaultValues, app.Config)
 		values[name] = helm_values
 		values[name] = helm_values
+		if imageInfo != nil {
+			values["global"] = map[string]interface{}{
+				"image": map[string]interface{}{
+					"repository": imageInfo.Repository,
+					"tag":        imageInfo.Tag,
+				},
+			}
+		}
 	}
 	}
 
 
 	return values, nil
 	return values, nil
 }
 }
 
 
-func getDefaultValues(app *App, env map[string]string, imageInfo *types.ImageInfo) map[string]interface{} {
+func getDefaultValues(app *App, env map[string]string) map[string]interface{} {
 	var defaultValues map[string]interface{}
 	var defaultValues map[string]interface{}
 	if *app.Type == "web" {
 	if *app.Type == "web" {
 		defaultValues = map[string]interface{}{
 		defaultValues = map[string]interface{}{
@@ -92,12 +100,6 @@ func getDefaultValues(app *App, env map[string]string, imageInfo *types.ImageInf
 			},
 			},
 		}
 		}
 	}
 	}
-	if imageInfo != nil {
-		defaultValues["image"] = map[string]interface{}{
-			"repository": imageInfo.Repository,
-			"tag":        imageInfo.Tag,
-		}
-	}
 	return defaultValues
 	return defaultValues
 }
 }
 
 
@@ -105,7 +107,7 @@ func buildStackChart(parsed *PorterStackYAML, config *config.Config, projectID u
 	deps := make([]*chart.Dependency, 0)
 	deps := make([]*chart.Dependency, 0)
 
 
 	for alias, app := range parsed.Apps {
 	for alias, app := range parsed.Apps {
-		selectedRepo := "https://charts.getporter.dev"
+		selectedRepo := config.ServerConf.DefaultApplicationHelmRepoURL
 		selectedVersion, err := getLatestTemplateVersion(*app.Type, config, projectID)
 		selectedVersion, err := getLatestTemplateVersion(*app.Type, config, projectID)
 		if err != nil {
 		if err != nil {
 			return nil, err
 			return nil, err

+ 5 - 1
cli/cmd/deploy.go

@@ -637,7 +637,11 @@ func updateSetEnvGroup(_ *types.GetAuthenticatedUserResponse, client *api.Client
 
 
 	newEnvGroup := &types.CreateEnvGroupRequest{
 	newEnvGroup := &types.CreateEnvGroupRequest{
 		Name:      envGroupResp.Name,
 		Name:      envGroupResp.Name,
-		Variables: envGroupResp.Variables,
+		Variables: make(map[string]string),
+	}
+
+	for k, v := range envGroupResp.Variables {
+		newEnvGroup.Variables[k] = v
 	}
 	}
 
 
 	// first check for multiple variables being set using the -e or -s flags
 	// first check for multiple variables being set using the -e or -s flags

+ 22 - 23
dashboard/src/main/home/cluster-dashboard/preview-environments/deployments/DeploymentCard.tsx

@@ -193,7 +193,12 @@ const DeploymentCard: React.FC<{
     },
     },
   ];
   ];
 
 
-  console.error(deployment, deployment.gh_pr_branch_from, deployment.gh_pr_branch_into, deployment.gh_pr_branch_from === deployment.gh_pr_branch_into);
+  console.error(
+    deployment,
+    deployment.gh_pr_branch_from,
+    deployment.gh_pr_branch_into,
+    deployment.gh_pr_branch_from === deployment.gh_pr_branch_into
+  );
 
 
   return (
   return (
     <DeploymentCardWrapper
     <DeploymentCardWrapper
@@ -275,28 +280,22 @@ const DeploymentCard: React.FC<{
               </>
               </>
             ) : null}
             ) : null}
 
 
-            {deployment.status !== DeploymentStatus.Creating && (
-              <>
-                {deployment.subdomain &&
-                deployment.status === DeploymentStatus.Created ? (
-                  <RowButton
-                    onClick={(e) => {
-                      e.preventDefault();
-                      e.stopPropagation();
-
-                      window.open(deployment.subdomain, "_blank");
-                    }}
-                    key={deployment.subdomain}
-                  >
-                    <i className="material-icons">open_in_new</i>
-                    View Live
-                  </RowButton>
-                ) : null}
-                <DeploymentCardActionsDropdown
-                  options={DeploymentCardActions}
-                />
-              </>
-            )}
+            {deployment.subdomain &&
+            deployment.status === DeploymentStatus.Created ? (
+              <RowButton
+                onClick={(e) => {
+                  e.preventDefault();
+                  e.stopPropagation();
+
+                  window.open(deployment.subdomain, "_blank");
+                }}
+                key={deployment.subdomain}
+              >
+                <i className="material-icons">open_in_new</i>
+                View Live
+              </RowButton>
+            ) : null}
+            <DeploymentCardActionsDropdown options={DeploymentCardActions} />
             {/* <Button
             {/* <Button
               onClick={() => {
               onClick={() => {
                 setCurrentOverlay({
                 setCurrentOverlay({