Skip to content

Commit 3851df8

Browse files
authored
Merge pull request #751 from runatlantis/var-step-refactor
Add var step to workflows
2 parents 1fb16b1 + c646f20 commit 3851df8

27 files changed

+888
-155
lines changed

server/events/mocks/matchers/map_of_string_to_string.go

Lines changed: 21 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/events/mocks/mock_custom_step_runner.go

Lines changed: 12 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/events/mocks/mock_env_step_runner.go

Lines changed: 125 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/events/mocks/mock_step_runner.go

Lines changed: 12 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/events/project_command_runner.go

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,22 @@ type LockURLGenerator interface {
5252
// `terraform plan`.
5353
type StepRunner interface {
5454
// Run runs the step.
55-
Run(ctx models.ProjectCommandContext, extraArgs []string, path string) (string, error)
55+
Run(ctx models.ProjectCommandContext, extraArgs []string, path string, envs map[string]string) (string, error)
5656
}
5757

5858
//go:generate pegomock generate -m --use-experimental-model-gen --package mocks -o mocks/mock_custom_step_runner.go CustomStepRunner
5959

6060
// CustomStepRunner runs custom run steps.
6161
type CustomStepRunner interface {
6262
// Run cmd in path.
63-
Run(ctx models.ProjectCommandContext, cmd string, path string) (string, error)
63+
Run(ctx models.ProjectCommandContext, cmd string, path string, envs map[string]string) (string, error)
64+
}
65+
66+
//go:generate pegomock generate -m --use-experimental-model-gen --package mocks -o mocks/mock_env_step_runner.go EnvStepRunner
67+
68+
// EnvStepRunner runs env steps.
69+
type EnvStepRunner interface {
70+
Run(ctx models.ProjectCommandContext, cmd string, value string, path string, envs map[string]string) (string, error)
6471
}
6572

6673
//go:generate pegomock generate -m --use-experimental-model-gen --package mocks -o mocks/mock_webhooks_sender.go WebhooksSender
@@ -90,6 +97,7 @@ type DefaultProjectCommandRunner struct {
9097
PlanStepRunner StepRunner
9198
ApplyStepRunner StepRunner
9299
RunStepRunner CustomStepRunner
100+
EnvStepRunner EnvStepRunner
93101
PullApprovedChecker runtime.PullApprovedChecker
94102
WorkingDir WorkingDir
95103
Webhooks WebhooksSender
@@ -173,18 +181,25 @@ func (p *DefaultProjectCommandRunner) doPlan(ctx models.ProjectCommandContext) (
173181

174182
func (p *DefaultProjectCommandRunner) runSteps(steps []valid.Step, ctx models.ProjectCommandContext, absPath string) ([]string, error) {
175183
var outputs []string
184+
envs := make(map[string]string)
176185
for _, step := range steps {
177186
var out string
178187
var err error
179188
switch step.StepName {
180189
case "init":
181-
out, err = p.InitStepRunner.Run(ctx, step.ExtraArgs, absPath)
190+
out, err = p.InitStepRunner.Run(ctx, step.ExtraArgs, absPath, envs)
182191
case "plan":
183-
out, err = p.PlanStepRunner.Run(ctx, step.ExtraArgs, absPath)
192+
out, err = p.PlanStepRunner.Run(ctx, step.ExtraArgs, absPath, envs)
184193
case "apply":
185-
out, err = p.ApplyStepRunner.Run(ctx, step.ExtraArgs, absPath)
194+
out, err = p.ApplyStepRunner.Run(ctx, step.ExtraArgs, absPath, envs)
186195
case "run":
187-
out, err = p.RunStepRunner.Run(ctx, step.RunCommand, absPath)
196+
out, err = p.RunStepRunner.Run(ctx, step.RunCommand, absPath, envs)
197+
case "env":
198+
out, err = p.EnvStepRunner.Run(ctx, step.RunCommand, step.EnvVarValue, absPath, envs)
199+
envs[step.EnvVarName] = out
200+
// We reset out to the empty string because we don't want it to
201+
// be printed to the PR, it's solely to set the environment variable.
202+
out = ""
188203
}
189204

190205
if out != "" {

0 commit comments

Comments
 (0)