This is an automated email from the ASF dual-hosted git repository.

abeizn pushed a commit to branch release-v0.19
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git


The following commit(s) were added to refs/heads/release-v0.19 by this push:
     new fb54d950e cherry-pick fix(bamboo): fix status and result fields, add 
NOT_STARTED and BLOCKED status to v0.19  (#6174)
fb54d950e is described below

commit fb54d950eeb6d42e3f9d9f504333001bdf7095dc
Author: Lynwee <[email protected]>
AuthorDate: Thu Sep 28 16:42:28 2023 +0800

    cherry-pick fix(bamboo): fix status and result fields, add NOT_STARTED and 
BLOCKED status to v0.19  (#6174)
    
    * fix(bamboo): fix status and result fields, add NOT_STARTED and BLOCKED 
status
    
    * fix(bamboo): add PENDING and QUEUED status
    
    * fix(bamboo): fix CI error, SA6005
    
    * refactor(domain): dispart caseInsensitive option from ResultRule
    
    * refactor(domain): remove caseInsensitive option
    
    * fix(bamboo): fix e2e test
---
 .../models/domainlayer/devops/cicd_pipeline.go     | 30 ++++++++++++++++------
 .../snapshot_tables/cicd_deployment_commits.csv    |  8 +++---
 .../plugins/bamboo/tasks/deploy_build_convertor.go | 11 ++++----
 .../plugins/bamboo/tasks/job_build_convertor.go    |  7 ++---
 .../plugins/bamboo/tasks/plan_build_convertor.go   |  7 ++---
 backend/plugins/github/tasks/cicd_job_convertor.go |  6 ++---
 backend/plugins/github/tasks/cicd_run_convertor.go |  6 ++---
 .../plugins/jenkins/tasks/build_cicd_convertor.go  |  2 +-
 8 files changed, 47 insertions(+), 30 deletions(-)

diff --git a/backend/core/models/domainlayer/devops/cicd_pipeline.go 
b/backend/core/models/domainlayer/devops/cicd_pipeline.go
index 40612f2e8..aab64f985 100644
--- a/backend/core/models/domainlayer/devops/cicd_pipeline.go
+++ b/backend/core/models/domainlayer/devops/cicd_pipeline.go
@@ -18,6 +18,8 @@ limitations under the License.
 package devops
 
 import (
+       "github.com/spf13/cast"
+       "strings"
        "time"
 
        "github.com/apache/incubator-devlake/core/models/domainlayer"
@@ -51,7 +53,9 @@ const (
 
 // this is for the field `status` in table.cicd_pipelines and table.cicd_tasks
 const (
+       STATUS_NOT_STARTED = "NOT_STARTED"
        STATUS_IN_PROGRESS = "IN_PROGRESS"
+       STATUS_BLOCKED     = "BLOCKED"
        STATUS_DONE        = "DONE"
 )
 
@@ -65,42 +69,47 @@ type ResultRule struct {
 }
 type StatusRule[T comparable] struct {
        InProgress []T
+       NotStarted []T
        Done       []T
        Manual     []T
        Default    string
 }
 
-// GetResult compare the input with rule for return the enmu value of result
+func caseInSensitiveEqual(src string, dst string) bool {
+       return strings.EqualFold(src, dst)
+}
+
+// GetResult compare the input with rule for return the enum value of result
 func GetResult(rule *ResultRule, input interface{}) string {
        for _, suc := range rule.Success {
-               if suc == input {
+               if caseInSensitiveEqual(suc, cast.ToString(input)) {
                        return RESULT_SUCCESS
                }
        }
        for _, fail := range rule.Failed {
-               if fail == input {
+               if caseInSensitiveEqual(fail, cast.ToString(input)) {
                        return RESULT_FAILURE
                }
        }
        for _, abort := range rule.Abort {
-               if abort == input {
+               if caseInSensitiveEqual(abort, cast.ToString(input)) {
                        return RESULT_ABORT
                }
        }
        for _, manual := range rule.Manual {
-               if manual == input {
+               if caseInSensitiveEqual(manual, cast.ToString(input)) {
                        return RESULT_MANUAL
                }
        }
        for _, skipped := range rule.Skipped {
-               if skipped == input {
+               if caseInSensitiveEqual(skipped, cast.ToString(input)) {
                        return RESULT_SKIPPED
                }
        }
        return rule.Default
 }
 
-// GetStatus compare the input with rule for return the enmu value of status
+// GetStatus compare the input with rule for return the enum value of status
 func GetStatus[T comparable](rule *StatusRule[T], input T) string {
        for _, inp := range rule.InProgress {
                if inp == input {
@@ -114,7 +123,12 @@ func GetStatus[T comparable](rule *StatusRule[T], input T) 
string {
        }
        for _, manual := range rule.Manual {
                if manual == input {
-                       return RESULT_MANUAL
+                       return STATUS_BLOCKED
+               }
+       }
+       for _, notStarted := range rule.NotStarted {
+               if notStarted == input {
+                       return STATUS_NOT_STARTED
                }
        }
        return rule.Default
diff --git 
a/backend/plugins/bamboo/e2e/snapshot_tables/cicd_deployment_commits.csv 
b/backend/plugins/bamboo/e2e/snapshot_tables/cicd_deployment_commits.csv
index 20182662e..3ab42c8d2 100644
--- a/backend/plugins/bamboo/e2e/snapshot_tables/cicd_deployment_commits.csv
+++ b/backend/plugins/bamboo/e2e/snapshot_tables/cicd_deployment_commits.csv
@@ -2,7 +2,7 @@ 
id,commit_sha,cicd_scope_id,cicd_deployment_id,name,result,status,environment,cr
 
bamboo:BambooDeployBuild:1:1540097,79b062bd53af15c701193c90b543386557cb7a3a,bamboo:BambooPlan:1:TEST-PLA2,bamboo:BambooDeployBuild:1:1540097,release-1,FAILURE,DONE,dev,2023-07-31T10:16:41.000+00:00,2023-07-31T10:16:41.000+00:00,2023-07-31T10:16:41.000+00:00,0,,622595,fake://127.0.0.1:8080/repos/622595,
 
bamboo:BambooDeployBuild:1:1540100,79b062bd53af15c701193c90b543386557cb7a3a,bamboo:BambooPlan:1:TEST-PLA2,bamboo:BambooDeployBuild:1:1540100,release-1,FAILURE,DONE,dev,2023-07-31T11:50:10.000+00:00,2023-07-31T11:50:10.000+00:00,2023-07-31T11:50:10.000+00:00,0,,622595,fake://127.0.0.1:8080/repos/622595,
 
bamboo:BambooDeployBuild:1:1540101,79b062bd53af15c701193c90b543386557cb7a3a,bamboo:BambooPlan:1:TEST-PLA2,bamboo:BambooDeployBuild:1:1540101,release-2,FAILURE,DONE,dev,2023-07-31T11:51:14.000+00:00,2023-07-31T11:51:14.000+00:00,2023-07-31T11:51:14.000+00:00,0,,622595,fake://127.0.0.1:8080/repos/622595,
-bamboo:BambooDeployBuild:1:1540102,79b062bd53af15c701193c90b543386557cb7a3a,bamboo:BambooPlan:1:TEST-PLA2,bamboo:BambooDeployBuild:1:1540102,release-2,,DONE,dev,2023-07-31T11:52:32.000+00:00,2023-07-31T11:52:32.000+00:00,2023-07-31T11:52:32.000+00:00,0,,622595,fake://127.0.0.1:8080/repos/622595,
-bamboo:BambooDeployBuild:1:1540105,79b062bd53af15c701193c90b543386557cb7a3a,bamboo:BambooPlan:1:TEST-PLA2,bamboo:BambooDeployBuild:1:1540105,release-2,,DONE,dev,2023-08-01T09:31:53.000+00:00,2023-08-01T09:31:53.000+00:00,2023-08-01T09:31:53.000+00:00,0,,622595,fake://127.0.0.1:8080/repos/622595,
-bamboo:BambooDeployBuild:1:1540106,79b062bd53af15c701193c90b543386557cb7a3a,bamboo:BambooPlan:1:TEST-PLA2,bamboo:BambooDeployBuild:1:1540106,release-2,,DONE,dev,2023-08-01T09:32:00.000+00:00,2023-08-01T09:32:00.000+00:00,2023-08-01T09:32:00.000+00:00,0,,622595,fake://127.0.0.1:8080/repos/622595,
-bamboo:BambooDeployBuild:1:1540117,79b062bd53af15c701193c90b543386557cb7a3a,bamboo:BambooPlan:1:TEST-PLA2,bamboo:BambooDeployBuild:1:1540117,release-3,,DONE,dev,2023-08-03T09:49:07.000+00:00,2023-08-03T09:49:07.000+00:00,2023-08-03T09:49:07.000+00:00,0,,622595,fake://127.0.0.1:8080/repos/622595,
+bamboo:BambooDeployBuild:1:1540102,79b062bd53af15c701193c90b543386557cb7a3a,bamboo:BambooPlan:1:TEST-PLA2,bamboo:BambooDeployBuild:1:1540102,release-2,SUCCESS,DONE,dev,2023-07-31T11:52:32.000+00:00,2023-07-31T11:52:32.000+00:00,2023-07-31T11:52:32.000+00:00,0,,622595,fake://127.0.0.1:8080/repos/622595,
+bamboo:BambooDeployBuild:1:1540105,79b062bd53af15c701193c90b543386557cb7a3a,bamboo:BambooPlan:1:TEST-PLA2,bamboo:BambooDeployBuild:1:1540105,release-2,SUCCESS,DONE,dev,2023-08-01T09:31:53.000+00:00,2023-08-01T09:31:53.000+00:00,2023-08-01T09:31:53.000+00:00,0,,622595,fake://127.0.0.1:8080/repos/622595,
+bamboo:BambooDeployBuild:1:1540106,79b062bd53af15c701193c90b543386557cb7a3a,bamboo:BambooPlan:1:TEST-PLA2,bamboo:BambooDeployBuild:1:1540106,release-2,SUCCESS,DONE,dev,2023-08-01T09:32:00.000+00:00,2023-08-01T09:32:00.000+00:00,2023-08-01T09:32:00.000+00:00,0,,622595,fake://127.0.0.1:8080/repos/622595,
+bamboo:BambooDeployBuild:1:1540117,79b062bd53af15c701193c90b543386557cb7a3a,bamboo:BambooPlan:1:TEST-PLA2,bamboo:BambooDeployBuild:1:1540117,release-3,SUCCESS,DONE,dev,2023-08-03T09:49:07.000+00:00,2023-08-03T09:49:07.000+00:00,2023-08-03T09:49:07.000+00:00,0,,622595,fake://127.0.0.1:8080/repos/622595,
diff --git a/backend/plugins/bamboo/tasks/deploy_build_convertor.go 
b/backend/plugins/bamboo/tasks/deploy_build_convertor.go
index 613da69eb..8e06df183 100644
--- a/backend/plugins/bamboo/tasks/deploy_build_convertor.go
+++ b/backend/plugins/bamboo/tasks/deploy_build_convertor.go
@@ -92,13 +92,14 @@ func ConvertDeployBuilds(taskCtx plugin.SubTaskContext) 
errors.Error {
                                CicdDeploymentId: 
deployBuildIdGen.Generate(data.Options.ConnectionId, input.DeployBuildId),
                                Name:             
input.GenerateCICDDeploymentCommitName(),
                                Result: devops.GetResult(&devops.ResultRule{
-                                       Failed:  []string{"Failed", "FAILED"},
-                                       Success: []string{"Successful", 
"SUCCESSFUL"},
-                                       Default: "",
+                                       Failed:  []string{"Failed"},
+                                       Success: []string{"Successful"},
+                                       Default: input.DeploymentState,
                                }, input.DeploymentState),
                                Status: 
devops.GetStatus(&devops.StatusRule[string]{
-                                       Done:    []string{"Finished", 
"FINISHED"},
-                                       Default: devops.STATUS_IN_PROGRESS,
+                                       Done:       []string{"Finished", 
"FINISHED"},
+                                       NotStarted: []string{"not_built", 
"NOT_BUILT", "Not_Built", "PENDING", "QUEUED"},
+                                       Default:    devops.STATUS_IN_PROGRESS,
                                }, input.LifeCycleState),
                                Environment:  input.Environment,
                                StartedDate:  input.StartedDate,
diff --git a/backend/plugins/bamboo/tasks/job_build_convertor.go 
b/backend/plugins/bamboo/tasks/job_build_convertor.go
index 68deee49b..0d9d5c7f0 100644
--- a/backend/plugins/bamboo/tasks/job_build_convertor.go
+++ b/backend/plugins/bamboo/tasks/job_build_convertor.go
@@ -74,12 +74,13 @@ func ConvertJobBuilds(taskCtx plugin.SubTaskContext) 
errors.Error {
                                Result: devops.GetResult(&devops.ResultRule{
                                        Failed:  []string{"Failed"},
                                        Success: []string{"Successful"},
-                                       Default: "",
+                                       Default: line.BuildState,
                                }, line.BuildState),
 
                                Status: 
devops.GetStatus(&devops.StatusRule[string]{
-                                       Done:    []string{"Finished"},
-                                       Default: devops.STATUS_IN_PROGRESS,
+                                       Done:       []string{"Finished", 
"FINISHED"},
+                                       NotStarted: []string{"not_built", 
"NOT_BUILT", "Not_Built", "PENDING", "QUEUED"},
+                                       Default:    devops.STATUS_IN_PROGRESS,
                                }, line.LifeCycleState),
                        }
 
diff --git a/backend/plugins/bamboo/tasks/plan_build_convertor.go 
b/backend/plugins/bamboo/tasks/plan_build_convertor.go
index efe5a9e0b..3f25dce68 100644
--- a/backend/plugins/bamboo/tasks/plan_build_convertor.go
+++ b/backend/plugins/bamboo/tasks/plan_build_convertor.go
@@ -72,12 +72,13 @@ func ConvertPlanBuilds(taskCtx plugin.SubTaskContext) 
errors.Error {
                                Result: devops.GetResult(&devops.ResultRule{
                                        Failed:  []string{"Failed"},
                                        Success: []string{"Successful"},
-                                       Default: "",
+                                       Default: line.BuildState,
                                }, line.BuildState),
 
                                Status: 
devops.GetStatus(&devops.StatusRule[string]{
-                                       Done:    []string{"Finished"},
-                                       Default: devops.STATUS_IN_PROGRESS,
+                                       Done:       []string{"Finished", 
"FINISHED"},
+                                       NotStarted: []string{"not_built", 
"NOT_BUILT", "Not_Built", "PENDING", "QUEUED"},
+                                       Default:    devops.STATUS_IN_PROGRESS,
                                }, line.LifeCycleState),
                        }
 
diff --git a/backend/plugins/github/tasks/cicd_job_convertor.go 
b/backend/plugins/github/tasks/cicd_job_convertor.go
index 7a9d845f4..6b93d51c9 100644
--- a/backend/plugins/github/tasks/cicd_job_convertor.go
+++ b/backend/plugins/github/tasks/cicd_job_convertor.go
@@ -97,9 +97,9 @@ func ConvertJobs(taskCtx plugin.SubTaskContext) (err 
errors.Error) {
                                Type:         line.Type,
                                Environment:  line.Environment,
                                Result: devops.GetResult(&devops.ResultRule{
-                                       Failed:  []string{"failure", "FAILURE"},
-                                       Success: []string{"success", "SUCCESS"},
-                                       Skipped: []string{"skipped", "SKIPPED"},
+                                       Failed:  []string{"failure"},
+                                       Success: []string{"success"},
+                                       Skipped: []string{"skipped"},
                                }, line.Conclusion),
                                Status: 
devops.GetStatus(&devops.StatusRule[string]{
                                        Done:    []string{"completed", 
"COMPLETED"},
diff --git a/backend/plugins/github/tasks/cicd_run_convertor.go 
b/backend/plugins/github/tasks/cicd_run_convertor.go
index 98c59ce2c..c24016db2 100644
--- a/backend/plugins/github/tasks/cicd_run_convertor.go
+++ b/backend/plugins/github/tasks/cicd_run_convertor.go
@@ -98,9 +98,9 @@ func ConvertRuns(taskCtx plugin.SubTaskContext) errors.Error {
                                Type:         line.Type,
                                Environment:  line.Environment,
                                Result: devops.GetResult(&devops.ResultRule{
-                                       Failed:  []string{"failure", "FAILURE"},
-                                       Success: []string{"success", "SUCCESS"},
-                                       Skipped: []string{"skipped", "SKIPPED"},
+                                       Failed:  []string{"failure"},
+                                       Success: []string{"success"},
+                                       Skipped: []string{"skipped"},
                                }, line.Conclusion),
                                Status: 
devops.GetStatus(&devops.StatusRule[string]{
                                        Done:    []string{"completed", 
"COMPLETED"},
diff --git a/backend/plugins/jenkins/tasks/build_cicd_convertor.go 
b/backend/plugins/jenkins/tasks/build_cicd_convertor.go
index e3c4a13c1..15d376d19 100644
--- a/backend/plugins/jenkins/tasks/build_cicd_convertor.go
+++ b/backend/plugins/jenkins/tasks/build_cicd_convertor.go
@@ -45,7 +45,7 @@ func ConvertBuildsToCicdTasks(taskCtx plugin.SubTaskContext) 
(err errors.Error)
        clauses := []dal.Clause{
                dal.From("_tool_jenkins_builds"),
                dal.Where(`_tool_jenkins_builds.connection_id = ?
-                                               and 
_tool_jenkins_builds.job_path = ? 
+                                               and 
_tool_jenkins_builds.job_path = ?
                                                and 
_tool_jenkins_builds.job_name = ?`,
                        data.Options.ConnectionId, data.Options.JobPath, 
data.Options.JobName),
        }

Reply via email to