Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
859d01a
split DiggerConfig into two parts, one for yaml parsing and one for c…
veziak Jun 7, 2023
7aada03
Merge branch 'develop' into split-digger-config
Spartakovic Jun 7, 2023
ef9f312
more refactorings
veziak Jun 8, 2023
f3e32e2
Merge branch 'split-digger-config' into fix-merge-conflict
veziak Jun 8, 2023
c46f54b
Merge pull request #342 from diggerhq/fix-merge-conflict
veziak Jun 8, 2023
89b3e25
merge develop branch
veziak Jun 8, 2023
008fda1
Merge remote-tracking branch 'origin/split-digger-config' into split-…
veziak Jun 8, 2023
f4b7ba1
rename types
veziak Jun 8, 2023
2c60b6f
add more tests
veziak Jun 8, 2023
9c0b77f
merge changes from develop branch
veziak Jun 8, 2023
5e3c566
Merge branch 'split-digger-config' into fix-merge-conflict
veziak Jun 8, 2023
b0bbff2
Merge pull request #346 from diggerhq/fix-merge-conflict
veziak Jun 8, 2023
f01872e
pring
Spartakovic Jun 12, 2023
b4d301d
pring
Spartakovic Jun 12, 2023
e5b42d3
test
Spartakovic Jun 12, 2023
e667720
test
Spartakovic Jun 12, 2023
1848a87
test
Spartakovic Jun 12, 2023
a98f37d
test
Spartakovic Jun 12, 2023
48356e1
test
Spartakovic Jun 12, 2023
9b60cad
test
Spartakovic Jun 12, 2023
efa3347
fix
Spartakovic Jun 12, 2023
333eb36
fix
Spartakovic Jun 12, 2023
e68b0ba
Merge pull request #363 from diggerhq/develop
veziak Jun 13, 2023
6733254
fix merge conflict
veziak Jun 13, 2023
10add16
Merge branch 'develop' into split-digger-config
veziak Jun 13, 2023
4cf60ec
rename struct
veziak Jun 13, 2023
d4113b0
remove copier
veziak Jun 13, 2023
53427aa
remove unnecessary make
veziak Jun 13, 2023
edbf1da
Merge pull request #368 from diggerhq/develop
veziak Jun 15, 2023
5549284
Merge pull request #355 from diggerhq/fix/extra-args
veziak Jun 15, 2023
1104aea
resolve merge conflicts
veziak Jun 15, 2023
41c24e0
Merge pull request #331 from diggerhq/split-digger-config
veziak Jun 15, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 9 additions & 7 deletions cmd/digger/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@ package main

import (
"digger/pkg/configuration"
"digger/pkg/core/models"
"digger/pkg/digger"
"digger/pkg/github"
"digger/pkg/github/models"
gh_models "digger/pkg/github/models"
"digger/pkg/reporting"
"digger/pkg/utils"
"fmt"
Expand Down Expand Up @@ -895,7 +896,7 @@ func TestGitHubNewPullRequestContext(t *testing.T) {
}

func TestGitHubNewCommentContext(t *testing.T) {
context, err := models.GetGitHubContext(githubContextCommentJson)
context, err := gh_models.GetGitHubContext(githubContextCommentJson)
assert.NoError(t, err)
if err != nil {
fmt.Println(err)
Expand All @@ -911,6 +912,7 @@ func TestGitHubNewCommentContext(t *testing.T) {
CiService: prManager,
PrNumber: prNumber,
}

policyChecker := &utils.MockPolicyChecker{}

commandsToRunPerProject, _, err := github.ConvertGithubEventToCommands(ghEvent, impactedProjects, requestedProject, map[string]configuration.Workflow{})
Expand All @@ -925,7 +927,7 @@ func TestGitHubNewCommentContext(t *testing.T) {
}

func TestInvalidGitHubContext(t *testing.T) {
_, err := models.GetGitHubContext(githubInvalidContextJson)
_, err := gh_models.GetGitHubContext(githubInvalidContextJson)
require.Error(t, err)
if err != nil {
fmt.Println(err)
Expand All @@ -941,11 +943,11 @@ func TestGitHubNewPullRequestInMultiEnvProjectContext(t *testing.T) {
prod := configuration.Project{Name: "prod", Dir: "prod", Workflow: "prod"}
workflows := map[string]configuration.Workflow{
"dev": {
Plan: &configuration.Stage{Steps: []configuration.Step{
Plan: &models.Stage{Steps: []models.Step{
{Action: "init", ExtraArgs: []string{}},
{Action: "plan", ExtraArgs: []string{"-var-file=dev.tfvars"}},
}},
Apply: &configuration.Stage{Steps: []configuration.Step{
Apply: &models.Stage{Steps: []models.Step{
{Action: "init", ExtraArgs: []string{}},
{Action: "apply", ExtraArgs: []string{"-var-file=dev.tfvars"}},
}},
Expand All @@ -956,11 +958,11 @@ func TestGitHubNewPullRequestInMultiEnvProjectContext(t *testing.T) {
},
},
"prod": {
Plan: &configuration.Stage{Steps: []configuration.Step{
Plan: &models.Stage{Steps: []models.Step{
{Action: "init", ExtraArgs: []string{}},
{Action: "plan", ExtraArgs: []string{"-var-file=dev.tfvars"}},
}},
Apply: &configuration.Stage{Steps: []configuration.Step{
Apply: &models.Stage{Steps: []models.Step{
{Action: "init", ExtraArgs: []string{}},
{Action: "apply", ExtraArgs: []string{"-var-file=dev.tfvars"}},
}},
Expand Down
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ require (
github.com/caarlos0/env/v7 v7.1.0
github.com/google/go-github/v51 v51.0.0
github.com/google/uuid v1.3.0
github.com/jinzhu/copier v0.3.5
github.com/microsoft/azure-devops-go-api/azuredevops v1.0.0-b5
github.com/open-policy-agent/opa v0.53.1
github.com/stretchr/testify v1.8.4
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,8 @@ github.com/hashicorp/go-hclog v0.9.2 h1:CG6TE5H9/JXsFWJCfoIVpKFIkFe6ysEuHirp4DxC
github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
github.com/hashicorp/go-retryablehttp v0.7.2 h1:AcYqCvkpalPnPF2pn0KamgwamS42TqUDDYFRKq/RAd0=
github.com/hashicorp/go-retryablehttp v0.7.2/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8=
github.com/jinzhu/copier v0.3.5 h1:GlvfUwHk62RokgqVNvYsku0TATCF7bAHVwEXoBh3iJg=
github.com/jinzhu/copier v0.3.5/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg=
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
Expand Down
44 changes: 10 additions & 34 deletions pkg/azure/azure.go
Original file line number Diff line number Diff line change
Expand Up @@ -350,23 +350,15 @@ func ConvertAzureEventToCommands(parseAzureContext Azure, impactedProjects []con
return nil, false, fmt.Errorf("failed to find workflow config '%s' for project '%s'", project.Workflow, project.Name)
}

stateEnvVars, commandEnvVars := configuration.CollectEnvVars(workflow.EnvVars)
var coreApplyStage models.Stage
if workflow.Apply != nil {
coreApplyStage = workflow.Apply.ToCoreStage()
}
var corePlanStage models.Stage
if workflow.Plan != nil {
corePlanStage = workflow.Plan.ToCoreStage()
}
stateEnvVars, commandEnvVars := configuration.CollectTerraformEnvConfig(workflow.EnvVars)
commandsPerProject = append(commandsPerProject, models.ProjectCommand{
ProjectName: project.Name,
ProjectDir: project.Dir,
ProjectWorkspace: project.Workspace,
Terragrunt: project.Terragrunt,
Commands: workflow.Configuration.OnPullRequestPushed,
ApplyStage: &coreApplyStage,
PlanStage: &corePlanStage,
ApplyStage: workflow.Apply,
PlanStage: workflow.Plan,
CommandEnvVars: commandEnvVars,
StateEnvVars: stateEnvVars,
})
Expand All @@ -379,23 +371,15 @@ func ConvertAzureEventToCommands(parseAzureContext Azure, impactedProjects []con
return nil, false, fmt.Errorf("failed to find workflow config '%s' for project '%s'", project.Workflow, project.Name)
}

stateEnvVars, commandEnvVars := configuration.CollectEnvVars(workflow.EnvVars)
var coreApplyStage models.Stage
if workflow.Apply != nil {
coreApplyStage = workflow.Apply.ToCoreStage()
}
var corePlanStage models.Stage
if workflow.Plan != nil {
corePlanStage = workflow.Plan.ToCoreStage()
}
stateEnvVars, commandEnvVars := configuration.CollectTerraformEnvConfig(workflow.EnvVars)
commandsPerProject = append(commandsPerProject, models.ProjectCommand{
ProjectName: project.Name,
ProjectDir: project.Dir,
ProjectWorkspace: project.Workspace,
Terragrunt: project.Terragrunt,
Commands: workflow.Configuration.OnPullRequestClosed,
ApplyStage: &coreApplyStage,
PlanStage: &corePlanStage,
ApplyStage: workflow.Apply,
PlanStage: workflow.Plan,
CommandEnvVars: commandEnvVars,
StateEnvVars: stateEnvVars,
})
Expand All @@ -408,23 +392,15 @@ func ConvertAzureEventToCommands(parseAzureContext Azure, impactedProjects []con
if !ok {
return nil, false, fmt.Errorf("failed to find workflow config '%s' for project '%s'", project.Workflow, project.Name)
}
stateEnvVars, commandEnvVars := configuration.CollectEnvVars(workflow.EnvVars)
var coreApplyStage models.Stage
if workflow.Apply != nil {
coreApplyStage = workflow.Apply.ToCoreStage()
}
var corePlanStage models.Stage
if workflow.Plan != nil {
corePlanStage = workflow.Plan.ToCoreStage()
}
stateEnvVars, commandEnvVars := configuration.CollectTerraformEnvConfig(workflow.EnvVars)
commandsPerProject = append(commandsPerProject, models.ProjectCommand{
ProjectName: project.Name,
ProjectDir: project.Dir,
ProjectWorkspace: project.Workspace,
Terragrunt: project.Terragrunt,
Commands: workflow.Configuration.OnCommitToDefault,
ApplyStage: &coreApplyStage,
PlanStage: &corePlanStage,
ApplyStage: workflow.Apply,
PlanStage: workflow.Plan,
CommandEnvVars: commandEnvVars,
StateEnvVars: stateEnvVars,
})
Expand Down Expand Up @@ -465,7 +441,7 @@ func ConvertAzureEventToCommands(parseAzureContext Azure, impactedProjects []con
if !ok {
return nil, false, fmt.Errorf("failed to find workflow config '%s' for project '%s'", project.Workflow, project.Name)
}
stateEnvVars, commandEnvVars := configuration.CollectEnvVars(workflow.EnvVars)
stateEnvVars, commandEnvVars := configuration.CollectTerraformEnvConfig(workflow.EnvVars)

commandsPerProject = append(commandsPerProject, models.ProjectCommand{
ProjectName: project.Name,
Expand Down
75 changes: 75 additions & 0 deletions pkg/configuration/config.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
package configuration

import "digger/pkg/core/models"

type DiggerConfig struct {
Projects []Project
AutoMerge bool
CollectUsageData bool
Workflows map[string]Workflow
}

type Project struct {
Name string
Dir string
Workspace string
Terragrunt bool
Workflow string
IncludePatterns []string
ExcludePatterns []string
}

type Workflow struct {
EnvVars *TerraformEnvConfig
Plan *models.Stage
Apply *models.Stage
Configuration *WorkflowConfiguration
}

type WorkflowConfiguration struct {
OnPullRequestPushed []string
OnPullRequestClosed []string
OnCommitToDefault []string
}

type TerraformEnvConfig struct {
State []EnvVar
Commands []EnvVar
}

type EnvVar struct {
Name string
ValueFrom string
Value string
}

func defaultWorkflow() *Workflow {
return &Workflow{
Configuration: &WorkflowConfiguration{
OnCommitToDefault: []string{"digger unlock"},
OnPullRequestPushed: []string{"digger plan"},
OnPullRequestClosed: []string{"digger unlock"},
},
Plan: &models.Stage{
Steps: []models.Step{
{
Action: "init", ExtraArgs: []string{},
},
{
Action: "plan", ExtraArgs: []string{},
},
},
},
Apply: &models.Stage{
Steps: []models.Step{
{
Action: "init", ExtraArgs: []string{},
},
{
Action: "apply", ExtraArgs: []string{},
},
},
},
EnvVars: &TerraformEnvConfig{},
}
}
Loading