fix: set composite outputs on failure (#945)

fix: conclusion and outcome after error with failure condition
fix: continue-on-error doesn't work correctly for composite actions
This commit is contained in:
ChristopherHX 2022-01-21 17:08:30 +01:00 committed by GitHub
parent eba71f98fe
commit 4be9062dd2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 32 additions and 5 deletions

View file

@ -299,7 +299,9 @@ func (rc *RunContext) CompositeExecutor() common.Executor {
}
steps = append(steps, common.JobError)
return common.NewPipelineExecutor(steps...)
return func(ctx context.Context) error {
return common.NewPipelineExecutor(steps...)(common.WithJobErrorContainer(ctx))
}
}
func (rc *RunContext) newStepExecutor(step *model.Step) common.Executor {

View file

@ -122,6 +122,7 @@ func TestRunEvent(t *testing.T) {
{"testdata", "uses-composite", "push", "", platforms, ""},
{"testdata", "uses-composite-with-error", "push", "Job 'failing-composite-action' failed", platforms, ""},
{"testdata", "uses-nested-composite", "push", "", platforms, ""},
{"testdata", "composite-fail-with-output", "push", "", platforms, ""},
{"testdata", "issue-597", "push", "", platforms, ""},
{"testdata", "issue-598", "push", "", platforms, ""},
{"testdata", "env-and-path", "push", "", platforms, ""},

View file

@ -722,9 +722,6 @@ func (sc *StepContext) execAsComposite(ctx context.Context, step *model.Step, _
compositerc.Inputs = inputs
compositerc.ExprEval = compositerc.NewExpressionEvaluator()
err = compositerc.CompositeExecutor()(ctx)
if err != nil {
return err
}
// Map outputs to parent rc
eval = (&StepContext{
@ -744,7 +741,7 @@ func (sc *StepContext) execAsComposite(ctx context.Context, step *model.Step, _
backup.Env[k] = v
}
}
return nil
return err
}
func (sc *StepContext) populateEnvsFromInput(action *model.Action, rc *RunContext) {

View file

@ -0,0 +1,13 @@
outputs:
customoutput:
value: my-customoutput-${{ steps.random-color-generator.outputs.SELECTED_COLOR }}
runs:
using: composite
steps:
- name: Set selected color
run: echo '::set-output name=SELECTED_COLOR::green'
id: random-color-generator
shell: bash
- name: fail
run: exit 1
shell: bash

View file

@ -0,0 +1,14 @@
name: composite-fail-with-output
on: push
jobs:
test-for-output:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: ./actions/composite-fail-with-output
id: composite-fail-with-output
continue-on-error: true
- run: |
echo ${{steps.composite-fail-with-output.outputs.customoutput}}
exit ${{steps.composite-fail-with-output.outputs.customoutput == 'my-customoutput-green' && '0' || '1'}}