From f01872e6300bf79ad4c8eae0e04e07e328a5b7b5 Mon Sep 17 00:00:00 2001 From: Dias Saparov Date: Mon, 12 Jun 2023 10:08:41 +0100 Subject: [PATCH 01/10] pring --- pkg/core/terraform/tf.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/core/terraform/tf.go b/pkg/core/terraform/tf.go index 901763022..16156dbf9 100644 --- a/pkg/core/terraform/tf.go +++ b/pkg/core/terraform/tf.go @@ -112,6 +112,8 @@ func (tf Terraform) runTerraformCommand(command string, envs map[string]string, mwout := io.MultiWriter(os.Stdout, &stdout) mwerr := io.MultiWriter(os.Stderr, &stderr) + fmt.Printf("terraform %s", strings.Join(args, " ")) + cmd := exec.Command("terraform", args...) env := os.Environ() From b4d301dddd4d82fd5591b702a1d49d12e5ad93d5 Mon Sep 17 00:00:00 2001 From: Dias Saparov Date: Mon, 12 Jun 2023 10:14:24 +0100 Subject: [PATCH 02/10] pring --- pkg/github/github.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/github/github.go b/pkg/github/github.go index 0aeac2aaf..bff996884 100644 --- a/pkg/github/github.go +++ b/pkg/github/github.go @@ -145,6 +145,7 @@ func ConvertGithubEventToCommands(event models.Event, impactedProjects []configu } stateEnvVars, commandEnvVars := configuration.CollectEnvVars(workflow.EnvVars) + fmt.Printf("Plan stage: %v\n", workflow.Plan) coreApplyStage := workflow.Apply.ToCoreStage() corePlanStage := workflow.Plan.ToCoreStage() if event.Action == "closed" && event.PullRequest.Merged && event.PullRequest.Base.Ref == event.Repository.DefaultBranch { From e5b42d3ee18a53a57e683db0281c91cb32d03a37 Mon Sep 17 00:00:00 2001 From: Dias Saparov Date: Mon, 12 Jun 2023 11:22:40 +0100 Subject: [PATCH 03/10] test --- pkg/configuration/digger_config_test.go | 20 +++++++++++--------- pkg/core/terraform/tf.go | 2 -- pkg/github/github.go | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/pkg/configuration/digger_config_test.go b/pkg/configuration/digger_config_test.go index d7d9f6414..267761af4 100644 --- a/pkg/configuration/digger_config_test.go +++ b/pkg/configuration/digger_config_test.go @@ -194,24 +194,26 @@ func TestDefaultValuesForWorkflowConfiguration(t *testing.T) { diggerCfg := ` projects: - name: dev + dir: . + workspace: dev + workflows: - default: + dev: plan: steps: - - init - - plan: - extra_args: ["-var-file=terraform.tfvars"] - - run: echo "hello" - shell: zsh + - run: rm -rf .terraform + - init + - plan: + extra_args: ["-var-file=vars/dev.tfvars"] ` deleteFile := createFile(path.Join(tempDir, "digger.yaml"), diggerCfg) defer deleteFile() dg, err := LoadDiggerConfig(tempDir, &FileSystemDirWalker{}) assert.NoError(t, err, "expected error to be nil") - assert.Equal(t, Step{Action: "init", ExtraArgs: nil, Shell: ""}, dg.Workflows["default"].Plan.Steps[0], "parsed struct does not match expected struct") - assert.Equal(t, Step{Action: "plan", ExtraArgs: []string{"-var-file=terraform.tfvars"}, Shell: ""}, dg.Workflows["default"].Plan.Steps[1], "parsed struct does not match expected struct") - assert.Equal(t, Step{Action: "run", Value: "echo \"hello\"", Shell: "zsh"}, dg.Workflows["default"].Plan.Steps[2], "parsed struct does not match expected struct") + assert.Equal(t, Step{Action: "run", Value: "rm -rf .terraform", Shell: ""}, dg.Workflows["dev"].Plan.Steps[0], "parsed struct does not match expected struct") + assert.Equal(t, Step{Action: "init", ExtraArgs: nil, Shell: ""}, dg.Workflows["dev"].Plan.Steps[1], "parsed struct does not match expected struct") + assert.Equal(t, Step{Action: "plan", ExtraArgs: []string{"-var-file=vars/dev.tfvars"}, Shell: ""}, dg.Workflows["dev"].Plan.Steps[2], "parsed struct does not match expected struct") } func TestDiggerGenerateProjects(t *testing.T) { diff --git a/pkg/core/terraform/tf.go b/pkg/core/terraform/tf.go index 16156dbf9..901763022 100644 --- a/pkg/core/terraform/tf.go +++ b/pkg/core/terraform/tf.go @@ -112,8 +112,6 @@ func (tf Terraform) runTerraformCommand(command string, envs map[string]string, mwout := io.MultiWriter(os.Stdout, &stdout) mwerr := io.MultiWriter(os.Stderr, &stderr) - fmt.Printf("terraform %s", strings.Join(args, " ")) - cmd := exec.Command("terraform", args...) env := os.Environ() diff --git a/pkg/github/github.go b/pkg/github/github.go index bff996884..d4c3392c7 100644 --- a/pkg/github/github.go +++ b/pkg/github/github.go @@ -145,7 +145,7 @@ func ConvertGithubEventToCommands(event models.Event, impactedProjects []configu } stateEnvVars, commandEnvVars := configuration.CollectEnvVars(workflow.EnvVars) - fmt.Printf("Plan stage: %v\n", workflow.Plan) + coreApplyStage := workflow.Apply.ToCoreStage() corePlanStage := workflow.Plan.ToCoreStage() if event.Action == "closed" && event.PullRequest.Merged && event.PullRequest.Base.Ref == event.Repository.DefaultBranch { From e66772068e1e76b6c5d91410f3158cdea217ef16 Mon Sep 17 00:00:00 2001 From: Dias Saparov Date: Mon, 12 Jun 2023 11:31:13 +0100 Subject: [PATCH 04/10] test --- pkg/configuration/digger_config.go | 6 +++++ pkg/configuration/digger_config_test.go | 29 ++++++++++++++++++++----- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/pkg/configuration/digger_config.go b/pkg/configuration/digger_config.go index f6a4d1034..9970d649c 100644 --- a/pkg/configuration/digger_config.go +++ b/pkg/configuration/digger_config.go @@ -233,6 +233,12 @@ func (s *Step) extract(stepMap map[string]interface{}, action string) { } s.ExtraArgs = extraArgs } + if v, ok := stepMap[action].(map[string]interface{})["extra_args"]; ok { + for _, v := range v.([]interface{}) { + extraArgs = append(extraArgs, v.(string)) + } + s.ExtraArgs = extraArgs + } } } diff --git a/pkg/configuration/digger_config_test.go b/pkg/configuration/digger_config_test.go index 267761af4..7e47dad1c 100644 --- a/pkg/configuration/digger_config_test.go +++ b/pkg/configuration/digger_config_test.go @@ -192,19 +192,36 @@ func TestDefaultValuesForWorkflowConfiguration(t *testing.T) { defer teardown() diggerCfg := ` -projects: -- name: dev - dir: . - workspace: dev - workflows: + shared: + plan: + steps: + - run: rm -rf .terraform + - init + - plan: + extra_args: ["-var-file=vars/shared.tfvars"] + dev: plan: steps: - run: rm -rf .terraform - init - plan: - extra_args: ["-var-file=vars/dev.tfvars"] + extra_args: ["-var-file=vars/dev.tfvars"] + +projects: +- name: shared + branch: /digger-test1/ + dir: ./terraform/ + workspace: shared + terraform_version: v1.2.0 + workflow: shared +- name: dev + branch: /digger-test1/ + dir: ./terraform/ + workspace: dev + terraform_version: v1.2.0 + workflow: dev ` deleteFile := createFile(path.Join(tempDir, "digger.yaml"), diggerCfg) defer deleteFile() From 1848a87b700260e632b28374f5ed5902421738f7 Mon Sep 17 00:00:00 2001 From: Dias Saparov Date: Mon, 12 Jun 2023 11:37:35 +0100 Subject: [PATCH 05/10] test --- pkg/configuration/digger_config.go | 10 +++++---- pkg/configuration/digger_config_test.go | 28 ++++++------------------- 2 files changed, 12 insertions(+), 26 deletions(-) diff --git a/pkg/configuration/digger_config.go b/pkg/configuration/digger_config.go index 9970d649c..8bf35bc39 100644 --- a/pkg/configuration/digger_config.go +++ b/pkg/configuration/digger_config.go @@ -233,11 +233,13 @@ func (s *Step) extract(stepMap map[string]interface{}, action string) { } s.ExtraArgs = extraArgs } - if v, ok := stepMap[action].(map[string]interface{})["extra_args"]; ok { - for _, v := range v.([]interface{}) { - extraArgs = append(extraArgs, v.(string)) + if !ok { + if v, ok := stepMap[action].(map[string]interface{})["extra_args"]; ok { + for _, v := range v.([]interface{}) { + extraArgs = append(extraArgs, v.(string)) + } + s.ExtraArgs = extraArgs } - s.ExtraArgs = extraArgs } } } diff --git a/pkg/configuration/digger_config_test.go b/pkg/configuration/digger_config_test.go index 7e47dad1c..6b6c5c85a 100644 --- a/pkg/configuration/digger_config_test.go +++ b/pkg/configuration/digger_config_test.go @@ -192,36 +192,20 @@ func TestDefaultValuesForWorkflowConfiguration(t *testing.T) { defer teardown() diggerCfg := ` -workflows: - shared: - plan: - steps: - - run: rm -rf .terraform - - init - - plan: - extra_args: ["-var-file=vars/shared.tfvars"] +projects: +- name: dev + dir: . + workspace: dev +workflows: dev: plan: steps: - run: rm -rf .terraform - init - plan: - extra_args: ["-var-file=vars/dev.tfvars"] + extra_args: ["-var-file=vars/dev.tfvars"] -projects: -- name: shared - branch: /digger-test1/ - dir: ./terraform/ - workspace: shared - terraform_version: v1.2.0 - workflow: shared -- name: dev - branch: /digger-test1/ - dir: ./terraform/ - workspace: dev - terraform_version: v1.2.0 - workflow: dev ` deleteFile := createFile(path.Join(tempDir, "digger.yaml"), diggerCfg) defer deleteFile() From a98f37d30fc80ab480aa3a9bce0d96f1002796ce Mon Sep 17 00:00:00 2001 From: Dias Saparov Date: Mon, 12 Jun 2023 11:40:32 +0100 Subject: [PATCH 06/10] test --- pkg/github/github.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/github/github.go b/pkg/github/github.go index d4c3392c7..0062d34a7 100644 --- a/pkg/github/github.go +++ b/pkg/github/github.go @@ -148,6 +148,8 @@ func ConvertGithubEventToCommands(event models.Event, impactedProjects []configu coreApplyStage := workflow.Apply.ToCoreStage() corePlanStage := workflow.Plan.ToCoreStage() + fmt.Printf("Plan stage: %v\n", workflow.Plan) + fmt.Printf("Core plan stage: %v\n", corePlanStage) if event.Action == "closed" && event.PullRequest.Merged && event.PullRequest.Base.Ref == event.Repository.DefaultBranch { commandsPerProject = append(commandsPerProject, dg_models.ProjectCommand{ ProjectName: project.Name, From 48356e138f5505632b5661cc1690eca73401da65 Mon Sep 17 00:00:00 2001 From: Dias Saparov Date: Mon, 12 Jun 2023 11:47:01 +0100 Subject: [PATCH 07/10] test --- pkg/github/github.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkg/github/github.go b/pkg/github/github.go index 0062d34a7..9e14e0039 100644 --- a/pkg/github/github.go +++ b/pkg/github/github.go @@ -148,6 +148,9 @@ func ConvertGithubEventToCommands(event models.Event, impactedProjects []configu coreApplyStage := workflow.Apply.ToCoreStage() corePlanStage := workflow.Plan.ToCoreStage() + fmt.Printf("project workflow: %v\n", workflows[project.Workflow]) + fmt.Printf("workflow: %v\n", workflow) + fmt.Printf("workflos: %v\n", workflows) fmt.Printf("Plan stage: %v\n", workflow.Plan) fmt.Printf("Core plan stage: %v\n", corePlanStage) if event.Action == "closed" && event.PullRequest.Merged && event.PullRequest.Base.Ref == event.Repository.DefaultBranch { From 9b60cade74643aa272b614c1b6fea2c8363bbb22 Mon Sep 17 00:00:00 2001 From: Dias Saparov Date: Mon, 12 Jun 2023 11:50:07 +0100 Subject: [PATCH 08/10] test --- pkg/github/github.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/github/github.go b/pkg/github/github.go index 9e14e0039..dc8257678 100644 --- a/pkg/github/github.go +++ b/pkg/github/github.go @@ -148,6 +148,7 @@ func ConvertGithubEventToCommands(event models.Event, impactedProjects []configu coreApplyStage := workflow.Apply.ToCoreStage() corePlanStage := workflow.Plan.ToCoreStage() + fmt.Printf("project workflow name: %v\n", project.Workflow) fmt.Printf("project workflow: %v\n", workflows[project.Workflow]) fmt.Printf("workflow: %v\n", workflow) fmt.Printf("workflos: %v\n", workflows) From efa3347be4dfdb7b89aafb67d930739aeaf4575e Mon Sep 17 00:00:00 2001 From: Dias Saparov Date: Mon, 12 Jun 2023 12:36:56 +0100 Subject: [PATCH 09/10] fix --- pkg/configuration/digger_config.go | 5 ++--- pkg/configuration/digger_config_test.go | 15 +++++++++++++-- pkg/github/github.go | 7 +------ 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/pkg/configuration/digger_config.go b/pkg/configuration/digger_config.go index 8bf35bc39..2db3f477f 100644 --- a/pkg/configuration/digger_config.go +++ b/pkg/configuration/digger_config.go @@ -227,13 +227,12 @@ func (s *Step) extract(stepMap map[string]interface{}, action string) { if _, ok := stepMap[action]; ok { s.Action = action var extraArgs []string - if v, ok := stepMap["extra_args"]; ok { + if v, ok2 := stepMap["extra_args"]; ok2 { for _, v := range v.([]interface{}) { extraArgs = append(extraArgs, v.(string)) } s.ExtraArgs = extraArgs - } - if !ok { + } else { if v, ok := stepMap[action].(map[string]interface{})["extra_args"]; ok { for _, v := range v.([]interface{}) { extraArgs = append(extraArgs, v.(string)) diff --git a/pkg/configuration/digger_config_test.go b/pkg/configuration/digger_config_test.go index 6b6c5c85a..54fb2eada 100644 --- a/pkg/configuration/digger_config_test.go +++ b/pkg/configuration/digger_config_test.go @@ -195,7 +195,7 @@ func TestDefaultValuesForWorkflowConfiguration(t *testing.T) { projects: - name: dev dir: . - workspace: dev + workflow: dev workflows: dev: @@ -204,7 +204,14 @@ workflows: - run: rm -rf .terraform - init - plan: - extra_args: ["-var-file=vars/dev.tfvars"] + extra_args: ["-var-file=vars/dev.tfvars"] + default: + plan: + steps: + - run: rm -rf .terraform + - init + - plan: + extra_args: ["-var-file=vars/dev.tfvars"] ` deleteFile := createFile(path.Join(tempDir, "digger.yaml"), diggerCfg) @@ -215,6 +222,10 @@ workflows: assert.Equal(t, Step{Action: "run", Value: "rm -rf .terraform", Shell: ""}, dg.Workflows["dev"].Plan.Steps[0], "parsed struct does not match expected struct") assert.Equal(t, Step{Action: "init", ExtraArgs: nil, Shell: ""}, dg.Workflows["dev"].Plan.Steps[1], "parsed struct does not match expected struct") assert.Equal(t, Step{Action: "plan", ExtraArgs: []string{"-var-file=vars/dev.tfvars"}, Shell: ""}, dg.Workflows["dev"].Plan.Steps[2], "parsed struct does not match expected struct") + + assert.Equal(t, Step{Action: "run", Value: "rm -rf .terraform", Shell: ""}, dg.Workflows["default"].Plan.Steps[0], "parsed struct does not match expected struct") + assert.Equal(t, Step{Action: "init", ExtraArgs: nil, Shell: ""}, dg.Workflows["default"].Plan.Steps[1], "parsed struct does not match expected struct") + assert.Equal(t, Step{Action: "plan", ExtraArgs: []string{"-var-file=vars/dev.tfvars"}, Shell: ""}, dg.Workflows["default"].Plan.Steps[2], "parsed struct does not match expected struct") } func TestDiggerGenerateProjects(t *testing.T) { diff --git a/pkg/github/github.go b/pkg/github/github.go index dc8257678..f85e84001 100644 --- a/pkg/github/github.go +++ b/pkg/github/github.go @@ -148,12 +148,7 @@ func ConvertGithubEventToCommands(event models.Event, impactedProjects []configu coreApplyStage := workflow.Apply.ToCoreStage() corePlanStage := workflow.Plan.ToCoreStage() - fmt.Printf("project workflow name: %v\n", project.Workflow) - fmt.Printf("project workflow: %v\n", workflows[project.Workflow]) - fmt.Printf("workflow: %v\n", workflow) - fmt.Printf("workflos: %v\n", workflows) - fmt.Printf("Plan stage: %v\n", workflow.Plan) - fmt.Printf("Core plan stage: %v\n", corePlanStage) + if event.Action == "closed" && event.PullRequest.Merged && event.PullRequest.Base.Ref == event.Repository.DefaultBranch { commandsPerProject = append(commandsPerProject, dg_models.ProjectCommand{ ProjectName: project.Name, From 333eb367a0641fc3e2c54662968860df04e04d8f Mon Sep 17 00:00:00 2001 From: Dias Saparov Date: Mon, 12 Jun 2023 12:39:55 +0100 Subject: [PATCH 10/10] fix --- pkg/configuration/digger_config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/configuration/digger_config.go b/pkg/configuration/digger_config.go index 2db3f477f..8992a5790 100644 --- a/pkg/configuration/digger_config.go +++ b/pkg/configuration/digger_config.go @@ -227,7 +227,7 @@ func (s *Step) extract(stepMap map[string]interface{}, action string) { if _, ok := stepMap[action]; ok { s.Action = action var extraArgs []string - if v, ok2 := stepMap["extra_args"]; ok2 { + if v, ok := stepMap["extra_args"]; ok { for _, v := range v.([]interface{}) { extraArgs = append(extraArgs, v.(string)) }