Skip to content

Commit

Permalink
Prepend plan steps with filepath env (#721)
Browse files Browse the repository at this point in the history
Supports this env var within the plan step of the terraform workflow as
requested. Should not require versioning as usage of variable happens
within an activity.
  • Loading branch information
samrabelachew authored Oct 25, 2023
1 parent 8125a44 commit b4e4ae0
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 2 deletions.
18 changes: 17 additions & 1 deletion server/neptune/gateway/deploy/signaler.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ type signaler interface {
const (
Deprecated = "deprecated"
Destroy = "-destroy"
Manifest = "manifest_path"
EnvStep = "env"
)

type WorkflowSignaler struct {
Expand Down Expand Up @@ -52,7 +54,7 @@ func (d *WorkflowSignaler) SignalWithStartWorkflow(ctx context.Context, rootCfg
Root: workflows.Root{
Name: rootCfg.Name,
Plan: workflows.Job{
Steps: d.generateSteps(rootCfg.DeploymentWorkflow.Plan.Steps),
Steps: d.prependPlanEnvSteps(rootCfg),
},
Apply: workflows.Job{
Steps: d.generateSteps(rootCfg.DeploymentWorkflow.Apply.Steps),
Expand Down Expand Up @@ -94,6 +96,20 @@ func BuildDeployWorkflowID(repoName string, rootName string) string {
return fmt.Sprintf("%s||%s", repoName, rootName)
}

func (d *WorkflowSignaler) prependPlanEnvSteps(cfg *valid.MergedProjectCfg) []workflows.Step {
var steps []workflows.Step
if t, ok := cfg.Tags[Manifest]; ok {
//this is a Lyft specific env var
steps = append(steps, workflows.Step{
StepName: EnvStep,
EnvVarName: "MANIFEST_FILEPATH",
EnvVarValue: t,
})
}
steps = append(steps, d.generateSteps(cfg.DeploymentWorkflow.Plan.Steps)...)
return steps
}

func (d *WorkflowSignaler) generateSteps(steps []valid.Step) []workflows.Step {
// NOTE: for deployment workflows, we won't support command level user requests for log level output verbosity
var workflowSteps []workflows.Step
Expand Down
16 changes: 15 additions & 1 deletion server/neptune/gateway/pr/signaler.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,13 +145,27 @@ func (s *WorkflowSignaler) buildRoots(rootCfgs []*valid.MergedProjectCfg, valida
RepoRelPath: rootCfg.RepoRelDir,
TfVersion: tfVersion,
PlanMode: generatePlanMode(rootCfg),
Plan: workflows.PRJob{Steps: generateSteps(rootCfg.PullRequestWorkflow.Plan.Steps)},
Plan: workflows.PRJob{Steps: s.prependPlanEnvSteps(rootCfg)},
Validate: workflows.PRJob{Steps: s.prependValidateEnvSteps(rootCfg, validateEnvOpts...)},
})
}
return roots
}

func (s *WorkflowSignaler) prependPlanEnvSteps(cfg *valid.MergedProjectCfg) []workflows.PRStep {
var steps []workflows.PRStep
if t, ok := cfg.Tags[Manifest]; ok {
//this is a Lyft specific env var
steps = append(steps, workflows.PRStep{
StepName: EnvStep,
EnvVarName: "MANIFEST_FILEPATH",
EnvVarValue: t,
})
}
steps = append(steps, generateSteps(cfg.PullRequestWorkflow.Plan.Steps)...)
return steps
}

func (s *WorkflowSignaler) prependValidateEnvSteps(rootCfg *valid.MergedProjectCfg, opts ...ValidateEnvs) []workflows.PRStep {
for _, o := range opts {
initialEnvSteps := s.generatePRModeEnvSteps(rootCfg, o)
Expand Down

0 comments on commit b4e4ae0

Please sign in to comment.