diff --git a/act/runner/action_composite.go b/act/runner/action_composite.go index 507950ee..1dba9f3b 100644 --- a/act/runner/action_composite.go +++ b/act/runner/action_composite.go @@ -217,11 +217,11 @@ func (rc *RunContext) compositeExecutor(action *model.Action) *compositeSteps { steps = append(steps, newCompositeStepLogExecutor(rc.newCompositeCommandExecutor(step.main()), stepID)) // run the post executor in reverse order - stepPost := rc.newCompositeCommandExecutor(step.post()) + stepPost := newCompositeStepLogExecutor(rc.newCompositeCommandExecutor(step.post()), stepID) if postExecutor != nil { stepPost = stepPost.Finally(postExecutor) } - postExecutor = newCompositeStepLogExecutor(stepPost, stepID) + postExecutor = stepPost } steps = append(steps, common.JobError) diff --git a/act/runner/action_composite_test.go b/act/runner/action_composite_test.go index a9408bad..65ca0ad3 100644 --- a/act/runner/action_composite_test.go +++ b/act/runner/action_composite_test.go @@ -99,6 +99,19 @@ func TestCompositeActionParity(t *testing.T) { require.ErrorIs(t, rc.compositeExecutor(&model.Action{Runs: model.ActionRuns{Using: "composite", Steps: []model.Step{{ID: "nested", Uses: "org/action@v1"}}}}).pre(t.Context()), assert.AnError) }) + + t.Run("post steps log under their own step ids", func(t *testing.T) { + hook := logtest.NewWithLevel(logging.LevelDebug) + rc := &RunContext{Config: &Config{}, JobContainer: &jobContainerMock{}} + steps := rc.compositeExecutor(&model.Action{Runs: model.ActionRuns{Using: "composite", Steps: []model.Step{{ID: "first", Uses: "./first"}, {ID: "second", Uses: "./second"}}}}) + require.NoError(t, steps.post(common.WithLogger(t.Context(), logging.New(hook)))) + var stepIDs []any + for _, record := range hook.AllRecords() { + ids, _ := record.Attr("stepID") + stepIDs = append(stepIDs, ids) + } + assert.Equal(t, []any{[]string{"second"}, []string{"first"}}, stepIDs) + }) } func TestAppendUniqueMasks(t *testing.T) {