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:
parent
557dc755b8
commit
7dbf3fcb96
4 changed files with 37 additions and 6 deletions
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
7
pkg/runner/testdata/non-existent-action/push.yml
vendored
Normal file
7
pkg/runner/testdata/non-existent-action/push.yml
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
on: push
|
||||
name: non-existent-action
|
||||
jobs:
|
||||
nopanic:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: ./path/to/non-existent-action
|
Loading…
Reference in a new issue