fix: ensure all post steps are executed (#1286)
This fixes an issue in the chain of post steps introduced while updating the step-logger for composite actions. It includes a test case so we make sure this does not happen again.
This commit is contained in:
parent
9d76bac4ef
commit
3364f95569
7 changed files with 34 additions and 2 deletions
|
@ -160,8 +160,7 @@ func (rc *RunContext) compositeExecutor(action *model.Action) *compositeSteps {
|
||||||
// run the post executor in reverse order
|
// run the post executor in reverse order
|
||||||
if postExecutor != nil {
|
if postExecutor != nil {
|
||||||
stepPost := rc.newCompositeCommandExecutor(step.post())
|
stepPost := rc.newCompositeCommandExecutor(step.post())
|
||||||
postExecutor = newCompositeStepLogExecutor(stepPost, stepID)
|
postExecutor = newCompositeStepLogExecutor(stepPost.Finally(postExecutor), stepID)
|
||||||
stepPost.Finally(postExecutor)
|
|
||||||
} else {
|
} else {
|
||||||
stepPost := rc.newCompositeCommandExecutor(step.post())
|
stepPost := rc.newCompositeCommandExecutor(step.post())
|
||||||
postExecutor = newCompositeStepLogExecutor(stepPost, stepID)
|
postExecutor = newCompositeStepLogExecutor(stepPost, stepID)
|
||||||
|
|
|
@ -178,6 +178,7 @@ func TestRunEvent(t *testing.T) {
|
||||||
{workdir, "actions-environment-and-context-tests", "push", "", platforms},
|
{workdir, "actions-environment-and-context-tests", "push", "", platforms},
|
||||||
{workdir, "uses-action-with-pre-and-post-step", "push", "", platforms},
|
{workdir, "uses-action-with-pre-and-post-step", "push", "", platforms},
|
||||||
{workdir, "evalenv", "push", "", platforms},
|
{workdir, "evalenv", "push", "", platforms},
|
||||||
|
{workdir, "ensure-post-steps", "push", "Job 'second-post-step-should-fail' failed", platforms},
|
||||||
{"../model/testdata", "strategy", "push", "", platforms}, // TODO: move all testdata into pkg so we can validate it with planner and runner
|
{"../model/testdata", "strategy", "push", "", platforms}, // TODO: move all testdata into pkg so we can validate it with planner and runner
|
||||||
// {"testdata", "issue-228", "push", "", platforms, }, // TODO [igni]: Remove this once everything passes
|
// {"testdata", "issue-228", "push", "", platforms, }, // TODO [igni]: Remove this once everything passes
|
||||||
{"../model/testdata", "container-volumes", "push", "", platforms},
|
{"../model/testdata", "container-volumes", "push", "", platforms},
|
||||||
|
|
10
pkg/runner/testdata/ensure-post-steps/action-composite/action.yml
vendored
Normal file
10
pkg/runner/testdata/ensure-post-steps/action-composite/action.yml
vendored
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
name: "action composite"
|
||||||
|
description: "action composite"
|
||||||
|
runs:
|
||||||
|
using: composite
|
||||||
|
steps:
|
||||||
|
# second post action should fail if executed (we do check on the exit code)
|
||||||
|
- uses: ./ensure-post-steps/action-post/
|
||||||
|
with:
|
||||||
|
fail: "true"
|
||||||
|
- uses: ./ensure-post-steps/action-post/
|
11
pkg/runner/testdata/ensure-post-steps/action-post/action.yml
vendored
Normal file
11
pkg/runner/testdata/ensure-post-steps/action-post/action.yml
vendored
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
name: "action post"
|
||||||
|
description: "action post"
|
||||||
|
inputs:
|
||||||
|
fail:
|
||||||
|
description: "true if this should fail"
|
||||||
|
required: false
|
||||||
|
default: "false"
|
||||||
|
runs:
|
||||||
|
using: node16
|
||||||
|
main: "./main.js"
|
||||||
|
post: "./post.js"
|
0
pkg/runner/testdata/ensure-post-steps/action-post/main.js
vendored
Normal file
0
pkg/runner/testdata/ensure-post-steps/action-post/main.js
vendored
Normal file
3
pkg/runner/testdata/ensure-post-steps/action-post/post.js
vendored
Normal file
3
pkg/runner/testdata/ensure-post-steps/action-post/post.js
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
if (process.env["INPUT_FAIL"] === "true") {
|
||||||
|
process.exit(1);
|
||||||
|
}
|
8
pkg/runner/testdata/ensure-post-steps/push.yml
vendored
Normal file
8
pkg/runner/testdata/ensure-post-steps/push.yml
vendored
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
name: test
|
||||||
|
on: push
|
||||||
|
jobs:
|
||||||
|
second-post-step-should-fail:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: ./ensure-post-steps/action-composite/
|
Loading…
Reference in a new issue