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:
|
case Warning:
|
||||||
log.Warning(err.Error())
|
log.Warning(err.Error())
|
||||||
default:
|
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)
|
return then(ctx)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -261,7 +261,18 @@ func (rc *RunContext) Executor() common.Executor {
|
||||||
if step.ID == "" {
|
if step.ID == "" {
|
||||||
step.ID = fmt.Sprintf("%d", i)
|
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 {
|
steps = append(steps, func(ctx context.Context) error {
|
||||||
err := rc.stopJobContainer()(ctx)
|
err := rc.stopJobContainer()(ctx)
|
||||||
|
@ -295,7 +306,18 @@ func (rc *RunContext) CompositeExecutor() common.Executor {
|
||||||
step.ID = fmt.Sprintf("%d", i)
|
step.ID = fmt.Sprintf("%d", i)
|
||||||
}
|
}
|
||||||
stepcopy := step
|
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)
|
steps = append(steps, common.JobError)
|
||||||
|
|
|
@ -97,6 +97,7 @@ func TestRunEvent(t *testing.T) {
|
||||||
{"testdata", "fail", "push", "exit with `FAILURE`: 1", platforms, ""},
|
{"testdata", "fail", "push", "exit with `FAILURE`: 1", platforms, ""},
|
||||||
{"testdata", "runs-on", "push", "", platforms, ""},
|
{"testdata", "runs-on", "push", "", platforms, ""},
|
||||||
{"testdata", "checkout", "push", "", platforms, ""},
|
{"testdata", "checkout", "push", "", platforms, ""},
|
||||||
|
{"testdata", "non-existent-action", "push", "Job 'nopanic' failed", platforms, ""},
|
||||||
{"testdata", "shells/defaults", "push", "", platforms, ""},
|
{"testdata", "shells/defaults", "push", "", platforms, ""},
|
||||||
// TODO: figure out why it fails
|
// 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
|
// {"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…
Add table
Reference in a new issue