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),
}