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
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.
18 changes: 18 additions & 0 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 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
Loading