Skip to content

Commit

Permalink
fix(api): interpolate outgoing hook payload properly #4815 (#4836)
Browse files Browse the repository at this point in the history
  • Loading branch information
bnjjj authored and richardlt committed Dec 20, 2019
1 parent 6f72ed8 commit 92027c5
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 3 deletions.
8 changes: 7 additions & 1 deletion engine/api/workflow/process_outgoinghook.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,13 @@ func processNodeOutGoingHook(ctx context.Context, db gorp.SqlExecutor, store cac
for k, v := range node.OutGoingHookContext.Config {
// If payload run interpolate
if k == sdk.Payload {
result, err := interpolate.Do(v.Value, sdk.ParametersToMap(hookRun.BuildParameters))
// Take all parent parameters without any exceptions
allParentParams := make([]sdk.Parameter, 0, len(hookRun.BuildParameters))
for _, parentNodeRun := range parentNodeRun {
allParentParams = append(allParentParams, parentNodeRun.BuildParameters...)
}

result, err := interpolate.Do(v.Value, sdk.ParametersToMap(allParentParams))
if err != nil {
return nil, true, sdk.WrapError(err, "unable to interpolate payload %s", v.Value)
}
Expand Down
6 changes: 4 additions & 2 deletions engine/hooks/outgoing_hooks.go
Original file line number Diff line number Diff line change
Expand Up @@ -213,9 +213,11 @@ func (s *Service) doOutgoingWorkflowExecution(t *sdk.TaskExecution) error {
} else {
log.Error("Hooks> doOutgoingWorkflowExecution> Cannot unmarshall payload %s", err)
}
}

payloadValues["payload"] = string(payloadstr)
if err := json.Unmarshal([]byte(payloadstr), &payloadValues); err != nil {
return sdk.WrapError(handleError(err), "cannot unmarshall payload")
}
}
}

evt := sdk.WorkflowNodeRunHookEvent{
Expand Down

0 comments on commit 92027c5

Please sign in to comment.