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)
|
||||
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 {
|
||||
|
|
|
@ -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, ""},
|
||||
|
|
|
@ -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) {
|
||||
|
|
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…
Reference in a new issue