You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by kl...@apache.org on 2023/04/19 07:02:00 UTC

[incubator-devlake] branch main updated: Refactor Change Lead Time - Step 8: update DORA blueprint v200 code to adopt the new flow (#4958)

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

klesh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git


The following commit(s) were added to refs/heads/main by this push:
     new f8346df18 Refactor Change Lead Time - Step 8: update DORA blueprint v200 code to adopt the new flow (#4958)
f8346df18 is described below

commit f8346df183875ac4206d64e21accd7ade0f343e7
Author: Klesh Wong <zh...@merico.dev>
AuthorDate: Wed Apr 19 15:01:54 2023 +0800

    Refactor Change Lead Time - Step 8: update DORA blueprint v200 code to adopt the new flow (#4958)
    
    * fix: the first deployment_commits should not be ignored
    
    * refactor: update dora bp v200 to adopt new flow
---
 backend/plugins/dora/impl/impl.go                  | 43 +++++++++++++++-------
 .../dora/tasks/change_lead_time_calculator.go      |  2 +-
 .../dora/tasks/prev_deployment_commit_enricher.go  |  3 +-
 .../e2e/deployment_commit_diff/commits_diffs.csv   | 10 +++--
 .../finished_commits_diffs.csv                     |  1 +
 .../tasks/deployment_commit_diff_calculator.go     |  2 -
 6 files changed, 39 insertions(+), 22 deletions(-)

diff --git a/backend/plugins/dora/impl/impl.go b/backend/plugins/dora/impl/impl.go
index 0ffd1400d..afc762daa 100644
--- a/backend/plugins/dora/impl/impl.go
+++ b/backend/plugins/dora/impl/impl.go
@@ -112,30 +112,47 @@ func (p Dora) MigrationScripts() []plugin.MigrationScript {
 }
 
 func (p Dora) MakeMetricPluginPipelinePlanV200(projectName string, options json.RawMessage) (plugin.PipelinePlan, errors.Error) {
-	plan := plugin.PipelinePlan{}
 	op := &tasks.DoraOptions{}
 	err := json.Unmarshal(options, op)
 	if err != nil {
 		return nil, errors.Default.WrapRaw(err)
 	}
-	stageDeploymentCommitdiff := plugin.PipelineStage{
+	plan := plugin.PipelinePlan{
 		{
-			Plugin:   "refdiff",
-			Subtasks: []string{"calculateProjectDeploymentCommitsDiff"},
-			Options: map[string]interface{}{
-				"projectName": projectName,
+			{
+				Plugin: "dora",
+				Options: map[string]interface{}{
+					"projectName": projectName,
+				},
+				Subtasks: []string{
+					"generateDeploymentCommits",
+					"enrichPrevSuccessDeploymentCommits",
+				},
 			},
 		},
-	}
-	stageDora := plugin.PipelineStage{
 		{
-			Plugin: "dora",
-			Options: map[string]interface{}{
-				"projectName": projectName,
+			{
+				Plugin: "refdiff",
+				Options: map[string]interface{}{
+					"projectName": projectName,
+				},
+				Subtasks: []string{
+					"calculateDeploymentCommitsDiff",
+				},
+			},
+		},
+		{
+			{
+				Plugin: "dora",
+				Options: map[string]interface{}{
+					"projectName": projectName,
+				},
+				Subtasks: []string{
+					"calculateChangeLeadTime",
+					"ConnectIncidentToDeployment",
+				},
 			},
 		},
 	}
-	plan = append(plan, stageDeploymentCommitdiff, stageDora)
-
 	return plan, nil
 }
diff --git a/backend/plugins/dora/tasks/change_lead_time_calculator.go b/backend/plugins/dora/tasks/change_lead_time_calculator.go
index 446c9708b..a6325e4a1 100644
--- a/backend/plugins/dora/tasks/change_lead_time_calculator.go
+++ b/backend/plugins/dora/tasks/change_lead_time_calculator.go
@@ -206,7 +206,7 @@ func getDeploymentCommit(mergeSha string, projectName string, db dal.Dal) (*devo
 		dal.From("cicd_deployment_commits dc"),
 		dal.Join("LEFT JOIN cicd_deployment_commits p ON (dc.prev_success_deployment_commit_id = p.id)"),
 		dal.Join("LEFT JOIN project_mapping pm ON (pm.table = 'cicd_scopes' AND pm.row_id = dc.cicd_scope_id)"),
-		dal.Join("INNER JOIN commits_diffs cd ON (cd.new_commit_sha = dc.commit_sha AND cd.old_commit_sha = p.commit_sha)"),
+		dal.Join("INNER JOIN commits_diffs cd ON (cd.new_commit_sha = dc.commit_sha AND cd.old_commit_sha = COALESCE (p.commit_sha, ''))"),
 		dal.Where("dc.environment = 'PRODUCTION'"), // TODO: remove this when multi-environment is supported
 		dal.Where("pm.project_name = ? AND cd.commit_sha = ?", projectName, mergeSha),
 		dal.Orderby("dc.started_date, dc.id ASC"),
diff --git a/backend/plugins/dora/tasks/prev_deployment_commit_enricher.go b/backend/plugins/dora/tasks/prev_deployment_commit_enricher.go
index 8cb3741e4..c393a61f5 100644
--- a/backend/plugins/dora/tasks/prev_deployment_commit_enricher.go
+++ b/backend/plugins/dora/tasks/prev_deployment_commit_enricher.go
@@ -28,7 +28,7 @@ import (
 var EnrichPrevSuccessDeploymentCommitMeta = plugin.SubTaskMeta{
 	Name:             "enrichPrevSuccessDeploymentCommits",
 	EntryPoint:       EnrichPrevSuccessDeploymentCommit,
-	EnabledByDefault: true,
+	EnabledByDefault: false,
 	Description:      "filling the prev_success_deployment_commit_id for cicd_deployment_commits table",
 	DomainTypes:      []string{plugin.DOMAIN_TYPE_CODE},
 }
@@ -88,7 +88,6 @@ func EnrichPrevSuccessDeploymentCommit(taskCtx plugin.SubTaskContext) errors.Err
 
 			// now, simply connect the consecurtive deployment to its previous one
 			deploymentCommit.PrevSuccessDeploymentCommitId = prev_success_deployment_id
-			println("paire", deploymentCommit.Id, prev_cicd_scope_id)
 
 			// preserve variables for the next record
 			prev_cicd_scope_id = deploymentCommit.CicdScopeId
diff --git a/backend/plugins/refdiff/e2e/deployment_commit_diff/commits_diffs.csv b/backend/plugins/refdiff/e2e/deployment_commit_diff/commits_diffs.csv
index 3855f476d..2c4ef2fc0 100644
--- a/backend/plugins/refdiff/e2e/deployment_commit_diff/commits_diffs.csv
+++ b/backend/plugins/refdiff/e2e/deployment_commit_diff/commits_diffs.csv
@@ -1,4 +1,6 @@
-commit_sha,new_commit_sha,old_commit_sha,sorting_index
-commit_sha2,commit_sha2,commit_sha1,1
-commit_sha4,commit_sha4,commit_sha2,1
-commit_sha7,commit_sha4,commit_sha2,2
+new_commit_sha,old_commit_sha,commit_sha,sorting_index
+commit_sha1,,commit_sha1,1
+commit_sha1,,commit_sha6,2
+commit_sha2,commit_sha1,commit_sha2,1
+commit_sha4,commit_sha2,commit_sha4,1
+commit_sha4,commit_sha2,commit_sha7,2
diff --git a/backend/plugins/refdiff/e2e/deployment_commit_diff/finished_commits_diffs.csv b/backend/plugins/refdiff/e2e/deployment_commit_diff/finished_commits_diffs.csv
index 4385899aa..851f4753f 100644
--- a/backend/plugins/refdiff/e2e/deployment_commit_diff/finished_commits_diffs.csv
+++ b/backend/plugins/refdiff/e2e/deployment_commit_diff/finished_commits_diffs.csv
@@ -1,3 +1,4 @@
 new_commit_sha,old_commit_sha
+commit_sha1,
 commit_sha2,commit_sha1
 commit_sha4,commit_sha2
diff --git a/backend/plugins/refdiff/tasks/deployment_commit_diff_calculator.go b/backend/plugins/refdiff/tasks/deployment_commit_diff_calculator.go
index 4b34b6a7b..e92dee041 100644
--- a/backend/plugins/refdiff/tasks/deployment_commit_diff_calculator.go
+++ b/backend/plugins/refdiff/tasks/deployment_commit_diff_calculator.go
@@ -58,8 +58,6 @@ func CalculateDeploymentCommitsDiff(taskCtx plugin.SubTaskContext) errors.Error
 		dal.Where(
 			`
 			pm.project_name = ?
-			AND dc.prev_success_deployment_commit_id IS NOT NULL
-			AND dc.prev_success_deployment_commit_id <> ''
 			AND NOT EXISTS (
 				SELECT 1
 				FROM finished_commits_diffs fcd