diff --git a/server/neptune/gateway/deploy/signaler.go b/server/neptune/gateway/deploy/signaler.go index 163852c62..56dc012b2 100644 --- a/server/neptune/gateway/deploy/signaler.go +++ b/server/neptune/gateway/deploy/signaler.go @@ -18,6 +18,8 @@ type signaler interface { const ( Deprecated = "deprecated" Destroy = "-destroy" + Manifest = "manifest_path" + EnvStep = "env" ) type WorkflowSignaler struct { @@ -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), @@ -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 diff --git a/server/neptune/gateway/pr/signaler.go b/server/neptune/gateway/pr/signaler.go index 76ee6269f..93a07a147 100644 --- a/server/neptune/gateway/pr/signaler.go +++ b/server/neptune/gateway/pr/signaler.go @@ -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)