@@ -73,22 +73,13 @@ func createChildRunFromReusableWorkflow(ctx context.Context, parentJob *actions_
7373 return err
7474 }
7575
76- workflowCallPayload := & api.WorkflowCallPayload {
77- Workflow : parentJobRun .WorkflowID ,
78- Ref : parentJobRun .Ref ,
79- Repository : convert .ToRepo (ctx , parentJobRun .Repo , access_model.Permission {AccessMode : perm .AccessModeNone }),
80- Sender : convert .ToUserWithAccessMode (ctx , parentJobRun .TriggerUser , perm .AccessModeNone ),
81- Inputs : inputsWithDefaults ,
82- Secrets : flattenWorkflowCallSecrets (parentJobRun , secretsMapping ),
76+ eventPayload , err := buildWorkflowCallEventPayload (ctx , parentJobRun , inputsWithDefaults , secretsMapping )
77+ if err != nil {
78+ return err
8379 }
8480
8581 childRunTitle := fmt .Sprintf ("%s / %s" , parentJobRun .Title , parentJob .Name )
8682
87- var eventPayload []byte
88- if eventPayload , err = workflowCallPayload .JSONPayload (); err != nil {
89- return fmt .Errorf ("JSONPayload: %w" , err )
90- }
91-
9283 childRun := & actions_model.ActionRun {
9384 Title : childRunTitle ,
9485 RepoID : parentJobRun .RepoID ,
@@ -119,6 +110,70 @@ func createChildRunFromReusableWorkflow(ctx context.Context, parentJob *actions_
119110 return nil
120111}
121112
113+ func refreshChildRunEventPayload (ctx context.Context , parentJob * actions_model.ActionRunJob ) error {
114+ if parentJob .ChildRunID <= 0 {
115+ return nil
116+ }
117+ if err := parentJob .LoadAttributes (ctx ); err != nil {
118+ return err
119+ }
120+
121+ workflowJob , err := parentJob .ParseJob ()
122+ if err != nil {
123+ return err
124+ }
125+ ref , err := act_pkg_runner .ParseReusableWorkflowRef (workflowJob .Uses )
126+ if err != nil {
127+ return err
128+ }
129+ content , err := loadReusableWorkflowContent (ctx , parentJob .Run , ref )
130+ if err != nil {
131+ return err
132+ }
133+
134+ vars , err := actions_model .GetVariablesOfRun (ctx , parentJob .Run )
135+ if err != nil {
136+ return err
137+ }
138+ giteaCtx := GenerateGiteaContext (parentJob .Run , parentJob )
139+ inputsWithDefaults , err := buildWorkflowCallInputs (ctx , parentJob , workflowJob , content , vars , giteaCtx )
140+ if err != nil {
141+ return err
142+ }
143+ secretsMapping , err := buildWorkflowCallSecrets (workflowJob , content )
144+ if err != nil {
145+ return err
146+ }
147+
148+ eventPayload , err := buildWorkflowCallEventPayload (ctx , parentJob .Run , inputsWithDefaults , secretsMapping )
149+ if err != nil {
150+ return err
151+ }
152+
153+ return actions_model .UpdateRunEventPayload (ctx , parentJob .RepoID , parentJob .ChildRunID , string (eventPayload ))
154+ }
155+
156+ func buildWorkflowCallEventPayload (ctx context.Context , parentRun * actions_model.ActionRun , inputs map [string ]any , secretsMapping map [string ]string ) ([]byte , error ) {
157+ if err := parentRun .LoadAttributes (ctx ); err != nil {
158+ return nil , err
159+ }
160+
161+ workflowCallPayload := & api.WorkflowCallPayload {
162+ Workflow : parentRun .WorkflowID ,
163+ Ref : parentRun .Ref ,
164+ Repository : convert .ToRepo (ctx , parentRun .Repo , access_model.Permission {AccessMode : perm .AccessModeNone }),
165+ Sender : convert .ToUserWithAccessMode (ctx , parentRun .TriggerUser , perm .AccessModeNone ),
166+ Inputs : inputs ,
167+ Secrets : flattenWorkflowCallSecrets (parentRun , secretsMapping ),
168+ }
169+
170+ eventPayload , err := workflowCallPayload .JSONPayload ()
171+ if err != nil {
172+ return nil , fmt .Errorf ("JSONPayload: %w" , err )
173+ }
174+ return eventPayload , nil
175+ }
176+
122177func buildWorkflowCallInputs (ctx context.Context , parentJob * actions_model.ActionRunJob , workflowJob * jobparser.Job , content []byte , vars map [string ]string , giteaCtx GiteaContext ) (map [string ]any , error ) {
123178 singleWorkflow := & jobparser.SingleWorkflow {}
124179 if err := yaml .Unmarshal (content , singleWorkflow ); err != nil {
0 commit comments