Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@ import (
"context"
"digger/pkg/azure"
"digger/pkg/configuration"
core_locking "digger/pkg/core/locking"
"digger/pkg/core/models"
core_storage "digger/pkg/core/storage"
"digger/pkg/digger"
"digger/pkg/gcp"
dg_github "digger/pkg/github"
github_models "digger/pkg/github/models"
"digger/pkg/gitlab"
"digger/pkg/locking"
"digger/pkg/models"
"digger/pkg/reporting"
"digger/pkg/storage"
"digger/pkg/usage"
Expand All @@ -22,7 +24,7 @@ import (
"strings"
)

func gitHubCI(lock locking.Lock) {
func gitHubCI(lock core_locking.Lock) {
println("Using GitHub.")
githubActor := os.Getenv("GITHUB_ACTOR")
if githubActor != "" {
Expand Down Expand Up @@ -121,7 +123,7 @@ func gitHubCI(lock locking.Lock) {
}()
}

func gitLabCI(lock locking.Lock) {
func gitLabCI(lock core_locking.Lock) {
println("Using GitLab.")

projectNamespace := os.Getenv("CI_PROJECT_NAMESPACE")
Expand Down Expand Up @@ -212,7 +214,7 @@ func gitLabCI(lock locking.Lock) {
}()
}

func azureCI(lock locking.Lock) {
func azureCI(lock core_locking.Lock) {
fmt.Println("> Azure CI detected")
azureContext := os.Getenv("AZURE_CONTEXT")
azureToken := os.Getenv("AZURE_TOKEN")
Expand Down Expand Up @@ -260,7 +262,7 @@ func azureCI(lock locking.Lock) {
fmt.Printf("command: %s, project: %s\n", strings.Join(v.Commands, ", "), v.ProjectName)
}

var planStorage storage.PlanStorage
var planStorage core_storage.PlanStorage
diggerProjectNamespace := parsedAzureContext.BaseUrl + "/" + parsedAzureContext.ProjectName

reporter := &reporting.CiReporter{
Expand Down Expand Up @@ -335,8 +337,8 @@ func main() {
}
}

func newPlanStorage(ghToken string, ghRepoOwner string, ghRepositoryName string, requestedBy string, prNumber int) storage.PlanStorage {
var planStorage storage.PlanStorage
func newPlanStorage(ghToken string, ghRepoOwner string, ghRepositoryName string, requestedBy string, prNumber int) core_storage.PlanStorage {
var planStorage core_storage.PlanStorage

uploadDestination := strings.ToLower(os.Getenv("PLAN_UPLOAD_DESTINATION"))
if uploadDestination == "github" {
Expand Down
11 changes: 6 additions & 5 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@ require (
cloud.google.com/go/storage v1.30.1
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0
github.com/Azure/azure-sdk-for-go/sdk/data/aztables v1.0.1
github.com/aws/aws-sdk-go v1.44.276
github.com/aws/aws-sdk-go v1.44.277
github.com/bmatcuk/doublestar/v4 v4.6.0
github.com/caarlos0/env/v7 v7.1.0
github.com/google/go-github/v51 v51.0.0
github.com/google/go-github/v53 v53.0.0
github.com/google/uuid v1.3.0
github.com/microsoft/azure-devops-go-api/azuredevops v1.0.0-b5
github.com/stretchr/testify v1.8.4
Expand All @@ -26,7 +27,7 @@ require (
github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 // indirect
github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 // indirect
github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 // indirect
github.com/cloudflare/circl v1.1.0 // indirect
github.com/cloudflare/circl v1.3.3 // indirect
github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect
github.com/golang/protobuf v1.5.3 // indirect
Expand All @@ -41,9 +42,9 @@ require (
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect
go.opencensus.io v0.24.0 // indirect
golang.org/x/crypto v0.7.0 // indirect
golang.org/x/net v0.9.0 // indirect
golang.org/x/oauth2 v0.7.0 // indirect
golang.org/x/sys v0.7.0 // indirect
golang.org/x/net v0.10.0 // indirect
golang.org/x/oauth2 v0.8.0 // indirect
golang.org/x/sys v0.8.0 // indirect
golang.org/x/text v0.9.0 // indirect
golang.org/x/time v0.3.0 // indirect
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
Expand Down
12 changes: 12 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ github.com/aws/aws-sdk-go v1.44.275 h1:VqRULgqrigvQLll4e4hXuc568EQAtZQ6jmBzLlQHz
github.com/aws/aws-sdk-go v1.44.275/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
github.com/aws/aws-sdk-go v1.44.276 h1:ywPlx9C5Yc482dUgAZ9bHpQ6onVvJvYE9FJWsNDCEy0=
github.com/aws/aws-sdk-go v1.44.276/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
github.com/aws/aws-sdk-go v1.44.277 h1:YHmyzBPARTJ7LLYV1fxbfEbQOaUh3kh52hb7nBvX3BQ=
github.com/aws/aws-sdk-go v1.44.277/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
github.com/bmatcuk/doublestar/v4 v4.6.0 h1:HTuxyug8GyFbRkrffIpzNCSK4luc0TY3wzXvzIZhEXc=
github.com/bmatcuk/doublestar/v4 v4.6.0/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc=
github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
Expand All @@ -44,6 +46,8 @@ github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cloudflare/circl v1.1.0 h1:bZgT/A+cikZnKIwn7xL2OBj012Bmvho/o6RpRvv3GKY=
github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I=
github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs=
github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
Expand All @@ -53,6 +57,7 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg=
github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
Expand Down Expand Up @@ -84,6 +89,7 @@ github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-github/v51 v51.0.0 h1:KCjsbgPV28VoRftdP+K2mQL16jniUsLAJknsOVKwHyU=
github.com/google/go-github/v51 v51.0.0/go.mod h1:kZj/rn/c1lSUbr/PFWl2hhusPV7a5XNYKcwPrd5L3Us=
github.com/google/go-github/v53 v53.0.0/go.mod h1:XhFRObz+m/l+UCm9b7KSIC3lT3NWSXGt7mOsAWEloao=
github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw=
Expand Down Expand Up @@ -161,9 +167,13 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM=
golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.7.0 h1:qe6s0zUXlPX80/dITx3440hWZ7GwMwgDDyrSGTPJG/g=
golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4=
golang.org/x/oauth2 v0.8.0 h1:6dkIjl3j3LtZ/O3sTgZTMsLKSftL/B8Zgq4huOIIUu8=
golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
Expand All @@ -181,6 +191,8 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU=
golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
Expand Down
41 changes: 31 additions & 10 deletions pkg/azure/azure.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"context"
"digger/pkg/ci"
"digger/pkg/configuration"
"digger/pkg/models"
"digger/pkg/core/models"
"digger/pkg/utils"
"encoding/json"
"errors"
Expand Down Expand Up @@ -351,15 +351,22 @@ func ConvertAzureEventToCommands(parseAzureContext Azure, impactedProjects []con
}

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()
}
commandsPerProject = append(commandsPerProject, models.ProjectCommand{
ProjectName: project.Name,
ProjectDir: project.Dir,
ProjectWorkspace: project.Workspace,
Terragrunt: project.Terragrunt,
Commands: workflow.Configuration.OnPullRequestPushed,
ApplyStage: workflow.Apply,
PlanStage: workflow.Plan,
ApplyStage: &coreApplyStage,
PlanStage: &corePlanStage,
CommandEnvVars: commandEnvVars,
StateEnvVars: stateEnvVars,
})
Expand All @@ -373,15 +380,22 @@ func ConvertAzureEventToCommands(parseAzureContext Azure, impactedProjects []con
}

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()
}
commandsPerProject = append(commandsPerProject, models.ProjectCommand{
ProjectName: project.Name,
ProjectDir: project.Dir,
ProjectWorkspace: project.Workspace,
Terragrunt: project.Terragrunt,
Commands: workflow.Configuration.OnPullRequestClosed,
ApplyStage: workflow.Apply,
PlanStage: workflow.Plan,
ApplyStage: &coreApplyStage,
PlanStage: &corePlanStage,
CommandEnvVars: commandEnvVars,
StateEnvVars: stateEnvVars,
})
Expand All @@ -395,15 +409,22 @@ 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()
}
commandsPerProject = append(commandsPerProject, models.ProjectCommand{
ProjectName: project.Name,
ProjectDir: project.Dir,
ProjectWorkspace: project.Workspace,
Terragrunt: project.Terragrunt,
Commands: workflow.Configuration.OnCommitToDefault,
ApplyStage: workflow.Apply,
PlanStage: workflow.Plan,
ApplyStage: &coreApplyStage,
PlanStage: &corePlanStage,
CommandEnvVars: commandEnvVars,
StateEnvVars: stateEnvVars,
})
Expand Down
File renamed without changes.
27 changes: 24 additions & 3 deletions pkg/configuration/digger_config.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package configuration

import (
"digger/pkg/core/models"
"digger/pkg/utils"
"errors"
"fmt"
Expand All @@ -21,7 +22,7 @@ type DiggerConfigYaml struct {
Projects []Project `yaml:"projects"`
AutoMerge bool `yaml:"auto_merge"`
Workflows map[string]Workflow `yaml:"workflows"`
CollectUsageData bool `yaml:"collect_usage_data"`
CollectUsageData *bool `yaml:"collect_usage_data,omitempty"`
GenerateProjectsConfig *GenerateProjectsConfig `yaml:"generate_projects"`
}

Expand Down Expand Up @@ -57,6 +58,14 @@ type Stage struct {
Steps []Step `yaml:"steps"`
}

func (s *Stage) ToCoreStage() models.Stage {
var steps []models.Step
for _, step := range s.Steps {
steps = append(steps, step.ToCoreStep())
}
return models.Stage{Steps: steps}
}

type Workflow struct {
EnvVars EnvVars `yaml:"env_vars"`
Plan *Stage `yaml:"plan,omitempty"`
Expand Down Expand Up @@ -157,6 +166,15 @@ type Step struct {
Shell string
}

func (s *Step) ToCoreStep() models.Step {
return models.Step{
Action: s.Action,
Value: s.Value,
ExtraArgs: s.ExtraArgs,
Shell: s.Shell,
}
}

func (s *Step) UnmarshalYAML(value *yaml.Node) error {
if value.Kind == yaml.ScalarNode {
return value.Decode(&s.Action)
Expand Down Expand Up @@ -257,8 +275,11 @@ func ConvertDiggerYamlToConfig(diggerYaml *DiggerConfigYaml, workingDir string,
}
projectNames[project.Name] = true
}

diggerConfig.CollectUsageData = diggerYaml.CollectUsageData
if diggerYaml.CollectUsageData != nil {
diggerConfig.CollectUsageData = *diggerYaml.CollectUsageData
} else {
diggerConfig.CollectUsageData = true
}

if diggerYaml.GenerateProjectsConfig != nil {
dirs, err := walker.GetDirs(workingDir)
Expand Down
Loading