@@ -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+
1530func 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+ }
0 commit comments