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:
Markus Wolf 2022-07-29 21:43:24 +02:00 committed by GitHub
parent 9d76bac4ef
commit 3364f95569
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 34 additions and 2 deletions

View File

@ -160,8 +160,7 @@ func (rc *RunContext) compositeExecutor(action *model.Action) *compositeSteps {
// run the post executor in reverse order
if postExecutor != nil {
stepPost := rc.newCompositeCommandExecutor(step.post())
postExecutor = newCompositeStepLogExecutor(stepPost, stepID)
stepPost.Finally(postExecutor)
postExecutor = newCompositeStepLogExecutor(stepPost.Finally(postExecutor), stepID)
} else {
stepPost := rc.newCompositeCommandExecutor(step.post())
postExecutor = newCompositeStepLogExecutor(stepPost, stepID)

View File

@ -178,6 +178,7 @@ func TestRunEvent(t *testing.T) {
{workdir, "actions-environment-and-context-tests", "push", "", platforms},
{workdir, "uses-action-with-pre-and-post-step", "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
// {"testdata", "issue-228", "push", "", platforms, }, // TODO [igni]: Remove this once everything passes
{"../model/testdata", "container-volumes", "push", "", platforms},

View 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/

View 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"

View File

@ -0,0 +1,3 @@
if (process.env["INPUT_FAIL"] === "true") {
process.exit(1);
}

View 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/