diff --git a/pkg/runner/step_action_remote.go b/pkg/runner/step_action_remote.go index 6616335..8afbe31 100644 --- a/pkg/runner/step_action_remote.go +++ b/pkg/runner/step_action_remote.go @@ -187,6 +187,15 @@ func (sar *stepActionRemote) getCompositeRunContext(ctx context.Context) *RunCon sar.compositeRunContext = newCompositeRunContext(ctx, sar.RunContext, sar, containerActionDir) sar.compositeSteps = sar.compositeRunContext.compositeExecutor(sar.action) + } else { + // Re-evaluate environment here. For remote actions the environment + // need to be re-created for every stage (pre, main, post) as there + // might be required context changes (inputs/outputs) while the action + // stages are executed. (e.g. the output of another action is the + // input for this action during the main stage, but the env + // was already created during the pre stage) + env := evaluateCompositeInputAndEnv(ctx, sar.RunContext, sar) + sar.compositeRunContext.Env = env } return sar.compositeRunContext } diff --git a/pkg/runner/testdata/uses-composite-with-inputs/push.yml b/pkg/runner/testdata/uses-composite-with-inputs/push.yml index 229969b..9d0cc5b 100644 --- a/pkg/runner/testdata/uses-composite-with-inputs/push.yml +++ b/pkg/runner/testdata/uses-composite-with-inputs/push.yml @@ -5,10 +5,12 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 + - id: set-output + run: echo "::set-output name=var::value" - name: use simple composite action uses: ./uses-composite-with-inputs/action with: - some: value + some: ${{ steps.set-output.outputs.var }} - name: use nested composite action uses: ./uses-composite-with-inputs/composite with: @@ -21,7 +23,7 @@ jobs: id: remote-composite uses: nektos/act-test-actions/composite@main with: - input: value + input: ${{ steps.set-output.outputs.var }} - name: test remote composite output run: | echo "steps.remote-composite.outputs.output=${{ steps.remote-composite.outputs.output }}"