Skip to content

Commit c8a4ffd

Browse files
committed
support inputs
1 parent e5ac174 commit c8a4ffd

File tree

2 files changed

+36
-3
lines changed

2 files changed

+36
-3
lines changed

services/actions/concurrency.go

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,37 @@ import (
77
"fmt"
88

99
actions_model "code.gitea.io/gitea/models/actions"
10+
"code.gitea.io/gitea/modules/json"
11+
api "code.gitea.io/gitea/modules/structs"
1012

1113
"github.com/nektos/act/pkg/jobparser"
1214
act_model "github.com/nektos/act/pkg/model"
1315
)
1416

17+
func EvaluateWorkflowConcurrency(run *actions_model.ActionRun, rc *act_model.RawConcurrency, vars map[string]string) (string, bool, error) {
18+
gitCtx := jobparser.ToGitContext(GenerateGitContext(run, nil))
19+
inputs, err := getInputsFromRun(run)
20+
if err != nil {
21+
return "", false, fmt.Errorf("get inputs: %w", err)
22+
}
23+
jobResults := map[string]*jobparser.JobResult{"": {}}
24+
25+
concurrencyGroup, concurrencyCancel := jobparser.EvaluateConcurrency(rc, "", gitCtx, jobResults, vars, inputs)
26+
27+
return concurrencyGroup, concurrencyCancel, nil
28+
}
29+
1530
func EvaluateJobConcurrency(run *actions_model.ActionRun, actionRunJob *actions_model.ActionRunJob, vars map[string]string, jobResults map[string]*jobparser.JobResult) (string, bool, error) {
1631
rawConcurrency := &act_model.RawConcurrency{
1732
Group: actionRunJob.RawConcurrencyGroup,
1833
CancelInProgress: actionRunJob.RawConcurrencyCancel,
1934
}
2035

2136
gitCtx := jobparser.ToGitContext(GenerateGitContext(run, actionRunJob))
37+
inputs, err := getInputsFromRun(run)
38+
if err != nil {
39+
return "", false, fmt.Errorf("get inputs: %w", err)
40+
}
2241

2342
singleWorkflows, err := jobparser.Parse([]byte(actionRunJob.WorkflowPayload))
2443
if err != nil {
@@ -34,7 +53,18 @@ func EvaluateJobConcurrency(run *actions_model.ActionRun, actionRunJob *actions_
3453
Needs: actionRunJob.Needs,
3554
}
3655

37-
concurrencyGroup, concurrencyCancel := jobparser.EvaluateJobConcurrency(rawConcurrency, actionRunJob.JobID, gitCtx, vars, jobResults)
56+
concurrencyGroup, concurrencyCancel := jobparser.EvaluateConcurrency(rawConcurrency, actionRunJob.JobID, gitCtx, jobResults, vars, inputs)
3857

3958
return concurrencyGroup, concurrencyCancel, nil
4059
}
60+
61+
func getInputsFromRun(run *actions_model.ActionRun) (map[string]any, error) {
62+
if run.Event != "workflow_dispatch" {
63+
return map[string]any{}, nil
64+
}
65+
var payload api.WorkflowDispatchPayload
66+
if err := json.Unmarshal([]byte(run.EventPayload), &payload); err != nil {
67+
return nil, err
68+
}
69+
return payload.Inputs, nil
70+
}

services/actions/notifier_helper.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -338,8 +338,11 @@ func handleWorkflows(
338338
continue
339339
}
340340
if wfRawConcurrency != nil {
341-
wfGitCtx := jobparser.ToGitContext(GenerateGitContext(run, nil))
342-
wfConcurrencyGroup, wfConcurrencyCancel := jobparser.EvaluateWorkflowConcurrency(wfRawConcurrency, wfGitCtx, vars)
341+
wfConcurrencyGroup, wfConcurrencyCancel, err := EvaluateWorkflowConcurrency(run, wfRawConcurrency, vars)
342+
if err != nil {
343+
log.Error("EvaluateWorkflowConcurrency: %v", err)
344+
continue
345+
}
343346
if len(wfConcurrencyGroup) > 0 {
344347
run.ConcurrencyGroup = wfConcurrencyGroup
345348
run.ConcurrencyCancel = wfConcurrencyCancel

0 commit comments

Comments
 (0)