Skip to content

Commit

Permalink
fix: preserve job result state in case of failure
Browse files Browse the repository at this point in the history
There is just one job field for the job result. This is also true for
matrix jobs. We need to preserve the failure state of a job to
have the whole job failing in case of one permuation of the matrix failed.

Closes nektos#1518
  • Loading branch information
KnisterPeter authored and github-actions committed Jan 2, 2023
1 parent 890901e commit c8e71c8
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 2 deletions.
16 changes: 14 additions & 2 deletions pkg/runner/job_executor.go
Original file line number Diff line number Diff line change
Expand Up @@ -130,17 +130,29 @@ func newJobExecutor(info jobInfo, sf stepFactory, rc *RunContext) common.Executo

func setJobResult(ctx context.Context, info jobInfo, rc *RunContext, success bool) {
logger := common.Logger(ctx)

jobResult := "success"
jobResultMessage := "succeeded"
// we have only one result for a whole matrix build, so we need
// to keep an existing result state if we run a matrix
if len(info.matrix()) > 0 && rc.Run.Job().Result != "" {
jobResult = rc.Run.Job().Result
}

if !success {
jobResult = "failure"
jobResultMessage = "failed"
}

info.result(jobResult)
if rc.caller != nil {
// set reusable workflow job result
rc.caller.runContext.result(jobResult)
}

jobResultMessage := "succeeded"
if jobResult != "success" {
jobResultMessage = "failed"
}

logger.WithField("jobResult", jobResult).Infof("\U0001F3C1 Job %s", jobResultMessage)
}

Expand Down
1 change: 1 addition & 0 deletions pkg/runner/runner_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,7 @@ func TestRunEvent(t *testing.T) {
{workdir, "remote-action-js", "push", "", map[string]string{"ubuntu-latest": "catthehacker/ubuntu:runner-latest"}, secrets}, // Test if this works with non root container
{workdir, "matrix", "push", "", platforms, secrets},
{workdir, "matrix-include-exclude", "push", "", platforms, secrets},
{workdir, "matrix-exitcode", "push", "Job 'test' failed", platforms, secrets},
{workdir, "commands", "push", "", platforms, secrets},
{workdir, "workdir", "push", "", platforms, secrets},
{workdir, "defaults-run", "push", "", platforms, secrets},
Expand Down
17 changes: 17 additions & 0 deletions pkg/runner/testdata/matrix-exitcode/push.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: test

on: push

jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
val: ["success", "failure"]
fail-fast: false
continue-on-error: true
steps:
- name: test
run: |
echo "Expected job result: ${{ matrix.val }}"
[[ "${{ matrix.val }}" = "success" ]] || exit 1

0 comments on commit c8e71c8

Please sign in to comment.