Fix: regression run after failure (#971)

* Fix: Regressions of run step after failure

* Add test, to enshure no panic

* Print error of failed step
This commit is contained in:
ChristopherHX 2022-01-27 17:20:44 +01:00 committed by GitHub
parent 557dc755b8
commit 7dbf3fcb96
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 37 additions and 6 deletions

View file

@ -136,12 +136,13 @@ func (e Executor) Then(then Executor) Executor {
case Warning:
log.Warning(err.Error())
default:
SetJobError(ctx, err)
log.Debugf("%+v", err)
return err
}
} else if ctx.Err() != nil {
SetJobError(ctx, ctx.Err())
}
if ctx.Err() != nil {
return ctx.Err()
}
return then(ctx)
}
}

View file

@ -261,7 +261,18 @@ func (rc *RunContext) Executor() common.Executor {
if step.ID == "" {
step.ID = fmt.Sprintf("%d", i)
}
steps = append(steps, rc.newStepExecutor(step))
stepExec := rc.newStepExecutor(step)
steps = append(steps, func(ctx context.Context) error {
err := stepExec(ctx)
if err != nil {
common.Logger(ctx).Errorf("%v", err)
common.SetJobError(ctx, err)
} else if ctx.Err() != nil {
common.Logger(ctx).Errorf("%v", ctx.Err())
common.SetJobError(ctx, ctx.Err())
}
return nil
})
}
steps = append(steps, func(ctx context.Context) error {
err := rc.stopJobContainer()(ctx)
@ -295,7 +306,18 @@ func (rc *RunContext) CompositeExecutor() common.Executor {
step.ID = fmt.Sprintf("%d", i)
}
stepcopy := step
steps = append(steps, rc.newStepExecutor(&stepcopy))
stepExec := rc.newStepExecutor(&stepcopy)
steps = append(steps, func(ctx context.Context) error {
err := stepExec(ctx)
if err != nil {
common.Logger(ctx).Errorf("%v", err)
common.SetJobError(ctx, err)
} else if ctx.Err() != nil {
common.Logger(ctx).Errorf("%v", ctx.Err())
common.SetJobError(ctx, ctx.Err())
}
return nil
})
}
steps = append(steps, common.JobError)

View file

@ -97,6 +97,7 @@ func TestRunEvent(t *testing.T) {
{"testdata", "fail", "push", "exit with `FAILURE`: 1", platforms, ""},
{"testdata", "runs-on", "push", "", platforms, ""},
{"testdata", "checkout", "push", "", platforms, ""},
{"testdata", "non-existent-action", "push", "Job 'nopanic' failed", platforms, ""},
{"testdata", "shells/defaults", "push", "", platforms, ""},
// TODO: figure out why it fails
// {"testdata", "shells/custom", "push", "", map[string]string{"ubuntu-latest": "ghcr.io/justingrote/act-pwsh:latest"}, ""}, // custom image with pwsh

View file

@ -0,0 +1,7 @@
on: push
name: non-existent-action
jobs:
nopanic:
runs-on: ubuntu-latest
steps:
- uses: ./path/to/non-existent-action