diff --git a/pkg/runner/runner.go b/pkg/runner/runner.go index dd71f2b..b089097 100644 --- a/pkg/runner/runner.go +++ b/pkg/runner/runner.go @@ -14,6 +14,7 @@ import ( "github.com/nektos/act/pkg/common" "github.com/nektos/act/pkg/container" + "github.com/nektos/act/pkg/exprparser" "github.com/nektos/act/pkg/model" ) @@ -159,6 +160,14 @@ func (runner *runnerImpl) NewPlanExecutor(plan *model.Plan) common.Executor { if len(matrixes) > 1 { rc.Name = fmt.Sprintf("%s-%d", rc.Name, i+1) } + // evaluate environment variables since they can contain + // GitHub's special environment variables. + for k, v := range rc.GetEnv() { + valueEval, err := rc.ExprEval.evaluate(v, exprparser.DefaultStatusCheckNone) + if err == nil { + rc.Env[k] = fmt.Sprintf("%v", valueEval) + } + } if len(rc.String()) > maxJobNameLen { maxJobNameLen = len(rc.String()) } diff --git a/pkg/runner/runner_test.go b/pkg/runner/runner_test.go index 4e88fed..d183da6 100644 --- a/pkg/runner/runner_test.go +++ b/pkg/runner/runner_test.go @@ -147,6 +147,7 @@ func TestRunEvent(t *testing.T) { {workdir, "evalmatrixneeds2", "push", "", platforms}, {workdir, "evalmatrix-merge-map", "push", "", platforms}, {workdir, "evalmatrix-merge-array", "push", "", platforms}, + {workdir, "issue-1195", "push", "", platforms}, {workdir, "basic", "push", "", platforms}, {workdir, "fail", "push", "exit with `FAILURE`: 1", platforms}, diff --git a/pkg/runner/testdata/issue-1195/push.yml b/pkg/runner/testdata/issue-1195/push.yml new file mode 100644 index 0000000..c211ad2 --- /dev/null +++ b/pkg/runner/testdata/issue-1195/push.yml @@ -0,0 +1,13 @@ +on: push + +env: + variable: "${{ github.repository_owner }}" + +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: print env.variable + run: | + echo ${{ env.variable }} + exit ${{ (env.variable == 'nektos') && '0' || '1'}}