From 48015864b66a0c18d4d4969c45be14c923953177 Mon Sep 17 00:00:00 2001 From: wuhuizuo Date: Sat, 9 Dec 2023 18:18:43 +0800 Subject: [PATCH] refactor(tibuild): rename `internalpkg` to `internal` - rename the pkg name. - extract complex steps of `PipelineTrigger` to `triggerJenkinsJob`. - simplfy the gin bind steps. Signed-off-by: wuhuizuo --- tibuild/README.md | 2 +- tibuild/api/api.go | 2 +- .../controller/github_sso.go | 0 .../params_available_for_pipeline.go | 0 .../controller/pipeline_for_build_type.go | 0 .../controller/pipeline_list_show.go | 2 +- .../controller/pipeline_trigger.go | 181 +++++++++--------- .../controller/request_result.go | 2 +- .../controller/request_rotation.go | 2 +- .../controller/test.go | 0 .../{internalpkg => internal}/dto/testDTO.go | 0 .../entity/entities.go | 0 .../service/jenkins_init.go | 0 .../service/job_build.go | 2 +- .../service/job_status.go | 0 15 files changed, 92 insertions(+), 101 deletions(-) rename tibuild/{internalpkg => internal}/controller/github_sso.go (100%) rename tibuild/{internalpkg => internal}/controller/params_available_for_pipeline.go (100%) rename tibuild/{internalpkg => internal}/controller/pipeline_for_build_type.go (100%) rename tibuild/{internalpkg => internal}/controller/pipeline_list_show.go (97%) rename tibuild/{internalpkg => internal}/controller/pipeline_trigger.go (57%) rename tibuild/{internalpkg => internal}/controller/request_result.go (97%) rename tibuild/{internalpkg => internal}/controller/request_rotation.go (95%) rename tibuild/{internalpkg => internal}/controller/test.go (100%) rename tibuild/{internalpkg => internal}/dto/testDTO.go (100%) rename tibuild/{internalpkg => internal}/entity/entities.go (100%) rename tibuild/{internalpkg => internal}/service/jenkins_init.go (100%) rename tibuild/{internalpkg => internal}/service/job_build.go (98%) rename tibuild/{internalpkg => internal}/service/job_status.go (100%) diff --git a/tibuild/README.md b/tibuild/README.md index d882d49..40fe0cb 100644 --- a/tibuild/README.md +++ b/tibuild/README.md @@ -45,7 +45,7 @@ tibuild └── configs/ # Global configuration reader └── database/ # Database connectors └── httpclient/ # Http client utils -└── internalpkg/ # Business code & function +└── internal/ # Business code & function └── entity/ # Object entity └── service/ # Service for controller/ └── controller/ # Deal with http request diff --git a/tibuild/api/api.go b/tibuild/api/api.go index 9524d1b..807daa4 100644 --- a/tibuild/api/api.go +++ b/tibuild/api/api.go @@ -12,7 +12,7 @@ import ( "github.com/PingCAP-QE/ee-apps/tibuild/commons/configs" "github.com/PingCAP-QE/ee-apps/tibuild/commons/database" - "github.com/PingCAP-QE/ee-apps/tibuild/internalpkg/controller" + "github.com/PingCAP-QE/ee-apps/tibuild/internal/controller" controllers "github.com/PingCAP-QE/ee-apps/tibuild/pkg/rest/controller" "github.com/PingCAP-QE/ee-apps/tibuild/pkg/rest/service" diff --git a/tibuild/internalpkg/controller/github_sso.go b/tibuild/internal/controller/github_sso.go similarity index 100% rename from tibuild/internalpkg/controller/github_sso.go rename to tibuild/internal/controller/github_sso.go diff --git a/tibuild/internalpkg/controller/params_available_for_pipeline.go b/tibuild/internal/controller/params_available_for_pipeline.go similarity index 100% rename from tibuild/internalpkg/controller/params_available_for_pipeline.go rename to tibuild/internal/controller/params_available_for_pipeline.go diff --git a/tibuild/internalpkg/controller/pipeline_for_build_type.go b/tibuild/internal/controller/pipeline_for_build_type.go similarity index 100% rename from tibuild/internalpkg/controller/pipeline_for_build_type.go rename to tibuild/internal/controller/pipeline_for_build_type.go diff --git a/tibuild/internalpkg/controller/pipeline_list_show.go b/tibuild/internal/controller/pipeline_list_show.go similarity index 97% rename from tibuild/internalpkg/controller/pipeline_list_show.go rename to tibuild/internal/controller/pipeline_list_show.go index 5ae784e..e37a713 100644 --- a/tibuild/internalpkg/controller/pipeline_list_show.go +++ b/tibuild/internal/controller/pipeline_list_show.go @@ -8,7 +8,7 @@ import ( "github.com/gin-gonic/gin/binding" "github.com/PingCAP-QE/ee-apps/tibuild/commons/database" - "github.com/PingCAP-QE/ee-apps/tibuild/internalpkg/entity" + "github.com/PingCAP-QE/ee-apps/tibuild/internal/entity" ) type PipelinesListShowRequest struct { diff --git a/tibuild/internalpkg/controller/pipeline_trigger.go b/tibuild/internal/controller/pipeline_trigger.go similarity index 57% rename from tibuild/internalpkg/controller/pipeline_trigger.go rename to tibuild/internal/controller/pipeline_trigger.go index 491c4ad..e748b6b 100644 --- a/tibuild/internalpkg/controller/pipeline_trigger.go +++ b/tibuild/internal/controller/pipeline_trigger.go @@ -14,8 +14,8 @@ import ( "github.com/PingCAP-QE/ee-apps/tibuild/commons/configs" "github.com/PingCAP-QE/ee-apps/tibuild/commons/database" "github.com/PingCAP-QE/ee-apps/tibuild/gojenkins" - "github.com/PingCAP-QE/ee-apps/tibuild/internalpkg/entity" - "github.com/PingCAP-QE/ee-apps/tibuild/internalpkg/service" + "github.com/PingCAP-QE/ee-apps/tibuild/internal/entity" + "github.com/PingCAP-QE/ee-apps/tibuild/internal/service" ) type PipelineTriggerStruct struct { @@ -58,9 +58,12 @@ type WhiteList struct { } func PipelineTrigger(c *gin.Context) { + log.Println(c.Request.URL.Path) + var params PipelineTriggerStruct - println("start.....") - err := c.ShouldBind(¶ms) + if err := c.Bind(¶ms); err != nil { + return + } println(params.PipelineId) println(params.TriggeredBy) println(params.ArtifactType) @@ -69,17 +72,6 @@ func PipelineTrigger(c *gin.Context) { println(params.Branch) println(params.Version) - if err != nil { - c.Error(err) - c.JSON(http.StatusBadRequest, gin.H{ - "code": 400, - "message": err.Error(), - "data": params, - }) - return - } - println("finished......") - // 查数据库关联 var tibuildInfo []TibuildInfo database.DBConn.DB.Where(&TibuildInfo{PipelineId: params.PipelineId}).Find(&tibuildInfo) @@ -107,7 +99,6 @@ func PipelineTrigger(c *gin.Context) { // jenkins ctx := context.Background() jenkins, _ := gojenkins.CreateJenkins(nil, "https://cd.pingcap.net/", configs.Config.Jenkins.UserName, configs.Config.Jenkins.PassWord).Init(ctx) - copyContext := c.Copy() var cstSh, _ = time.LoadLocation("Asia/Shanghai") //上海 ps := entity.PipelinesListShow{ @@ -134,89 +125,89 @@ func PipelineTrigger(c *gin.Context) { params_trans := make(map[string]string) params_trans["PIPELINE_BUILD_ID"] = strconv.Itoa(ps.PipelineBuildId) - go func() { - job_name_tmp := strings.Split(tibuildInfo[0].Pipeline, "/job/") - // 请求数据入库,数据库生成自增id并返回 - switch params.PipelineId { - case 1, 2, 3, 4, 5, 6: - fmt.Println("触发构建的是多分支流水线,没有传入参数") - case 7: - fmt.Println("Tab展示名:Nightly Image Build For QA") - if params.Branch == "master" { - params_trans["GIT_BRANCH"] = "master" - params_trans["NEED_MULTIARCH"] = "true" - } else { - params_trans["GIT_BRANCH"] = params.Branch - params_trans["NEED_MULTIARCH"] = "false" - } - params_trans["FORCE_REBUILD"] = "false" - - case 8: - fmt.Println("Tab展示名:Nightly Image Build to Dockerhub") - - case 9: - fmt.Println("Tab展示名:Nightly TiUP Build") - case 10: - params_trans["RELEASE_BRANCH"] = params.Branch - params_trans["RELEASE_TAG"] = params.Version - case 11: - params_trans["RELEASE_TAG"] = params.Version - params_trans["RELEASE_BRANCH"] = params.Branch - params_trans["NEED_MULTIARCH"] = "true" - params_trans["DEBUG_MODE"] = "false" - case 12: - params_trans["PRODUCT"] = params.Component - if params.Component == "ticdc" || params.Component == "dm" { - params_trans["REPO"] = "tiflow" - } else if params.Component == "tidb" || params.Component == "dumpling" || params.Component == "lightning" || params.Component == "br" { - params_trans["REPO"] = "tidb" - } else { - params_trans["REPO"] = params.Component - } - params_trans["HOTFIX_TAG"] = params.Version - if params.PushGCR == "Yes" { - params_trans["PUSH_GCR"] = "true" - } else { - params_trans["PUSH_GCR"] = "false" - } - if params.ArtifactType == "enterprise image" { - params_trans["PUSH_DOCKER_HUB"] = "false" - params_trans["EDITION"] = "enterprise" - } else { - params_trans["PUSH_DOCKER_HUB"] = "true" - params_trans["EDITION"] = "community" - } - params_trans["FORCE_REBUILD"] = "true" - params_trans["DEBUG"] = "false" - if params.Arch == "All" { - params_trans["ARCH"] = "both" - } else if params.Arch == "linux-amd64" { - params_trans["ARCH"] = "amd64" - } else { - params_trans["ARCH"] = "arm64" - } - - } + log.Println(params_trans) - if len(job_name_tmp) <= 1 { - println("Jenkins uri 非法!") - } else if len(job_name_tmp) == 2 { - job_name := strings.Split(job_name_tmp[1], "/")[0] - println(job_name) - service.Job_Build(jenkins, ctx, job_name, params_trans, int64(ps.PipelineBuildId)) - } else { - job_name := job_name_tmp[1] + "/" + job_name_tmp[2] - println(job_name) - service.Job_Build(jenkins, ctx, job_name, params_trans, int64(ps.PipelineBuildId)) - } + go triggerJenkinsJob(ctx, &tibuildInfo[0], ¶ms, params_trans, jenkins, int64(ps.PipelineBuildId)) - log.Println(copyContext.Request.URL.Path) - }() - log.Println(params_trans) - res := &TriggerRes{PipelineBuildId: ps.PipelineBuildId} c.JSON(http.StatusOK, gin.H{ "code": 200, "message": "请求成功", - "data": res, + "data": &TriggerRes{PipelineBuildId: ps.PipelineBuildId}, }) } + +func triggerJenkinsJob(ctx context.Context, tibuildInfo *TibuildInfo, params *PipelineTriggerStruct, params_trans map[string]string, jenkins *gojenkins.Jenkins, pipelineBuildID int64) { + switch params.PipelineId { + case 1, 2, 3, 4, 5, 6: + fmt.Println("触发构建的是多分支流水线,没有传入参数") + case 7: + fmt.Println("Tab展示名:Nightly Image Build For QA") + if params.Branch == "master" { + params_trans["GIT_BRANCH"] = "master" + params_trans["NEED_MULTIARCH"] = "true" + } else { + params_trans["GIT_BRANCH"] = params.Branch + params_trans["NEED_MULTIARCH"] = "false" + } + params_trans["FORCE_REBUILD"] = "false" + + case 8: + fmt.Println("Tab展示名:Nightly Image Build to Dockerhub") + + case 9: + fmt.Println("Tab展示名:Nightly TiUP Build") + case 10: + params_trans["RELEASE_BRANCH"] = params.Branch + params_trans["RELEASE_TAG"] = params.Version + case 11: + params_trans["RELEASE_TAG"] = params.Version + params_trans["RELEASE_BRANCH"] = params.Branch + params_trans["NEED_MULTIARCH"] = "true" + params_trans["DEBUG_MODE"] = "false" + case 12: // dev-build + params_trans["PRODUCT"] = params.Component + if params.Component == "ticdc" || params.Component == "dm" { + params_trans["REPO"] = "tiflow" + } else if params.Component == "tidb" || params.Component == "dumpling" || params.Component == "lightning" || params.Component == "br" { + params_trans["REPO"] = "tidb" + } else { + params_trans["REPO"] = params.Component + } + params_trans["HOTFIX_TAG"] = params.Version + if params.PushGCR == "Yes" { + params_trans["PUSH_GCR"] = "true" + } else { + params_trans["PUSH_GCR"] = "false" + } + if params.ArtifactType == "enterprise image" { + params_trans["PUSH_DOCKER_HUB"] = "false" + params_trans["EDITION"] = "enterprise" + } else { + params_trans["PUSH_DOCKER_HUB"] = "true" + params_trans["EDITION"] = "community" + } + params_trans["FORCE_REBUILD"] = "true" + params_trans["DEBUG"] = "false" + if params.Arch == "All" { + params_trans["ARCH"] = "both" + } else if params.Arch == "linux-amd64" { + params_trans["ARCH"] = "amd64" + } else { + params_trans["ARCH"] = "arm64" + } + + } + + job_name_tmp := strings.Split(tibuildInfo.Pipeline, "/job/") + if len(job_name_tmp) <= 1 { + println("Jenkins uri 非法!") + } else if len(job_name_tmp) == 2 { + job_name := strings.Split(job_name_tmp[1], "/")[0] + println(job_name) + service.Job_Build(jenkins, ctx, job_name, params_trans, pipelineBuildID) + } else { + job_name := job_name_tmp[1] + "/" + job_name_tmp[2] + println(job_name) + service.Job_Build(jenkins, ctx, job_name, params_trans, pipelineBuildID) + } +} diff --git a/tibuild/internalpkg/controller/request_result.go b/tibuild/internal/controller/request_result.go similarity index 97% rename from tibuild/internalpkg/controller/request_result.go rename to tibuild/internal/controller/request_result.go index 6d0a224..2656ab2 100644 --- a/tibuild/internalpkg/controller/request_result.go +++ b/tibuild/internal/controller/request_result.go @@ -8,7 +8,7 @@ import ( "github.com/gin-gonic/gin/binding" "github.com/PingCAP-QE/ee-apps/tibuild/commons/database" - "github.com/PingCAP-QE/ee-apps/tibuild/internalpkg/entity" + "github.com/PingCAP-QE/ee-apps/tibuild/internal/entity" ) type RequestResultRequestStruct struct { diff --git a/tibuild/internalpkg/controller/request_rotation.go b/tibuild/internal/controller/request_rotation.go similarity index 95% rename from tibuild/internalpkg/controller/request_rotation.go rename to tibuild/internal/controller/request_rotation.go index 08ecf68..bf905db 100644 --- a/tibuild/internalpkg/controller/request_rotation.go +++ b/tibuild/internal/controller/request_rotation.go @@ -8,7 +8,7 @@ import ( "github.com/gin-gonic/gin/binding" "github.com/PingCAP-QE/ee-apps/tibuild/commons/database" - "github.com/PingCAP-QE/ee-apps/tibuild/internalpkg/entity" + "github.com/PingCAP-QE/ee-apps/tibuild/internal/entity" ) type RequestRotationRequestStruct struct { diff --git a/tibuild/internalpkg/controller/test.go b/tibuild/internal/controller/test.go similarity index 100% rename from tibuild/internalpkg/controller/test.go rename to tibuild/internal/controller/test.go diff --git a/tibuild/internalpkg/dto/testDTO.go b/tibuild/internal/dto/testDTO.go similarity index 100% rename from tibuild/internalpkg/dto/testDTO.go rename to tibuild/internal/dto/testDTO.go diff --git a/tibuild/internalpkg/entity/entities.go b/tibuild/internal/entity/entities.go similarity index 100% rename from tibuild/internalpkg/entity/entities.go rename to tibuild/internal/entity/entities.go diff --git a/tibuild/internalpkg/service/jenkins_init.go b/tibuild/internal/service/jenkins_init.go similarity index 100% rename from tibuild/internalpkg/service/jenkins_init.go rename to tibuild/internal/service/jenkins_init.go diff --git a/tibuild/internalpkg/service/job_build.go b/tibuild/internal/service/job_build.go similarity index 98% rename from tibuild/internalpkg/service/job_build.go rename to tibuild/internal/service/job_build.go index b6075db..a24032f 100644 --- a/tibuild/internalpkg/service/job_build.go +++ b/tibuild/internal/service/job_build.go @@ -10,7 +10,7 @@ import ( "github.com/PingCAP-QE/ee-apps/tibuild/commons/database" "github.com/PingCAP-QE/ee-apps/tibuild/gojenkins" - "github.com/PingCAP-QE/ee-apps/tibuild/internalpkg/entity" + "github.com/PingCAP-QE/ee-apps/tibuild/internal/entity" ) func Job_Build(jenkins *gojenkins.Jenkins, ctx context.Context, jobname string, params map[string]string, pipeline_build_id int64) { diff --git a/tibuild/internalpkg/service/job_status.go b/tibuild/internal/service/job_status.go similarity index 100% rename from tibuild/internalpkg/service/job_status.go rename to tibuild/internal/service/job_status.go