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:
parent
eba71f98fe
commit
4be9062dd2
5 changed files with 32 additions and 5 deletions
|
@ -299,7 +299,9 @@ func (rc *RunContext) CompositeExecutor() common.Executor {
|
||||||
}
|
}
|
||||||
|
|
||||||
steps = append(steps, common.JobError)
|
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 {
|
func (rc *RunContext) newStepExecutor(step *model.Step) common.Executor {
|
||||||
|
|
|
@ -122,6 +122,7 @@ func TestRunEvent(t *testing.T) {
|
||||||
{"testdata", "uses-composite", "push", "", platforms, ""},
|
{"testdata", "uses-composite", "push", "", platforms, ""},
|
||||||
{"testdata", "uses-composite-with-error", "push", "Job 'failing-composite-action' failed", platforms, ""},
|
{"testdata", "uses-composite-with-error", "push", "Job 'failing-composite-action' failed", platforms, ""},
|
||||||
{"testdata", "uses-nested-composite", "push", "", platforms, ""},
|
{"testdata", "uses-nested-composite", "push", "", platforms, ""},
|
||||||
|
{"testdata", "composite-fail-with-output", "push", "", platforms, ""},
|
||||||
{"testdata", "issue-597", "push", "", platforms, ""},
|
{"testdata", "issue-597", "push", "", platforms, ""},
|
||||||
{"testdata", "issue-598", "push", "", platforms, ""},
|
{"testdata", "issue-598", "push", "", platforms, ""},
|
||||||
{"testdata", "env-and-path", "push", "", platforms, ""},
|
{"testdata", "env-and-path", "push", "", platforms, ""},
|
||||||
|
|
|
@ -722,9 +722,6 @@ func (sc *StepContext) execAsComposite(ctx context.Context, step *model.Step, _
|
||||||
compositerc.Inputs = inputs
|
compositerc.Inputs = inputs
|
||||||
compositerc.ExprEval = compositerc.NewExpressionEvaluator()
|
compositerc.ExprEval = compositerc.NewExpressionEvaluator()
|
||||||
err = compositerc.CompositeExecutor()(ctx)
|
err = compositerc.CompositeExecutor()(ctx)
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Map outputs to parent rc
|
// Map outputs to parent rc
|
||||||
eval = (&StepContext{
|
eval = (&StepContext{
|
||||||
|
@ -744,7 +741,7 @@ func (sc *StepContext) execAsComposite(ctx context.Context, step *model.Step, _
|
||||||
backup.Env[k] = v
|
backup.Env[k] = v
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (sc *StepContext) populateEnvsFromInput(action *model.Action, rc *RunContext) {
|
func (sc *StepContext) populateEnvsFromInput(action *model.Action, rc *RunContext) {
|
||||||
|
|
13
pkg/runner/testdata/actions/composite-fail-with-output/action.yml
vendored
Normal file
13
pkg/runner/testdata/actions/composite-fail-with-output/action.yml
vendored
Normal 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
|
14
pkg/runner/testdata/composite-fail-with-output/push.yml
vendored
Normal file
14
pkg/runner/testdata/composite-fail-with-output/push.yml
vendored
Normal 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'}}
|
Loading…
Add table
Reference in a new issue