diff --git a/act/runner/run_context.go b/act/runner/run_context.go index b2204d3e..44cd95a0 100644 --- a/act/runner/run_context.go +++ b/act/runner/run_context.go @@ -1104,9 +1104,7 @@ func (rc *RunContext) Executor() (common.Executor, error) { return func(ctx context.Context) error { res, err := rc.isEnabled(ctx) if err != nil { - // Record the failure so a job whose if-expression fails to evaluate - // gets a result (and therefore a stop time) instead of being left - // unfinished. rc.caller is only set for reusable workflows. + // Record the failure so a job that cannot start gets a stop time. rc.caller is only set for reusable workflows. rc.result("failure") if rc.caller != nil { // For Gitea rc.caller.setReusedWorkflowJobResult(rc.Run.JobID, "failure") @@ -1197,7 +1195,7 @@ func (rc *RunContext) isEnabled(ctx context.Context) (bool, error) { jobType, jobTypeErr := job.Type() if runJobErr != nil { - return false, fmt.Errorf("if-expression %q evaluation failed: %s", job.If.Value, runJobErr) + l.Errorf("Error when evaluating 'if' for job '%s'. %v", rc.Run.JobID, runJobErr) } if jobType == model.JobTypeInvalid { diff --git a/act/runner/run_context_test.go b/act/runner/run_context_test.go index 233c0867..9abd8651 100644 --- a/act/runner/run_context_test.go +++ b/act/runner/run_context_test.go @@ -1141,6 +1141,13 @@ if: always()`, ""), if: false`, ""), }) assertObject.False(rc.isEnabled(context.Background())) + + rc = createIfTestRunContext(map[string]*model.Job{ + "job1": createJob(t, `if: ${{ fromJSON('not-json') }}`, ""), + }) + enabled, err := rc.isEnabled(context.Background()) + require.NoError(t, err) + assertObject.False(enabled) } func TestRunContextGetEnv(t *testing.T) { diff --git a/go.mod b/go.mod index b17ebe8d..5bde57f8 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ toolchain go1.27.1 require ( connectrpc.com/connect v1.21.0 dario.cat/mergo v1.0.2 - gitea.dev/actionslib v1.2.0 + gitea.dev/actionslib v1.2.1 github.com/avast/retry-go/v5 v5.0.0 github.com/containerd/errdefs v1.0.0 github.com/creack/pty v1.1.24 diff --git a/go.sum b/go.sum index 7dd7a955..84239547 100644 --- a/go.sum +++ b/go.sum @@ -4,8 +4,8 @@ cyphar.com/go-pathrs v0.2.5 h1:SnX9FBvnoyn3lUs1dkMgZ52bAETpirNu3FTRh5HlRik= cyphar.com/go-pathrs v0.2.5/go.mod h1:y8f1EMG7r+hCuFf/rXsKqMJrJAUoADZGNh5/vZPKcGc= dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= -gitea.dev/actionslib v1.2.0 h1:R/PBu9DwD04tCd5rjAWT9dAa+S6GOk1XnXCC3T2Rrnw= -gitea.dev/actionslib v1.2.0/go.mod h1:1+gqOKGSEPn2IFHgY8S3GC5Ld+Hn8jF3OxiFHQ/fpx4= +gitea.dev/actionslib v1.2.1 h1:GL//K/0zIZV6h1OOksv1awvFVg0rg7fug2xWcG7mkG0= +gitea.dev/actionslib v1.2.1/go.mod h1:1+gqOKGSEPn2IFHgY8S3GC5Ld+Hn8jF3OxiFHQ/fpx4= github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk= github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= diff --git a/internal/app/run/workflow.go b/internal/app/run/workflow.go index 65e9c771..af05e143 100644 --- a/internal/app/run/workflow.go +++ b/internal/app/run/workflow.go @@ -15,7 +15,7 @@ import ( ) func generateWorkflow(task *runnerv1.Task) (*model.Workflow, string, error) { - workflow, err := model.ReadWorkflow(bytes.NewReader(task.WorkflowPayload)) + workflow, err := model.ReadWorkflowPayload(bytes.NewReader(task.WorkflowPayload)) if err != nil { return nil, "", err }