فهرست منبع

Merge pull request #2573 from porter-dev/nafees/preview-env-metadata

[POR-818] Fallback to server metadata default helm chart repos for preview env
Porter Support 3 سال پیش
والد
کامیت
acf535af1d

+ 23 - 0
api/client/base.go

@@ -0,0 +1,23 @@
+package client
+
+import (
+	"context"
+
+	sharedConfig "github.com/porter-dev/porter/api/server/shared/config"
+)
+
+func (c *Client) GetPorterInstanceMetadata(ctx context.Context) (*sharedConfig.Metadata, error) {
+	resp := &sharedConfig.Metadata{}
+
+	err := c.getRequest(
+		"/metadata",
+		nil,
+		resp,
+	)
+
+	if err != nil {
+		return nil, err
+	}
+
+	return resp, nil
+}

+ 5 - 0
api/server/handlers/environment/delete.go

@@ -79,6 +79,11 @@ func (c *DeleteEnvironmentHandler) ServeHTTP(w http.ResponseWriter, r *http.Requ
 		if !isSystemNamespace(depl.Namespace) {
 			agent.DeleteNamespace(depl.Namespace)
 		}
+
+		if _, err := c.Repo().Environment().DeleteDeployment(depl); err != nil {
+			c.HandleAPIError(w, r, apierrors.NewErrInternal(err))
+			return
+		}
 	}
 
 	ghWebhookID := env.GithubWebhookID

+ 14 - 10
api/server/handlers/webhook/github_incoming.go

@@ -370,23 +370,27 @@ func (c *GithubIncomingWebhookHandler) processPushEvent(event *github.PushEvent,
 
 	envType := env.ToEnvironmentType()
 
+	if len(envType.GitDeployBranches) == 0 {
+		return nil
+	}
+
 	branch := strings.TrimPrefix(event.GetRef(), "refs/heads/")
 
-	if len(envType.GitDeployBranches) > 0 {
-		found := false
+	fmt.Println(envType.GitDeployBranches)
 
-		for _, br := range envType.GitDeployBranches {
-			if br == branch {
-				found = true
-				break
-			}
-		}
+	found := false
 
-		if !found {
-			return nil
+	for _, br := range envType.GitDeployBranches {
+		if br == branch {
+			found = true
+			break
 		}
 	}
 
+	if !found {
+		return nil
+	}
+
 	client, err := getGithubClientFromEnvironment(c.Config(), env)
 
 	if err != nil {

+ 1 - 1
api/server/router/base.go

@@ -81,7 +81,7 @@ func GetBaseRoutes(
 		Router:   r,
 	})
 
-	// GET /api/capabilities -> user.NewUserCreateHandler
+	// GET /api/metadata -> metadata.NewMetadataGetHandler
 	getMetadataEndpoint := factory.NewAPIEndpoint(
 		&types.APIRequestMetadata{
 			Verb:   types.APIVerbGet,

+ 1 - 1
cli/cmd/apply.go

@@ -368,7 +368,7 @@ func (d *DeployDriver) applyApplication(resource *switchboardModels.Resource, cl
 
 	if tag == "" {
 		color.New(color.FgYellow).Printf("for resource %s, since PORTER_TAG is not set, the Docker image tag will default to"+
-			" the git repo SHA", resourceName)
+			" the git repo SHA\n", resourceName)
 
 		commit, err := git.LastCommit()
 

+ 24 - 8
cli/cmd/preview/utils.go

@@ -60,38 +60,54 @@ func GetSource(projectID uint, resourceName string, input map[string]interface{}
 		output.Version = "latest"
 	}
 
-	output.IsApplication = output.Repo == "https://charts.getporter.dev"
+	apiClient := config.GetAPIClient()
+
+	serverMetadata, err := apiClient.GetPorterInstanceMetadata(context.Background())
+
+	if err != nil {
+		return nil, fmt.Errorf("error fetching Porter instance metadata: %w", err)
+	}
 
 	if output.Repo == "" {
-		output.Repo = "https://charts.getporter.dev"
+		if serverMetadata.DefaultAppHelmRepoURL != "" {
+			output.Repo = serverMetadata.DefaultAppHelmRepoURL
+		} else {
+			output.Repo = "https://charts.getporter.dev"
+		}
 
 		values, err := existsInRepo(projectID, output.Name, output.Version, output.Repo)
 
 		if err == nil {
-			// found in "https://charts.getporter.dev"
 			output.SourceValues = values
-			output.IsApplication = true
+			output.IsApplication = output.Repo == "https://charts.getporter.dev"
+
 			return output, nil
 		}
 
-		output.Repo = "https://chart-addons.getporter.dev"
+		if serverMetadata.DefaultAddonHelmRepoURL != "" {
+			output.Repo = serverMetadata.DefaultAddonHelmRepoURL
+		} else {
+			output.Repo = "https://chart-addons.getporter.dev"
+		}
 
 		values, err = existsInRepo(projectID, output.Name, output.Version, output.Repo)
 
 		if err == nil {
-			// found in https://chart-addons.getporter.dev
 			output.SourceValues = values
+
 			return output, nil
 		}
 
-		return nil, fmt.Errorf("error parsing source for resource '%s': source does not exist in "+
-			"'https://charts.getporter.dev' or 'https://chart-addons.getporter.dev'", resourceName)
+		return nil, fmt.Errorf("error parsing source for resource '%s': source chart does not exist in the default "+
+			"Helm repositories", resourceName)
 	} else {
 		// we look in the passed-in repo
 		values, err := existsInRepo(projectID, output.Name, output.Version, output.Repo)
 
 		if err == nil {
 			output.SourceValues = values
+			output.IsApplication = output.Repo == "https://charts.getporter.dev"
+
 			return output, nil
 		}
 	}

+ 1 - 0
docker/cli.Dockerfile

@@ -13,6 +13,7 @@ COPY /cli ./cli
 COPY /internal ./internal
 COPY /api ./api
 COPY /pkg ./pkg
+COPY /provisioner ./provisioner
 
 RUN --mount=type=cache,target=$GOPATH/pkg/mod \
     go mod download

+ 1 - 0
services/porter_cli_container/dev.Dockerfile

@@ -13,6 +13,7 @@ COPY /internal ./internal
 COPY /api ./api
 COPY /ee ./ee
 COPY /pkg ./pkg
+COPY /provisioner ./provisioner
 
 RUN --mount=type=cache,target=$GOPATH/pkg/mod \
     go mod download