From eb87d004a282b45b301f516e02467f195c855019 Mon Sep 17 00:00:00 2001 From: M-Cosmosss <46757262+M-Cosmosss@users.noreply.github.com> Date: Fri, 18 Aug 2023 11:02:26 +0800 Subject: [PATCH] feat: add workflow param creator.id (#2973) Signed-off-by: M-Cosmosss --- .../core/workflow/handler/workflow_task_v4.go | 6 ++++-- .../core/workflow/service/workflow/job/job.go | 7 ++++--- .../workflow/service/workflow/workflow_task_v4.go | 15 +++++++++++---- .../core/workflow/service/workflow/workflow_v4.go | 1 + 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/pkg/microservice/aslan/core/workflow/handler/workflow_task_v4.go b/pkg/microservice/aslan/core/workflow/handler/workflow_task_v4.go index a6ed246f7..876e41474 100644 --- a/pkg/microservice/aslan/core/workflow/handler/workflow_task_v4.go +++ b/pkg/microservice/aslan/core/workflow/handler/workflow_task_v4.go @@ -25,6 +25,7 @@ import ( "strings" "github.com/gin-gonic/gin" + "github.com/koderover/zadig/pkg/types" commonmodels "github.com/koderover/zadig/pkg/microservice/aslan/core/common/repository/models" @@ -94,8 +95,9 @@ func CreateWorkflowTaskV4(c *gin.Context) { } ctx.Resp, ctx.Err = workflow.CreateWorkflowTaskV4(&workflow.CreateWorkflowTaskV4Args{ - Name: ctx.UserName, - UserID: ctx.UserID, + Name: ctx.UserName, + Account: ctx.Account, + UserID: ctx.UserID, }, args, ctx.Logger) } diff --git a/pkg/microservice/aslan/core/workflow/service/workflow/job/job.go b/pkg/microservice/aslan/core/workflow/service/workflow/job/job.go index 647fa952d..5b66fdef9 100644 --- a/pkg/microservice/aslan/core/workflow/service/workflow/job/job.go +++ b/pkg/microservice/aslan/core/workflow/service/workflow/job/job.go @@ -442,12 +442,12 @@ func RemoveFixedValueMarks(workflow *commonmodels.WorkflowV4) error { return json.Unmarshal([]byte(replacedString), &workflow) } -func RenderGlobalVariables(workflow *commonmodels.WorkflowV4, taskID int64, creator string) error { +func RenderGlobalVariables(workflow *commonmodels.WorkflowV4, taskID int64, creator, account string) error { b, err := json.Marshal(workflow) if err != nil { return fmt.Errorf("marshal workflow error: %v", err) } - params, err := getWorkflowDefaultParams(workflow, taskID, creator) + params, err := getWorkflowDefaultParams(workflow, taskID, creator, account) if err != nil { return fmt.Errorf("get workflow default params error: %v", err) } @@ -483,12 +483,13 @@ func renderMultiLineString(value, template string, inputs []*commonmodels.Param) return value } -func getWorkflowDefaultParams(workflow *commonmodels.WorkflowV4, taskID int64, creator string) ([]*commonmodels.Param, error) { +func getWorkflowDefaultParams(workflow *commonmodels.WorkflowV4, taskID int64, creator, account string) ([]*commonmodels.Param, error) { resp := []*commonmodels.Param{} resp = append(resp, &commonmodels.Param{Name: "project", Value: workflow.Project, ParamsType: "string", IsCredential: false}) resp = append(resp, &commonmodels.Param{Name: "workflow.name", Value: workflow.Name, ParamsType: "string", IsCredential: false}) resp = append(resp, &commonmodels.Param{Name: "workflow.task.id", Value: fmt.Sprintf("%d", taskID), ParamsType: "string", IsCredential: false}) resp = append(resp, &commonmodels.Param{Name: "workflow.task.creator", Value: creator, ParamsType: "string", IsCredential: false}) + resp = append(resp, &commonmodels.Param{Name: "workflow.task.creator.id", Value: account, ParamsType: "string", IsCredential: false}) resp = append(resp, &commonmodels.Param{Name: "workflow.task.timestamp", Value: fmt.Sprintf("%d", time.Now().Unix()), ParamsType: "string", IsCredential: false}) for _, param := range workflow.Params { paramsKey := strings.Join([]string{"workflow", "params", param.Name}, ".") diff --git a/pkg/microservice/aslan/core/workflow/service/workflow/workflow_task_v4.go b/pkg/microservice/aslan/core/workflow/service/workflow/workflow_task_v4.go index 71e20d6c4..f6b66e737 100644 --- a/pkg/microservice/aslan/core/workflow/service/workflow/workflow_task_v4.go +++ b/pkg/microservice/aslan/core/workflow/service/workflow/workflow_task_v4.go @@ -24,13 +24,14 @@ import ( "strings" "time" - "github.com/koderover/zadig/pkg/shared/client/user" "github.com/pkg/errors" "go.uber.org/zap" "gorm.io/gorm/utils" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/labels" + "github.com/koderover/zadig/pkg/shared/client/user" + "github.com/koderover/zadig/pkg/microservice/aslan/config" commonmodels "github.com/koderover/zadig/pkg/microservice/aslan/core/common/repository/models" "github.com/koderover/zadig/pkg/microservice/aslan/core/common/repository/mongodb" @@ -300,8 +301,9 @@ func CheckWorkflowV4ApprovalInitiator(workflowName, uid string, log *zap.Sugared } type CreateWorkflowTaskV4Args struct { - Name string - UserID string + Name string + Account string + UserID string } func CreateWorkflowTaskV4ByBuildInTrigger(triggerName string, args *commonmodels.WorkflowV4, log *zap.SugaredLogger) (*CreateTaskV4Resp, error) { @@ -332,6 +334,11 @@ func CreateWorkflowTaskV4(args *CreateWorkflowTaskV4Args, workflow *commonmodels return resp, err } + // if account is not set, use name as account + if args.Account == "" { + args.Account = args.Name + } + dbWorkflow, err := commonrepo.NewWorkflowV4Coll().Find(workflow.Name) if err != nil { log.Errorf("cannot find workflow %s, the error is: %v", workflow.Name, err) @@ -378,7 +385,7 @@ func CreateWorkflowTaskV4(args *CreateWorkflowTaskV4Args, workflow *commonmodels return resp, e.ErrCreateTask.AddDesc(err.Error()) } - if err := jobctl.RenderGlobalVariables(workflow, nextTaskID, args.Name); err != nil { + if err := jobctl.RenderGlobalVariables(workflow, nextTaskID, args.Name, args.Account); err != nil { log.Errorf("RenderGlobalVariables error: %v", err) return resp, e.ErrCreateTask.AddDesc(err.Error()) } diff --git a/pkg/microservice/aslan/core/workflow/service/workflow/workflow_v4.go b/pkg/microservice/aslan/core/workflow/service/workflow/workflow_v4.go index 46a553ed7..d0706f4f8 100644 --- a/pkg/microservice/aslan/core/workflow/service/workflow/workflow_v4.go +++ b/pkg/microservice/aslan/core/workflow/service/workflow/workflow_v4.go @@ -1858,6 +1858,7 @@ func getDefaultVars(workflow *commonmodels.WorkflowV4, currentJobName string) [] vars = append(vars, fmt.Sprintf(setting.RenderValueTemplate, "project")) vars = append(vars, fmt.Sprintf(setting.RenderValueTemplate, "workflow.name")) vars = append(vars, fmt.Sprintf(setting.RenderValueTemplate, "workflow.task.creator")) + vars = append(vars, fmt.Sprintf(setting.RenderValueTemplate, "workflow.task.creator.id")) vars = append(vars, fmt.Sprintf(setting.RenderValueTemplate, "workflow.task.timestamp")) vars = append(vars, fmt.Sprintf(setting.RenderValueTemplate, "workflow.task.id")) for _, param := range workflow.Params { -- GitLab