From c29694ab08917acc817b8c80243b7f4b38cfd76c Mon Sep 17 00:00:00 2001 From: Markus Wolf Date: Wed, 7 Dec 2022 12:15:04 +0100 Subject: [PATCH] fix: handle env-vars case sensitive Closes #1488 --- pkg/model/workflow.go | 10 +----- pkg/runner/step.go | 2 +- .../testdata/environment-variables/push.yml | 33 +++++++++++++++++++ 3 files changed, 35 insertions(+), 10 deletions(-) create mode 100644 pkg/runner/testdata/environment-variables/push.yml diff --git a/pkg/model/workflow.go b/pkg/model/workflow.go index f567a1f7806..78914e82e2f 100644 --- a/pkg/model/workflow.go +++ b/pkg/model/workflow.go @@ -458,16 +458,8 @@ func (s *Step) String() string { } // Environments returns string-based key=value map for a step -// Note: all keys are uppercase func (s *Step) Environment() map[string]string { - env := environment(s.Env) - - for k, v := range env { - delete(env, k) - env[strings.ToUpper(k)] = v - } - - return env + return environment(s.Env) } // GetEnv gets the env for a step diff --git a/pkg/runner/step.go b/pkg/runner/step.go index 560ba632a79..a3829fb9bbe 100644 --- a/pkg/runner/step.go +++ b/pkg/runner/step.go @@ -183,7 +183,7 @@ func setupEnv(ctx context.Context, step step) error { (*step.getEnv())[k] = exprEval.Interpolate(ctx, v) } } - // after we have an evaluated step context, update the expresson evaluator with a new env context + // after we have an evaluated step context, update the expressions evaluator with a new env context // you can use step level env in the with property of a uses construct exprEval = rc.NewExpressionEvaluatorWithEnv(ctx, *step.getEnv()) for k, v := range *step.getEnv() { diff --git a/pkg/runner/testdata/environment-variables/push.yml b/pkg/runner/testdata/environment-variables/push.yml new file mode 100644 index 00000000000..37218ad1372 --- /dev/null +++ b/pkg/runner/testdata/environment-variables/push.yml @@ -0,0 +1,33 @@ +name: environment variables +on: push + +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Test on job level + run: | + echo \$UPPER=$UPPER + echo \$upper=$upper + echo \$LOWER=$LOWER + echo \$lower=$lower + [[ "$UPPER" = "UPPER" ]] || exit 1 + [[ "$upper" = "" ]] || exit 1 + [[ "$LOWER" = "" ]] || exit 1 + [[ "$lower" = "lower" ]] || exit 1 + - name: Test on step level + run: | + echo \$UPPER=$UPPER + echo \$upper=$upper + echo \$LOWER=$LOWER + echo \$lower=$lower + [[ "$UPPER" = "upper" ]] || exit 1 + [[ "$upper" = "" ]] || exit 1 + [[ "$LOWER" = "" ]] || exit 1 + [[ "$lower" = "LOWER" ]] || exit 1 + env: + UPPER: upper + lower: LOWER + env: + UPPER: UPPER + lower: lower