Przeglądaj źródła

create or update porter token

Mohammed Nafees 4 lat temu
rodzic
commit
7f50827476
1 zmienionych plików z 26 dodań i 6 usunięć
  1. 26 6
      internal/integrations/ci/gitlab/ci.go

+ 26 - 6
internal/integrations/ci/gitlab/ci.go

@@ -293,14 +293,34 @@ func (g *GitlabCI) getCIJob(jobName string) map[string]interface{} {
 }
 
 func (g *GitlabCI) createGitlabSecret(client *gitlab.Client) error {
-	_, _, err := client.ProjectVariables.CreateVariable(g.pID, &gitlab.CreateProjectVariableOptions{
-		Key:    gitlab.String(g.getPorterTokenSecretName()),
-		Value:  gitlab.String(g.PorterToken),
-		Masked: gitlab.Bool(true),
-	})
+	_, resp, err := client.ProjectVariables.GetVariable(g.pID, g.getPorterTokenSecretName(),
+		&gitlab.GetProjectVariableOptions{})
+
+	if resp.StatusCode == http.StatusNotFound {
+		_, _, err = client.ProjectVariables.CreateVariable(g.pID, &gitlab.CreateProjectVariableOptions{
+			Key:    gitlab.String(g.getPorterTokenSecretName()),
+			Value:  gitlab.String(g.PorterToken),
+			Masked: gitlab.Bool(true),
+		})
+
+		if err != nil {
+			return fmt.Errorf("error creating porter token variable: %w", err)
+		}
+
+		return nil
+	} else if err != nil {
+		return fmt.Errorf("error getting porter token variable: %w", err)
+	}
+
+	_, _, err = client.ProjectVariables.UpdateVariable(g.pID, g.getPorterTokenSecretName(),
+		&gitlab.UpdateProjectVariableOptions{
+			Value:  gitlab.String(g.PorterToken),
+			Masked: gitlab.Bool(true),
+		},
+	)
 
 	if err != nil {
-		return fmt.Errorf("error creating porter token variable: %w", err)
+		return fmt.Errorf("error updating porter token variable: %w", err)
 	}
 
 	return nil