fix: rewrite StepContext env (#832)

* fix: rewrite StepContext env

step env from workflow should be last one to be written
fixes https://github.com/nektos/act/issues/777

* test: verify env correctness

* fix: move test into existing workflow
This commit is contained in:
Ryan 2021-09-28 01:18:59 +00:00 committed by GitHub
parent 6c60af7677
commit a0d360236e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 3 deletions

View file

@ -130,14 +130,13 @@ func (sc *StepContext) Executor() common.Executor {
func (sc *StepContext) mergeEnv() map[string]string {
rc := sc.RunContext
job := rc.Run.Job()
step := sc.Step
var env map[string]string
c := job.Container()
if c != nil {
env = mergeMaps(rc.GetEnv(), c.Env, step.GetEnv())
env = mergeMaps(rc.GetEnv(), c.Env)
} else {
env = mergeMaps(rc.GetEnv(), step.GetEnv())
env = rc.GetEnv()
}
if env["PATH"] == "" {
@ -176,6 +175,7 @@ func (sc *StepContext) setupEnv(ctx context.Context) (ExpressionEvaluator, error
return nil, err
}
}
sc.Env = mergeMaps(sc.Env, sc.Step.GetEnv()) // step env should not be overwritten
evaluator := sc.NewExpressionEvaluator()
sc.interpolateEnv(evaluator)

View file

@ -10,4 +10,7 @@ jobs:
with:
who-to-greet: 'Mona the Octocat'
- run: '[[ "${{ env.SOMEVAR }}" == "Mona the Octocat" ]]'
- run: '[ "${SOMEVAR}" = "Not Mona" ] || exit 1'
env:
SOMEVAR: 'Not Mona'
- uses: ./localdockerimagetest_