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

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


The following commit(s) were added to refs/heads/release-v0.21 by this push:
     new 03e4326ec fix: add flag for data convert to dora (#7143)
03e4326ec is described below

commit 03e4326ec8c37acf8563f68b0aa93deb8f2ce028
Author: abeizn <[email protected]>
AuthorDate: Fri Mar 8 15:35:09 2024 +0800

    fix: add flag for data convert to dora (#7143)
    
    * fix: add flag for data convert to dora
    
    * fix: some minor optimizations
    
    * fix: add subtask_name filter
---
 .../models/domainlayer/devops/cicd_deployment.go   |  1 +
 .../domainlayer/devops/cicd_deployment_commit.go   |  1 +
 .../20240308_add_subtaskname_to_deployment.go      | 63 ++++++++++++++++++++++
 backend/core/models/migrationscripts/register.go   |  1 +
 .../dora/tasks/change_lead_time_calculator.go      | 10 ++--
 .../dora/tasks/deployment_commits_generator.go     | 45 ++++++++--------
 backend/plugins/dora/tasks/deployment_generator.go | 45 ++++++++--------
 .../dora/tasks/incident_deploy_connector.go        | 10 ++--
 8 files changed, 124 insertions(+), 52 deletions(-)

diff --git a/backend/core/models/domainlayer/devops/cicd_deployment.go 
b/backend/core/models/domainlayer/devops/cicd_deployment.go
index c395e32c5..b66e84f85 100644
--- a/backend/core/models/domainlayer/devops/cicd_deployment.go
+++ b/backend/core/models/domainlayer/devops/cicd_deployment.go
@@ -33,6 +33,7 @@ type CICDDeployment struct {
        TaskDatesInfo
        DurationSec       *float64
        QueuedDurationSec *float64
+       SubtaskName       string `gorm:"type:varchar(255)"`
 }
 
 func (CICDDeployment) TableName() string {
diff --git a/backend/core/models/domainlayer/devops/cicd_deployment_commit.go 
b/backend/core/models/domainlayer/devops/cicd_deployment_commit.go
index 4170268a9..2afbb8669 100644
--- a/backend/core/models/domainlayer/devops/cicd_deployment_commit.go
+++ b/backend/core/models/domainlayer/devops/cicd_deployment_commit.go
@@ -40,6 +40,7 @@ type CicdDeploymentCommit struct {
        RepoId                        string `gorm:"type:varchar(255)"`
        RepoUrl                       string `gorm:"index;not null"`
        PrevSuccessDeploymentCommitId string `gorm:"type:varchar(255)"`
+       SubtaskName                   string `gorm:"type:varchar(255)"`
 }
 
 func (cicdDeploymentCommit CicdDeploymentCommit) TableName() string {
diff --git 
a/backend/core/models/migrationscripts/20240308_add_subtaskname_to_deployment.go
 
b/backend/core/models/migrationscripts/20240308_add_subtaskname_to_deployment.go
new file mode 100644
index 000000000..7bac0c34c
--- /dev/null
+++ 
b/backend/core/models/migrationscripts/20240308_add_subtaskname_to_deployment.go
@@ -0,0 +1,63 @@
+/*
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package migrationscripts
+
+import (
+       "github.com/apache/incubator-devlake/core/context"
+       "github.com/apache/incubator-devlake/core/errors"
+       "github.com/apache/incubator-devlake/core/plugin"
+)
+
+var _ plugin.MigrationScript = (*addSubtabknameToDeployment)(nil)
+
+type cicdDeployment20240308 struct {
+       SubtaskName string `gorm:"type:varchar(255)"`
+}
+
+func (cicdDeployment20240308) TableName() string {
+       return "cicd_deployments"
+}
+
+type cicdDeploymentCommits20240308 struct {
+       SubtaskName string `gorm:"type:varchar(255)"`
+}
+
+func (cicdDeploymentCommits20240308) TableName() string {
+       return "cicd_deployment_commits"
+}
+
+type addSubtabknameToDeployment struct{}
+
+func (*addSubtabknameToDeployment) Up(basicRes context.BasicRes) errors.Error {
+       db := basicRes.GetDal()
+       if err := db.AutoMigrate(&cicdDeployment20240308{}); err != nil {
+               return err
+       }
+       if err := db.AutoMigrate(&cicdDeploymentCommits20240308{}); err != nil {
+               return err
+       }
+       return nil
+}
+
+func (*addSubtabknameToDeployment) Version() uint64 {
+       return 20240308142101
+}
+
+func (*addSubtabknameToDeployment) Name() string {
+       return "add subtaskname to deployment"
+}
diff --git a/backend/core/models/migrationscripts/register.go 
b/backend/core/models/migrationscripts/register.go
index 667f864b0..7732c012c 100644
--- a/backend/core/models/migrationscripts/register.go
+++ b/backend/core/models/migrationscripts/register.go
@@ -106,5 +106,6 @@ func All() []plugin.MigrationScript {
                new(modfiyFieldsSort),
                new(modifyIssueLeadTimeMinutesToUint),
                new(addUrgencyToIssues),
+               new(addSubtabknameToDeployment),
        }
 }
diff --git a/backend/plugins/dora/tasks/change_lead_time_calculator.go 
b/backend/plugins/dora/tasks/change_lead_time_calculator.go
index c76b3d54b..8e29f1678 100644
--- a/backend/plugins/dora/tasks/change_lead_time_calculator.go
+++ b/backend/plugins/dora/tasks/change_lead_time_calculator.go
@@ -46,11 +46,11 @@ func CalculateChangeLeadTime(taskCtx plugin.SubTaskContext) 
errors.Error {
        db := taskCtx.GetDal()
        logger := taskCtx.GetLogger()
        data := taskCtx.GetData().(*DoraTaskData)
-       // // Clear previous results from the project
-       // err := db.Exec("DELETE FROM project_pr_metrics WHERE project_name = 
? ", data.Options.ProjectName)
-       // if err != nil {
-       //      return errors.Default.Wrap(err, "error deleting previous 
project_pr_metrics")
-       // }
+       // Clear previous results from the project
+       err := db.Exec("DELETE FROM project_pr_metrics WHERE project_name = ? 
", data.Options.ProjectName)
+       if err != nil {
+               return errors.Default.Wrap(err, "error deleting previous 
project_pr_metrics")
+       }
 
        // Get pull requests by repo project_name
        var clauses = []dal.Clause{
diff --git a/backend/plugins/dora/tasks/deployment_commits_generator.go 
b/backend/plugins/dora/tasks/deployment_commits_generator.go
index e8a64e239..e29846997 100644
--- a/backend/plugins/dora/tasks/deployment_commits_generator.go
+++ b/backend/plugins/dora/tasks/deployment_commits_generator.go
@@ -30,6 +30,8 @@ import (
        "github.com/apache/incubator-devlake/helpers/pluginhelper/api"
 )
 
+const DORAGenerateDeploymentCommits = "dora.generateDeploymentCommits"
+
 var DeploymentCommitsGeneratorMeta = plugin.SubTaskMeta{
        Name:             "generateDeploymentCommits",
        EntryPoint:       GenerateDeploymentCommits,
@@ -103,32 +105,32 @@ func GenerateDeploymentCommits(taskCtx 
plugin.SubTaskContext) errors.Error {
        }
        if data.Options.ScopeId != nil {
                clauses = append(clauses, dal.Where(`p.cicd_scope_id = ?`, 
data.Options.ScopeId))
-               // // Clear previous results from the project
-               // deleteSql := `DELETE FROM cicd_deployment_commits WHERE 
cicd_scope_id = ? ;`
-               // err := db.Exec(deleteSql, data.Options.ScopeId)
-               // if err != nil {
-               //      return errors.Default.Wrap(err, "error deleting 
previous cicd_deployment_commits")
-               // }
+               // Clear previous results from the project
+               deleteSql := `DELETE FROM cicd_deployment_commits WHERE 
cicd_scope_id = ? and subtask_name = ?;`
+               err := db.Exec(deleteSql, data.Options.ScopeId, 
DORAGenerateDeploymentCommits)
+               if err != nil {
+                       return errors.Default.Wrap(err, "error deleting 
previous cicd_deployment_commits")
+               }
        } else {
                clauses = append(clauses,
                        dal.Join("LEFT JOIN project_mapping pm ON (pm.table = 
'cicd_scopes' AND pm.row_id = p.cicd_scope_id)"),
                        dal.Where(`pm.project_name = ?`, 
data.Options.ProjectName),
                )
-               // // Clear previous results from the project
-               // deleteSql := `DELETE FROM cicd_deployment_commits
-               //      WHERE cicd_scope_id IN (
-               //      SELECT cicd_scope_id
-               //      FROM (
-               //              SELECT cdc.cicd_scope_id
-               //              FROM cicd_deployment_commits cdc
-               //              LEFT JOIN project_mapping pm ON (pm.table = 
'cicd_scopes' AND pm.row_id = cdc.cicd_scope_id)
-               //              WHERE pm.project_name = ?
-               //      ) AS subquery
-               //      );`
-               // err := db.Exec(deleteSql, data.Options.ProjectName)
-               // if err != nil {
-               //      return errors.Default.Wrap(err, "error deleting 
previous cicd_deployment_commits")
-               // }
+               // Clear previous results from the project
+               deleteSql := `DELETE FROM cicd_deployment_commits
+                       WHERE cicd_scope_id IN (
+                       SELECT cicd_scope_id
+                       FROM (
+                               SELECT cdc.cicd_scope_id
+                               FROM cicd_deployment_commits cdc
+                               LEFT JOIN project_mapping pm ON (pm.table = 
'cicd_scopes' AND pm.row_id = cdc.cicd_scope_id)
+                               WHERE pm.project_name = ?
+                       ) AS subquery
+                       ) AND subtask_name = ?;`
+               err := db.Exec(deleteSql, data.Options.ProjectName, 
DORAGenerateDeploymentCommits)
+               if err != nil {
+                       return errors.Default.Wrap(err, "error deleting 
previous cicd_deployment_commits")
+               }
        }
        cursor, err := db.Cursor(clauses...)
        if err != nil {
@@ -198,6 +200,7 @@ func GenerateDeploymentCommits(taskCtx 
plugin.SubTaskContext) errors.Error {
                                        domainDeployCommit.Environment = 
devops.TESTING
                                }
                        }
+                       domainDeployCommit.SubtaskName = 
DORAGenerateDeploymentCommits
                        return []interface{}{domainDeployCommit}, nil
                },
        })
diff --git a/backend/plugins/dora/tasks/deployment_generator.go 
b/backend/plugins/dora/tasks/deployment_generator.go
index cca452d6b..08102fb42 100644
--- a/backend/plugins/dora/tasks/deployment_generator.go
+++ b/backend/plugins/dora/tasks/deployment_generator.go
@@ -28,6 +28,8 @@ import (
        "github.com/apache/incubator-devlake/helpers/pluginhelper/api"
 )
 
+const DORAGenerateDeployment = "dora.generateDeployments"
+
 var DeploymentGeneratorMeta = plugin.SubTaskMeta{
        Name:             "generateDeployments",
        EntryPoint:       GenerateDeployment,
@@ -78,32 +80,32 @@ func GenerateDeployment(taskCtx plugin.SubTaskContext) 
errors.Error {
                clauses = append(clauses,
                        dal.Where("p.cicd_scope_id = ?", data.Options.ScopeId),
                )
-               // // Clear previous results from the cicd_scope_id
-               // deleteSql := `DELETE FROM cicd_deployments WHERE 
cicd_scope_id = ?;`
-               // err := db.Exec(deleteSql, data.Options.ScopeId)
-               // if err != nil {
-               //      return errors.Default.Wrap(err, "error deleting 
previous deployments")
-               // }
+               // Clear previous results from the cicd_scope_id
+               deleteSql := `DELETE FROM cicd_deployments WHERE cicd_scope_id 
= ? and subtask_name = ?;`
+               err := db.Exec(deleteSql, data.Options.ScopeId, 
DORAGenerateDeployment)
+               if err != nil {
+                       return errors.Default.Wrap(err, "error deleting 
previous deployments")
+               }
        } else {
                clauses = append(clauses,
                        dal.Join("LEFT JOIN project_mapping pm ON (pm.table = 
'cicd_scopes' AND pm.row_id = p.cicd_scope_id)"),
                        dal.Where("pm.project_name = ?", 
data.Options.ProjectName),
                )
-               // // Clear previous results from the project
-               // deleteSql := `DELETE FROM cicd_deployments
-               //              WHERE cicd_scope_id IN (
-               //              SELECT cicd_scope_id
-               //              FROM (
-               //                      SELECT cd.cicd_scope_id
-               //                      FROM cicd_deployments cd
-               //                      LEFT JOIN project_mapping pm ON 
(pm.table = 'cicd_scopes' AND pm.row_id = cd.cicd_scope_id)
-               //                      WHERE pm.project_name = ?
-               //              ) AS subquery
-               //              );`
-               // err := db.Exec(deleteSql, data.Options.ProjectName)
-               // if err != nil {
-               //      return errors.Default.Wrap(err, "error deleting 
previous deployments")
-               // }
+               // Clear previous results from the project
+               deleteSql := `DELETE FROM cicd_deployments
+                               WHERE cicd_scope_id IN (
+                               SELECT cicd_scope_id
+                               FROM (
+                                       SELECT cd.cicd_scope_id
+                                       FROM cicd_deployments cd
+                                       LEFT JOIN project_mapping pm ON 
(pm.table = 'cicd_scopes' AND pm.row_id = cd.cicd_scope_id)
+                                       WHERE pm.project_name = ?
+                               ) AS subquery
+                               ) AND subtask_name = ?;`
+               err := db.Exec(deleteSql, data.Options.ProjectName, 
DORAGenerateDeployment)
+               if err != nil {
+                       return errors.Default.Wrap(err, "error deleting 
previous deployments")
+               }
        }
 
        cursor, err := db.Cursor(clauses...)
@@ -153,6 +155,7 @@ func GenerateDeployment(taskCtx plugin.SubTaskContext) 
errors.Error {
                                        domainDeployment.Environment = 
devops.TESTING
                                }
                        }
+                       domainDeployment.SubtaskName = DORAGenerateDeployment
                        return []interface{}{domainDeployment}, nil
                },
        })
diff --git a/backend/plugins/dora/tasks/incident_deploy_connector.go 
b/backend/plugins/dora/tasks/incident_deploy_connector.go
index 2ec9f04cb..6d9a1365d 100644
--- a/backend/plugins/dora/tasks/incident_deploy_connector.go
+++ b/backend/plugins/dora/tasks/incident_deploy_connector.go
@@ -47,11 +47,11 @@ type simpleCicdDeploymentCommit struct {
 func ConnectIncidentToDeployment(taskCtx plugin.SubTaskContext) errors.Error {
        db := taskCtx.GetDal()
        data := taskCtx.GetData().(*DoraTaskData)
-       // // Clear previous results from the project
-       // err := db.Exec("DELETE FROM project_issue_metrics WHERE project_name 
= ?", data.Options.ProjectName)
-       // if err != nil {
-       //      return errors.Default.Wrap(err, "error deleting previous 
project_issue_metrics")
-       // }
+       // Clear previous results from the project
+       err := db.Exec("DELETE FROM project_issue_metrics WHERE project_name = 
?", data.Options.ProjectName)
+       if err != nil {
+               return errors.Default.Wrap(err, "error deleting previous 
project_issue_metrics")
+       }
        // select all issues belongs to the board
        clauses := []dal.Clause{
                dal.From(`issues i`),

Reply via email to