mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-07 14:27:30 +00:00
allow git branch mapping to env
This commit is contained in:
@@ -36,9 +36,12 @@ var exportCmd = &cobra.Command{
|
|||||||
// util.RequireLocalWorkspaceFile()
|
// util.RequireLocalWorkspaceFile()
|
||||||
},
|
},
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
envName, err := cmd.Flags().GetString("env")
|
environmentName, _ := cmd.Flags().GetString("env")
|
||||||
if err != nil {
|
if !cmd.Flags().Changed("env") {
|
||||||
util.HandleError(err)
|
environmentFromWorkspace := util.GetEnvelopmentBasedOnGitBranch()
|
||||||
|
if environmentFromWorkspace != "" {
|
||||||
|
environmentName = environmentFromWorkspace
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
shouldExpandSecrets, err := cmd.Flags().GetBool("expand")
|
shouldExpandSecrets, err := cmd.Flags().GetBool("expand")
|
||||||
@@ -66,7 +69,7 @@ var exportCmd = &cobra.Command{
|
|||||||
util.HandleError(err, "Unable to parse flag")
|
util.HandleError(err, "Unable to parse flag")
|
||||||
}
|
}
|
||||||
|
|
||||||
secrets, err := util.GetAllEnvironmentVariables(models.GetAllSecretsParameters{Environment: envName, InfisicalToken: infisicalToken, TagSlugs: tagSlugs})
|
secrets, err := util.GetAllEnvironmentVariables(models.GetAllSecretsParameters{Environment: environmentName, InfisicalToken: infisicalToken, TagSlugs: tagSlugs})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
util.HandleError(err, "Unable to fetch secrets")
|
util.HandleError(err, "Unable to fetch secrets")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,9 +54,12 @@ var runCmd = &cobra.Command{
|
|||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
envName, err := cmd.Flags().GetString("env")
|
environmentName, _ := cmd.Flags().GetString("env")
|
||||||
if err != nil {
|
if !cmd.Flags().Changed("env") {
|
||||||
util.HandleError(err, "Unable to parse flag")
|
environmentFromWorkspace := util.GetEnvelopmentBasedOnGitBranch()
|
||||||
|
if environmentFromWorkspace != "" {
|
||||||
|
environmentName = environmentFromWorkspace
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
infisicalToken, err := cmd.Flags().GetString("token")
|
infisicalToken, err := cmd.Flags().GetString("token")
|
||||||
@@ -79,7 +82,7 @@ var runCmd = &cobra.Command{
|
|||||||
util.HandleError(err, "Unable to parse flag")
|
util.HandleError(err, "Unable to parse flag")
|
||||||
}
|
}
|
||||||
|
|
||||||
secrets, err := util.GetAllEnvironmentVariables(models.GetAllSecretsParameters{Environment: envName, InfisicalToken: infisicalToken, TagSlugs: tagSlugs})
|
secrets, err := util.GetAllEnvironmentVariables(models.GetAllSecretsParameters{Environment: environmentName, InfisicalToken: infisicalToken, TagSlugs: tagSlugs})
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
util.HandleError(err, "Could not fetch secrets", "If you are using a service token to fetch secrets, please ensure it is valid")
|
util.HandleError(err, "Could not fetch secrets", "If you are using a service token to fetch secrets, please ensure it is valid")
|
||||||
|
|||||||
+30
-18
@@ -19,7 +19,6 @@ import (
|
|||||||
"github.com/Infisical/infisical-merge/packages/util"
|
"github.com/Infisical/infisical-merge/packages/util"
|
||||||
"github.com/Infisical/infisical-merge/packages/visualize"
|
"github.com/Infisical/infisical-merge/packages/visualize"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
log "github.com/sirupsen/logrus"
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -31,9 +30,12 @@ var secretsCmd = &cobra.Command{
|
|||||||
PreRun: toggleDebug,
|
PreRun: toggleDebug,
|
||||||
Args: cobra.NoArgs,
|
Args: cobra.NoArgs,
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
environmentName, err := cmd.Flags().GetString("env")
|
environmentName, _ := cmd.Flags().GetString("env")
|
||||||
if err != nil {
|
if !cmd.Flags().Changed("env") {
|
||||||
util.HandleError(err)
|
environmentFromWorkspace := util.GetEnvelopmentBasedOnGitBranch()
|
||||||
|
if environmentFromWorkspace != "" {
|
||||||
|
environmentName = environmentFromWorkspace
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
infisicalToken, err := cmd.Flags().GetString("token")
|
infisicalToken, err := cmd.Flags().GetString("token")
|
||||||
@@ -94,9 +96,12 @@ var secretsSetCmd = &cobra.Command{
|
|||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
util.RequireLocalWorkspaceFile()
|
util.RequireLocalWorkspaceFile()
|
||||||
|
|
||||||
environmentName, err := cmd.Flags().GetString("env")
|
environmentName, _ := cmd.Flags().GetString("env")
|
||||||
if err != nil {
|
if !cmd.Flags().Changed("env") {
|
||||||
util.HandleError(err, "Unable to parse flag")
|
environmentFromWorkspace := util.GetEnvelopmentBasedOnGitBranch()
|
||||||
|
if environmentFromWorkspace != "" {
|
||||||
|
environmentName = environmentFromWorkspace
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
workspaceFile, err := util.GetWorkSpaceFromFile()
|
workspaceFile, err := util.GetWorkSpaceFromFile()
|
||||||
@@ -270,11 +275,12 @@ var secretsDeleteCmd = &cobra.Command{
|
|||||||
PreRun: toggleDebug,
|
PreRun: toggleDebug,
|
||||||
Args: cobra.MinimumNArgs(1),
|
Args: cobra.MinimumNArgs(1),
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
environmentName, err := cmd.Flags().GetString("env")
|
environmentName, _ := cmd.Flags().GetString("env")
|
||||||
if err != nil {
|
if !cmd.Flags().Changed("env") {
|
||||||
log.Errorln("Unable to parse the environment name flag")
|
environmentFromWorkspace := util.GetEnvelopmentBasedOnGitBranch()
|
||||||
log.Debugln(err)
|
if environmentFromWorkspace != "" {
|
||||||
return
|
environmentName = environmentFromWorkspace
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
loggedInUserDetails, err := util.GetCurrentLoggedInUserDetails()
|
loggedInUserDetails, err := util.GetCurrentLoggedInUserDetails()
|
||||||
@@ -330,9 +336,12 @@ var secretsDeleteCmd = &cobra.Command{
|
|||||||
}
|
}
|
||||||
|
|
||||||
func getSecretsByNames(cmd *cobra.Command, args []string) {
|
func getSecretsByNames(cmd *cobra.Command, args []string) {
|
||||||
environmentName, err := cmd.Flags().GetString("env")
|
environmentName, _ := cmd.Flags().GetString("env")
|
||||||
if err != nil {
|
if !cmd.Flags().Changed("env") {
|
||||||
util.HandleError(err, "Unable to parse flag")
|
environmentFromWorkspace := util.GetEnvelopmentBasedOnGitBranch()
|
||||||
|
if environmentFromWorkspace != "" {
|
||||||
|
environmentName = environmentFromWorkspace
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
infisicalToken, err := cmd.Flags().GetString("token")
|
infisicalToken, err := cmd.Flags().GetString("token")
|
||||||
@@ -373,9 +382,12 @@ func getSecretsByNames(cmd *cobra.Command, args []string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func generateExampleEnv(cmd *cobra.Command, args []string) {
|
func generateExampleEnv(cmd *cobra.Command, args []string) {
|
||||||
environmentName, err := cmd.Flags().GetString("env")
|
environmentName, _ := cmd.Flags().GetString("env")
|
||||||
if err != nil {
|
if !cmd.Flags().Changed("env") {
|
||||||
util.HandleError(err, "Unable to parse flag")
|
environmentFromWorkspace := util.GetEnvelopmentBasedOnGitBranch()
|
||||||
|
if environmentFromWorkspace != "" {
|
||||||
|
environmentName = environmentFromWorkspace
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
infisicalToken, err := cmd.Flags().GetString("token")
|
infisicalToken, err := cmd.Flags().GetString("token")
|
||||||
|
|||||||
@@ -39,8 +39,9 @@ type Workspace struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type WorkspaceConfigFile struct {
|
type WorkspaceConfigFile struct {
|
||||||
WorkspaceId string `json:"workspaceId"`
|
WorkspaceId string `json:"workspaceId"`
|
||||||
DefaultEnvironment string `json:"defaultEnvironment"`
|
DefaultEnvironment string `json:"defaultEnvironment"`
|
||||||
|
GitBranchToEnvironmentMapping map[string]string `json:"gitBranchToEnvironmentMapping"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type SymmetricEncryptionResult struct {
|
type SymmetricEncryptionResult struct {
|
||||||
@@ -50,7 +51,8 @@ type SymmetricEncryptionResult struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type GetAllSecretsParameters struct {
|
type GetAllSecretsParameters struct {
|
||||||
Environment string
|
Environment string
|
||||||
InfisicalToken string
|
EnvironmentPassedViaFlag bool
|
||||||
TagSlugs string
|
InfisicalToken string
|
||||||
|
TagSlugs string
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,14 @@
|
|||||||
package util
|
package util
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"crypto/sha256"
|
"crypto/sha256"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
"path"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
type DecodedSymmetricEncryptionDetails = struct {
|
type DecodedSymmetricEncryptionDetails = struct {
|
||||||
@@ -110,3 +114,14 @@ func GetHashFromStringList(list []string) string {
|
|||||||
sum := sha256.Sum256(hash.Sum(nil))
|
sum := sha256.Sum256(hash.Sum(nil))
|
||||||
return fmt.Sprintf("%x", sum)
|
return fmt.Sprintf("%x", sum)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getCurrentBranch() (string, error) {
|
||||||
|
cmd := exec.Command("git", "symbolic-ref", "--short", "HEAD")
|
||||||
|
var out bytes.Buffer
|
||||||
|
cmd.Stdout = &out
|
||||||
|
err := cmd.Run()
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return path.Base(strings.TrimSpace(out.String())), nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -131,10 +131,6 @@ func GetAllEnvironmentVariables(params models.GetAllSecretsParameters) ([]models
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if workspaceFile.DefaultEnvironment != "" {
|
|
||||||
params.Environment = workspaceFile.DefaultEnvironment
|
|
||||||
}
|
|
||||||
|
|
||||||
// Verify environment
|
// Verify environment
|
||||||
err = ValidateEnvironmentName(params.Environment, workspaceFile.WorkspaceId, loggedInUserDetails.UserCredentials)
|
err = ValidateEnvironmentName(params.Environment, workspaceFile.WorkspaceId, loggedInUserDetails.UserCredentials)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -485,3 +481,27 @@ func DeleteBackupSecrets() error {
|
|||||||
|
|
||||||
return os.RemoveAll(fullPathToSecretsBackupFolder)
|
return os.RemoveAll(fullPathToSecretsBackupFolder)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetEnvelopmentBasedOnGitBranch() string {
|
||||||
|
branch, err := getCurrentBranch()
|
||||||
|
if err != nil {
|
||||||
|
log.Debugf("getEnvelopmentBasedOnGitBranch: [err=%s]", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
workspaceFile, err := GetWorkSpaceFromFile()
|
||||||
|
if err != nil {
|
||||||
|
log.Debugf("getEnvelopmentBasedOnGitBranch: [err=%s]", err)
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
envBasedOnGitBranch, ok := workspaceFile.GitBranchToEnvironmentMapping[branch]
|
||||||
|
|
||||||
|
log.Debugf("GetEnvelopmentBasedOnGitBranch: [envBasedOnGitBranch=%s] [ok=%s]", envBasedOnGitBranch, ok)
|
||||||
|
|
||||||
|
if err == nil && ok {
|
||||||
|
return envBasedOnGitBranch
|
||||||
|
} else {
|
||||||
|
log.Debugf("getEnvelopmentBasedOnGitBranch: [err=%s]", err)
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user