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/10 14:59:12 UTC

[incubator-devlake] branch main updated: feat(jenkins): extract all commit info inside a build (#4857)

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 5d394d493 feat(jenkins): extract all commit info inside a build (#4857)
5d394d493 is described below

commit 5d394d493cbcd7abd2629428344f8fc478a344d9
Author: Warren Chen <yi...@merico.dev>
AuthorDate: Mon Apr 10 22:59:08 2023 +0800

    feat(jenkins): extract all commit info inside a build (#4857)
---
 backend/plugins/jenkins/e2e/jobs_test.go           |  2 +-
 .../e2e/raw_tables/_raw_jenkins_api_builds.csv     | 36 ++-----------
 .../_tool_jenkins_jobs.csv                         |  0
 .../_tool_jenkins_build_commits.csv                |  5 --
 .../e2e/snapshot_tables/_tool_jenkins_builds.csv   | 20 -------
 .../_tool_jenkins_builds_after_enrich.csv          | 38 ++++---------
 .../e2e/snapshot_tables/cicd_pipeline_commits.csv  |  5 --
 .../jenkins/e2e/snapshot_tables/cicd_pipelines.csv | 20 -------
 .../jenkins/e2e/snapshot_tables/cicd_tasks.csv     | 18 -------
 backend/plugins/jenkins/models/response.go         | 10 ++--
 backend/plugins/jenkins/tasks/build_extractor.go   | 62 +++++++++++-----------
 11 files changed, 51 insertions(+), 165 deletions(-)

diff --git a/backend/plugins/jenkins/e2e/jobs_test.go b/backend/plugins/jenkins/e2e/jobs_test.go
index 3a5abda9f..d2cb60d6c 100644
--- a/backend/plugins/jenkins/e2e/jobs_test.go
+++ b/backend/plugins/jenkins/e2e/jobs_test.go
@@ -44,7 +44,7 @@ func TestJenkinsJobsDataFlow(t *testing.T) {
 	}
 
 	dataflowTester.FlushTabler(&devops.CicdScope{})
-	dataflowTester.ImportCsvIntoTabler("./snapshot_tables/_tool_jenkins_jobs.csv", &models.JenkinsJob{})
+	dataflowTester.ImportCsvIntoTabler("./raw_tables/_tool_jenkins_jobs.csv", &models.JenkinsJob{})
 	dataflowTester.Subtask(tasks.ConvertJobsMeta, taskData)
 	dataflowTester.VerifyTableWithOptions(&devops.CicdScope{}, e2ehelper.TableOptions{
 		CSVRelPath:  "./snapshot_tables/cicd_scopes.csv",
diff --git a/backend/plugins/jenkins/e2e/raw_tables/_raw_jenkins_api_builds.csv b/backend/plugins/jenkins/e2e/raw_tables/_raw_jenkins_api_builds.csv
index 74276c3af..3ea3ce870 100644
--- a/backend/plugins/jenkins/e2e/raw_tables/_raw_jenkins_api_builds.csv
+++ b/backend/plugins/jenkins/e2e/raw_tables/_raw_jenkins_api_builds.csv
@@ -1,36 +1,8 @@
 "id","params","data","url","input","created_at"
-88,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{""_class"":""hudson.plugins.git.util.BuildData"",""lastBuiltRevision"":{""SHA1"":""0006e8105d70318aff5eeee38d405fa181a32aa0"",""branch"" [...]
-89,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{""_class"":""hudson.plugins.git.util.BuildData"",""lastBuiltRevision"":{""SHA1"":""0006e8105d70318aff5eeee38d405fa181a32aa0"",""branch"" [...]
-90,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{""_class"":""hudson.plugins.git.util.BuildData"",""lastBuiltRevision"":{""SHA1"":""20139afef3c6ec9f3ebffcb06e243b145cbef8c6"",""branch"" [...]
-91,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{""_class"":""hudson.plugins.git.util.BuildData"",""lastBuiltRevision"":{""SHA1"":""20139afef3c6ec9f3ebffcb06e243b145cbef8c6"",""branch"" [...]
-92,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{""_class"":""hudson.plugins.git.util.BuildData"",""lastBuiltRevision"":{""SHA1"":""20139afef3c6ec9f3ebffcb06e243b145cbef8c6"",""branch"" [...]
-93,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{""_class"":""hudson.plugins.git.util.BuildData"",""lastBuiltRevision"":{""SHA1"":""0f886c74949c3ee7e489188911c7dc0c1d547418"",""branch"" [...]
-94,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{""_class"":""hudson.plugins.git.util.BuildData"",""lastBuiltRevision"":{""SHA1"":""0f886c74949c3ee7e489188911c7dc0c1d547418"",""branch"" [...]
-95,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{""_class"":""hudson.plugins.git.util.BuildData"",""lastBuiltRevision"":{""SHA1"":""ceeffdfdd06bce232f9adb3a656265bad13a8473"",""branch"" [...]
-96,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""org.jenkinsci.plugins.workflow.job.WorkflowRun"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{""_class"":""org.jenkinsci.plugins.workflow.libs.LibrariesAction""},{},{},{""_class"":""org.jenkinsci.plugins.display [...]
-97,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""org.jenkinsci.plugins.workflow.job.WorkflowRun"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{""_class"":""org.jenkinsci.plugins.workflow.libs.LibrariesAction""},{},{},{""_class"":""org.jenkinsci.plugins.display [...]
-98,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""org.jenkinsci.plugins.workflow.job.WorkflowRun"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UpstreamCause"",""shortDescription"":""Started by upstream project \""devlake\"" build number 8"",""upstreamBuild"":8,""upstreamProject"":""devlake"",""upstreamUrl"":""job/devlake/""}]},{""_class"":""org.jenkinsci.plugins.w [...]
-99,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""org.jenkinsci.plugins.workflow.job.WorkflowRun"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UpstreamCause"",""shortDescription"":""Started by upstream project \""devlake\"" build number 7"",""upstreamBuild"":7,""upstreamProject"":""devlake"",""upstreamUrl"":""job/devlake/""}]},{""_class"":""org.jenkinsci.plugins.w [...]
-101,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{},{""_class"":""org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction""}],""duration"":11,""estimatedDuration"":8,""fullDisplayN [...]
-102,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{},{""_class"":""org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction""}],""duration"":4,""estimatedDuration"":8,""fullDisplayNa [...]
-103,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{},{""_class"":""org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction""}],""duration"":4,""estimatedDuration"":27,""fullDisplayN [...]
-104,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{},{""_class"":""org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction""}],""duration"":6,""estimatedDuration"":27,""fullDisplayN [...]
-105,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{},{""_class"":""org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction""}],""duration"":70,""estimatedDuration"":27,""fullDisplay [...]
-106,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""org.jenkinsci.plugins.workflow.job.WorkflowRun"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{""_class"":""org.jenkinsci.plugins.workflow.libs.LibrariesAction""},{},{},{""_class"":""org.jenkinsci.plugins.displa [...]
-107,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""org.jenkinsci.plugins.workflow.job.WorkflowRun"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{""_class"":""org.jenkinsci.plugins.workflow.libs.LibrariesAction""},{},{},{""_class"":""org.jenkinsci.plugins.displa [...]
-108,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""org.jenkinsci.plugins.workflow.job.WorkflowRun"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{""_class"":""org.jenkinsci.plugins.workflow.libs.LibrariesAction""},{},{},{""_class"":""org.jenkinsci.plugins.displa [...]
-109,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{},{""_class"":""org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction""}],""duration"":11,""estimatedDuration"":9,""fullDisplayN [...]
-110,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{},{""_class"":""org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction""}],""duration"":4,""estimatedDuration"":9,""fullDisplayNa [...]
-111,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{},{""_class"":""org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction""}],""duration"":11,""estimatedDuration"":9,""fullDisplayN [...]
-112,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{},{""_class"":""org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction""}],""duration"":4,""estimatedDuration"":9,""fullDisplayNa [...]
-113,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{},{""_class"":""org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction""}],""duration"":2,""estimatedDuration"":6,""fullDisplayNa [...]
-114,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{},{""_class"":""org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction""}],""duration"":4,""estimatedDuration"":6,""fullDisplayNa [...]
-115,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{},{""_class"":""org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction""}],""duration"":12,""estimatedDuration"":6,""fullDisplayN [...]
-116,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{},{""_class"":""org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction""}],""duration"":78,""estimatedDuration"":6,""fullDisplayN [...]
-117,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{},{""_class"":""org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction""}],""duration"":11,""estimatedDuration"":6,""fullDisplayN [...]
-118,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{},{""_class"":""org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction""}],""duration"":8,""estimatedDuration"":6,""fullDisplayNa [...]
-119,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{},{""_class"":""org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction""}],""duration"":10,""estimatedDuration"":6,""fullDisplayN [...]
-120,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{},{""_class"":""org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction""}],""duration"":6,""estimatedDuration"":6,""fullDisplayNa [...]
+93,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{""_class"":""hudson.plugins.git.util.BuildData"",""lastBuiltRevision"":{""SHA1"":""0f886c74949c3ee7e489188911c7dc0c1d547418"",""branch"" [...]
+94,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{""_class"":""hudson.plugins.git.util.BuildData"",""lastBuiltRevision"":{""SHA1"":""0f886c74949c3ee7e489188911c7dc0c1d547418"",""branch"" [...]
+95,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{""_class"":""hudson.plugins.git.util.BuildData"",""lastBuiltRevision"":{""SHA1"":""ceeffdfdd06bce232f9adb3a656265bad13a8473"",""branch"" [...]
+96,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""org.jenkinsci.plugins.workflow.job.WorkflowRun"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{""_class"":""org.jenkinsci.plugins.workflow.libs.LibrariesAction""},{},{},{""_class"":""org.jenkinsci.plugins.display [...]
 121,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{},{""_class"":""org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction""}],""duration"":6,""estimatedDuration"":6,""fullDisplayNa [...]
 122,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{},{""_class"":""org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction""}],""duration"":3,""estimatedDuration"":6,""fullDisplayNa [...]
 123,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}","{""_class"":""hudson.model.FreeStyleBuild"",""actions"":[{""_class"":""hudson.model.CauseAction"",""causes"":[{""_class"":""hudson.model.Cause$UserIdCause"",""shortDescription"":""Started by user 思码逸"",""userId"":""merico"",""userName"":""思码逸""}]},{},{""_class"":""org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction""}],""building"":true,""duration"":4,""estimatedDuration"" [...]
diff --git a/backend/plugins/jenkins/e2e/snapshot_tables/_tool_jenkins_jobs.csv b/backend/plugins/jenkins/e2e/raw_tables/_tool_jenkins_jobs.csv
similarity index 100%
rename from backend/plugins/jenkins/e2e/snapshot_tables/_tool_jenkins_jobs.csv
rename to backend/plugins/jenkins/e2e/raw_tables/_tool_jenkins_jobs.csv
diff --git a/backend/plugins/jenkins/e2e/snapshot_tables/_tool_jenkins_build_commits.csv b/backend/plugins/jenkins/e2e/snapshot_tables/_tool_jenkins_build_commits.csv
index 82ce07b3a..f0a9915d6 100644
--- a/backend/plugins/jenkins/e2e/snapshot_tables/_tool_jenkins_build_commits.csv
+++ b/backend/plugins/jenkins/e2e/snapshot_tables/_tool_jenkins_build_commits.csv
@@ -2,8 +2,3 @@ connection_id,build_name,commit_sha,branch,repo_url,_raw_data_params,_raw_data_t
 1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#11,ceeffdfdd06bce232f9adb3a656265bad13a8473,refs/remotes/origin/main,https://github.com/merico-dev/lake.git,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,95,
 1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#21,0f886c74949c3ee7e489188911c7dc0c1d547418,refs/remotes/origin/main,https://github.com/merico-dev/lake.git,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,94,
 1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#31,0f886c74949c3ee7e489188911c7dc0c1d547418,refs/remotes/origin/main,https://github.com/merico-dev/lake.git,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,93,
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#41,20139afef3c6ec9f3ebffcb06e243b145cbef8c6,refs/remotes/origin/main,https://github.com/merico-dev/lake.git,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,92,
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#51,20139afef3c6ec9f3ebffcb06e243b145cbef8c6,refs/remotes/origin/main,https://github.com/merico-dev/lake.git,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,91,
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#61,20139afef3c6ec9f3ebffcb06e243b145cbef8c6,refs/remotes/origin/main,https://github.com/merico-dev/lake.git,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,90,
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#71,0006e8105d70318aff5eeee38d405fa181a32aa0,refs/remotes/origin/main,https://github.com/merico-dev/lake.git,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,89,
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#81,0006e8105d70318aff5eeee38d405fa181a32aa0,refs/remotes/origin/main,https://github.com/merico-dev/lake.git,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,88,
diff --git a/backend/plugins/jenkins/e2e/snapshot_tables/_tool_jenkins_builds.csv b/backend/plugins/jenkins/e2e/snapshot_tables/_tool_jenkins_builds.csv
index 72ab64c3b..ecfcb9c32 100644
--- a/backend/plugins/jenkins/e2e/snapshot_tables/_tool_jenkins_builds.csv
+++ b/backend/plugins/jenkins/e2e/snapshot_tables/_tool_jenkins_builds.csv
@@ -1,29 +1,9 @@
 connection_id,full_name,job_name,job_path,duration,estimated_duration,number,result,timestamp,start_time,has_stages,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
 1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#11,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,14820,1457,11,SUCCESS,1650017416514,2022-04-15T10:10:16.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,95,
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#13,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,1429,745,13,SUCCESS,1658385602419,2022-07-21T06:40:02.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,97,
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#15,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,70,27,15,SUCCESS,1658385566471,2022-07-21T06:39:26.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,105,
 1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#17,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,57,6,17,SUCCESS,1650017153775,2022-04-15T10:05:53.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,124,
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#170,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,12,6,170,SUCCESS,1662647233074,2022-09-08T14:27:13.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,115,
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#171,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,4,6,171,SUCCESS,1662651656567,2022-09-08T15:40:56.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,114,
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#172,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,2,6,172,SUCCESS,1662651657893,2022-09-08T15:40:57.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,113,
 1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#21,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,2121,1457,21,SUCCESS,1650022548450,2022-04-15T11:35:48.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,94,
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#215,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,11,8,215,SUCCESS,1662647212436,2022-09-08T14:26:52.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,101,
 1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#23,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,61,745,23,SUCCESS,1662647211512,2022-09-08T14:26:51.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,96,
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#24,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,551,1972,24,SUCCESS,1662651633991,2022-09-08T15:40:33.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,99,
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#25,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,6,27,25,SUCCESS,1658385576367,2022-07-21T06:39:36.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,104,
 1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#27,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,4,6,27,SUCCESS,1650017177939,2022-04-15T10:06:17.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,123,
 1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#31,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,1587,1457,31,SUCCESS,1650024049161,2022-04-15T12:00:49.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,93,
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#34,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,802,1972,34,SUCCESS,1662651648992,2022-09-08T15:40:48.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,98,
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#35,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,4,27,35,SUCCESS,1662647217041,2022-09-08T14:26:57.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,103,
 1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#37,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,3,6,37,SUCCESS,1650017186253,2022-04-15T10:06:26.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,122,
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#41,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,13952,1457,41,SUCCESS,1662647203905,2022-09-08T14:26:43.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,92,
 1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#47,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,6,6,47,SUCCESS,1650022556910,2022-04-15T11:35:56.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,121,
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#51,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,1274,1457,51,SUCCESS,1662647231332,2022-09-08T14:27:11.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,91,
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#57,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,6,6,57,SUCCESS,1650022558491,2022-04-15T11:35:58.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,120,
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#61,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,1202,1457,61,SUCCESS,1662647242809,2022-09-08T14:27:22.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,90,
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#67,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,10,6,67,SUCCESS,1650022560954,2022-04-15T11:36:00.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,119,
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#71,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,1988,1457,71,SUCCESS,1662651625889,2022-09-08T15:40:25.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,89,
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#77,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,8,6,77,SUCCESS,1650023883294,2022-04-15T11:58:03.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,118,
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#81,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,1180,1457,81,SUCCESS,1662651640536,2022-09-08T15:40:40.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,88,
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#87,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,11,6,87,SUCCESS,1650023894336,2022-04-15T11:58:14.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,117,
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#97,devlake,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,78,6,97,SUCCESS,1662647207972,2022-09-08T14:26:47.000+00:00,0,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,116,
diff --git a/backend/plugins/jenkins/e2e/snapshot_tables/_tool_jenkins_builds_after_enrich.csv b/backend/plugins/jenkins/e2e/snapshot_tables/_tool_jenkins_builds_after_enrich.csv
index 9cc84a18d..8b46d25c6 100644
--- a/backend/plugins/jenkins/e2e/snapshot_tables/_tool_jenkins_builds_after_enrich.csv
+++ b/backend/plugins/jenkins/e2e/snapshot_tables/_tool_jenkins_builds_after_enrich.csv
@@ -1,29 +1,9 @@
-connection_id,full_name,full_display_name,job_name,duration,has_stages
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#11,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #11,devlake,14820,1
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#13,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #13,devlake,1429,1
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#15,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #15,devlake,70,1
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#17,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #17,devlake,57,0
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#170,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #170,devlake,12,0
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#171,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #171,devlake,4,0
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#172,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #172,devlake,2,0
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#21,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #21,devlake,2121,0
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#215,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #215,devlake,11,0
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#23,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #23,devlake,61,0
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#24,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #24,devlake,551,0
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#25,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #25,devlake,6,0
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#27,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #27,devlake,4,0
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#31,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #31,devlake,1587,0
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#34,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #34,devlake,802,0
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#35,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #35,devlake,4,0
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#37,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #37,devlake,3,0
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#41,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #41,devlake,13952,0
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#47,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #47,devlake,6,0
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#51,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #51,devlake,1274,0
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#57,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #57,devlake,6,0
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#61,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #61,devlake,1202,0
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#67,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #67,devlake,10,0
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#71,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #71,devlake,1988,0
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#77,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #77,devlake,8,0
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#81,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #81,devlake,1180,0
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#87,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #87,devlake,11,0
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#97,Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #97,devlake,78,0
+connection_id,full_name,job_name,duration,has_stages
+1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#11,devlake,14820,1
+1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#17,devlake,57,0
+1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#21,devlake,2121,0
+1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#23,devlake,61,0
+1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#27,devlake,4,0
+1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#31,devlake,1587,0
+1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#37,devlake,3,0
+1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#47,devlake,6,0
diff --git a/backend/plugins/jenkins/e2e/snapshot_tables/cicd_pipeline_commits.csv b/backend/plugins/jenkins/e2e/snapshot_tables/cicd_pipeline_commits.csv
index 1027c0ab0..3ee871bbd 100644
--- a/backend/plugins/jenkins/e2e/snapshot_tables/cicd_pipeline_commits.csv
+++ b/backend/plugins/jenkins/e2e/snapshot_tables/cicd_pipeline_commits.csv
@@ -2,8 +2,3 @@ pipeline_id,commit_sha,repo_id,repo_url,branch,_raw_data_params,_raw_data_table,
 jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#11,ceeffdfdd06bce232f9adb3a656265bad13a8473,,https://github.com/merico-dev/lake.git,refs/remotes/origin/main,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,95,
 jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#21,0f886c74949c3ee7e489188911c7dc0c1d547418,,https://github.com/merico-dev/lake.git,refs/remotes/origin/main,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,94,
 jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#31,0f886c74949c3ee7e489188911c7dc0c1d547418,,https://github.com/merico-dev/lake.git,refs/remotes/origin/main,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,93,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#41,20139afef3c6ec9f3ebffcb06e243b145cbef8c6,,https://github.com/merico-dev/lake.git,refs/remotes/origin/main,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,92,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#51,20139afef3c6ec9f3ebffcb06e243b145cbef8c6,,https://github.com/merico-dev/lake.git,refs/remotes/origin/main,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,91,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#61,20139afef3c6ec9f3ebffcb06e243b145cbef8c6,,https://github.com/merico-dev/lake.git,refs/remotes/origin/main,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,90,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#71,0006e8105d70318aff5eeee38d405fa181a32aa0,,https://github.com/merico-dev/lake.git,refs/remotes/origin/main,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,89,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#81,0006e8105d70318aff5eeee38d405fa181a32aa0,,https://github.com/merico-dev/lake.git,refs/remotes/origin/main,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,88,
diff --git a/backend/plugins/jenkins/e2e/snapshot_tables/cicd_pipelines.csv b/backend/plugins/jenkins/e2e/snapshot_tables/cicd_pipelines.csv
index ec6fd4ddd..401c93939 100644
--- a/backend/plugins/jenkins/e2e/snapshot_tables/cicd_pipelines.csv
+++ b/backend/plugins/jenkins/e2e/snapshot_tables/cicd_pipelines.csv
@@ -1,29 +1,9 @@
 id,name,result,status,type,duration_sec,environment,created_date,finished_date,cicd_scope_id,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
 jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#11,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#11,SUCCESS,DONE,,14,,2022-04-15T10:10:16.000+00:00,2022-04-15T10:10:30.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,95,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#13,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#13,SUCCESS,DONE,,1,,2022-07-21T06:40:02.000+00:00,2022-07-21T06:40:03.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,97,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#15,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#15,SUCCESS,DONE,,0,,2022-07-21T06:39:26.000+00:00,2022-07-21T06:39:26.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,105,
 jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#17,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#17,SUCCESS,DONE,,0,,2022-04-15T10:05:53.000+00:00,2022-04-15T10:05:53.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,124,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#170,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#170,SUCCESS,DONE,,0,,2022-09-08T14:27:13.000+00:00,2022-09-08T14:27:13.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,115,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#171,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#171,SUCCESS,DONE,,0,,2022-09-08T15:40:56.000+00:00,2022-09-08T15:40:56.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,114,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#172,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#172,SUCCESS,DONE,,0,,2022-09-08T15:40:57.000+00:00,2022-09-08T15:40:57.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,113,
 jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#21,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#21,SUCCESS,DONE,,2,,2022-04-15T11:35:48.000+00:00,2022-04-15T11:35:50.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,94,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#215,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#215,SUCCESS,DONE,,0,,2022-09-08T14:26:52.000+00:00,2022-09-08T14:26:52.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,101,
 jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#23,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#23,SUCCESS,DONE,,0,,2022-09-08T14:26:51.000+00:00,2022-09-08T14:26:51.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,96,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#24,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#24,SUCCESS,DONE,,0,,2022-09-08T15:40:33.000+00:00,2022-09-08T15:40:33.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,99,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#25,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#25,SUCCESS,DONE,,0,,2022-07-21T06:39:36.000+00:00,2022-07-21T06:39:36.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,104,
 jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#27,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#27,,IN_PROGRESS,,0,,2022-04-15T10:06:17.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,123,
 jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#31,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#31,SUCCESS,DONE,,1,,2022-04-15T12:00:49.000+00:00,2022-04-15T12:00:50.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,93,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#34,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#34,SUCCESS,DONE,,0,,2022-09-08T15:40:48.000+00:00,2022-09-08T15:40:48.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,98,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#35,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#35,SUCCESS,DONE,,0,,2022-09-08T14:26:57.000+00:00,2022-09-08T14:26:57.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,103,
 jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#37,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#37,SUCCESS,DONE,,0,,2022-04-15T10:06:26.000+00:00,2022-04-15T10:06:26.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,122,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#41,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#41,SUCCESS,DONE,,13,,2022-09-08T14:26:43.000+00:00,2022-09-08T14:26:56.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,92,
 jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#47,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#47,SUCCESS,DONE,,0,,2022-04-15T11:35:56.000+00:00,2022-04-15T11:35:56.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,121,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#51,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#51,SUCCESS,DONE,,1,,2022-09-08T14:27:11.000+00:00,2022-09-08T14:27:12.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,91,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#57,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#57,SUCCESS,DONE,,0,,2022-04-15T11:35:58.000+00:00,2022-04-15T11:35:58.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,120,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#61,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#61,SUCCESS,DONE,,1,,2022-09-08T14:27:22.000+00:00,2022-09-08T14:27:23.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,90,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#67,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#67,SUCCESS,DONE,,0,,2022-04-15T11:36:00.000+00:00,2022-04-15T11:36:00.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,119,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#71,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#71,SUCCESS,DONE,,1,,2022-09-08T15:40:25.000+00:00,2022-09-08T15:40:26.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,89,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#77,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#77,SUCCESS,DONE,,0,,2022-04-15T11:58:03.000+00:00,2022-04-15T11:58:03.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,118,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#81,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#81,SUCCESS,DONE,,1,,2022-09-08T15:40:40.000+00:00,2022-09-08T15:40:41.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,88,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#87,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#87,SUCCESS,DONE,,0,,2022-04-15T11:58:14.000+00:00,2022-04-15T11:58:14.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,117,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#97,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#97,SUCCESS,DONE,,0,,2022-09-08T14:26:47.000+00:00,2022-09-08T14:26:47.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,116,
diff --git a/backend/plugins/jenkins/e2e/snapshot_tables/cicd_tasks.csv b/backend/plugins/jenkins/e2e/snapshot_tables/cicd_tasks.csv
index 4d20786d7..ace6607bf 100644
--- a/backend/plugins/jenkins/e2e/snapshot_tables/cicd_tasks.csv
+++ b/backend/plugins/jenkins/e2e/snapshot_tables/cicd_tasks.csv
@@ -1,26 +1,8 @@
 id,name,pipeline_id,result,status,type,environment,duration_sec,started_date,finished_date,cicd_scope_id,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
 jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#17,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#17,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,0,2022-04-15T10:05:53.000+00:00,2022-04-15T10:05:53.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub- [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#170,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#170,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,0,2022-09-08T14:27:13.000+00:00,2022-09-08T14:27:13.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-su [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#171,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#171,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,0,2022-09-08T15:40:56.000+00:00,2022-09-08T15:40:56.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-su [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#172,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#172,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,0,2022-09-08T15:40:57.000+00:00,2022-09-08T15:40:57.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-su [...]
 jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#21,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#21,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,2,2022-04-15T11:35:48.000+00:00,2022-04-15T11:35:50.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub- [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#215,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#215,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,0,2022-09-08T14:26:52.000+00:00,2022-09-08T14:26:52.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-su [...]
 jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#23,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#23,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,0,2022-09-08T14:26:51.000+00:00,2022-09-08T14:26:51.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub- [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#24,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#24,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,0,2022-09-08T15:40:33.000+00:00,2022-09-08T15:40:33.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub- [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#25,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#25,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,0,2022-07-21T06:39:36.000+00:00,2022-07-21T06:39:36.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub- [...]
 jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#27,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#27,,IN_PROGRESS,DEPLOYMENT,PRODUCTION,0,2022-04-15T10:06:17.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake" [...]
 jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#31,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#31,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,1,2022-04-15T12:00:49.000+00:00,2022-04-15T12:00:50.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub- [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#34,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#34,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,0,2022-09-08T15:40:48.000+00:00,2022-09-08T15:40:48.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub- [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#35,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#35,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,0,2022-09-08T14:26:57.000+00:00,2022-09-08T14:26:57.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub- [...]
 jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#37,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#37,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,0,2022-04-15T10:06:26.000+00:00,2022-04-15T10:06:26.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub- [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#41,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#41,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,13,2022-09-08T14:26:43.000+00:00,2022-09-08T14:26:56.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub [...]
 jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#47,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#47,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,0,2022-04-15T11:35:56.000+00:00,2022-04-15T11:35:56.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub- [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#51,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#51,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,1,2022-09-08T14:27:11.000+00:00,2022-09-08T14:27:12.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub- [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#57,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#57,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,0,2022-04-15T11:35:58.000+00:00,2022-04-15T11:35:58.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub- [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#61,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#61,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,1,2022-09-08T14:27:22.000+00:00,2022-09-08T14:27:23.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub- [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#67,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#67,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,0,2022-04-15T11:36:00.000+00:00,2022-04-15T11:36:00.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub- [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#71,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#71,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,1,2022-09-08T15:40:25.000+00:00,2022-09-08T15:40:26.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub- [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#77,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#77,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,0,2022-04-15T11:58:03.000+00:00,2022-04-15T11:58:03.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub- [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#81,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#81,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,1,2022-09-08T15:40:40.000+00:00,2022-09-08T15:40:41.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub- [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#87,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#87,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,0,2022-04-15T11:58:14.000+00:00,2022-04-15T11:58:14.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub- [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#97,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#97,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,0,2022-09-08T14:26:47.000+00:00,2022-09-08T14:26:47.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub- [...]
diff --git a/backend/plugins/jenkins/models/response.go b/backend/plugins/jenkins/models/response.go
index 179898d7c..31db53db0 100644
--- a/backend/plugins/jenkins/models/response.go
+++ b/backend/plugins/jenkins/models/response.go
@@ -73,11 +73,11 @@ type LastBuiltRevision struct {
 }
 
 type Action struct {
-	Class                   string            `json:"_class,omitempty"`
-	LastBuiltRevision       LastBuiltRevision `json:"lastBuiltRevision,omitempty"`
-	MercurialRevisionNumber string            `json:"mercurialRevisionNumber"`
-	RemoteUrls              []string          `json:"remoteUrls"`
-	Causes                  []Cause           `json:"causes"`
+	Class                   string             `json:"_class,omitempty"`
+	LastBuiltRevision       *LastBuiltRevision `json:"lastBuiltRevision,omitempty"`
+	MercurialRevisionNumber string             `json:"mercurialRevisionNumber"`
+	RemoteUrls              []string           `json:"remoteUrls"`
+	Causes                  []Cause            `json:"causes"`
 }
 type ChangeSet struct {
 	Class     string     `json:"_class"`
diff --git a/backend/plugins/jenkins/tasks/build_extractor.go b/backend/plugins/jenkins/tasks/build_extractor.go
index d7d7567f7..287d2b788 100644
--- a/backend/plugins/jenkins/tasks/build_extractor.go
+++ b/backend/plugins/jenkins/tasks/build_extractor.go
@@ -73,39 +73,41 @@ func ExtractApiBuilds(taskCtx plugin.SubTaskContext) errors.Error {
 				Building:          body.Building,
 				StartTime:         time.Unix(body.Timestamp/1000, 0),
 			}
-			vcs := body.ChangeSet.Kind
-			if vcs == "git" || vcs == "hg" {
-				for _, a := range body.Actions {
-					sha := ""
-					branch := ""
-					if a.LastBuiltRevision.SHA1 != "" {
-						sha = a.LastBuiltRevision.SHA1
-					}
-					if a.MercurialRevisionNumber != "" {
-						sha = a.MercurialRevisionNumber
-					}
+			// we also need to collect the commit info from the build which does not have changeSet
+			// changeSet describes the changes that were made in the build
+			for _, a := range body.Actions {
+				if a.LastBuiltRevision == nil {
+					continue
+				}
+				sha := ""
+				branch := ""
+				if a.LastBuiltRevision.SHA1 != "" {
+					sha = a.LastBuiltRevision.SHA1
+				}
+				if a.MercurialRevisionNumber != "" {
+					sha = a.MercurialRevisionNumber
+				}
 
-					if len(a.LastBuiltRevision.Branches) > 0 {
-						branch = a.LastBuiltRevision.Branches[0].Name
-					}
-					for _, url := range a.RemoteUrls {
-						if url != "" {
-							buildCommitRemoteUrl := models.JenkinsBuildCommit{
-								ConnectionId: data.Options.ConnectionId,
-								BuildName:    build.FullName,
-								CommitSha:    sha,
-								RepoUrl:      url,
-								Branch:       branch,
-							}
-							results = append(results, &buildCommitRemoteUrl)
+				if len(a.LastBuiltRevision.Branches) > 0 {
+					branch = a.LastBuiltRevision.Branches[0].Name
+				}
+				for _, url := range a.RemoteUrls {
+					if url != "" {
+						buildCommitRemoteUrl := models.JenkinsBuildCommit{
+							ConnectionId: data.Options.ConnectionId,
+							BuildName:    build.FullName,
+							CommitSha:    sha,
+							RepoUrl:      url,
+							Branch:       branch,
 						}
+						results = append(results, &buildCommitRemoteUrl)
 					}
-					if len(a.Causes) > 0 {
-						for _, cause := range a.Causes {
-							if cause.UpstreamProject != "" {
-								triggeredByBuild := fmt.Sprintf("%s #%d", cause.UpstreamProject, cause.UpstreamBuild)
-								build.TriggeredBy = triggeredByBuild
-							}
+				}
+				if len(a.Causes) > 0 {
+					for _, cause := range a.Causes {
+						if cause.UpstreamProject != "" {
+							triggeredByBuild := fmt.Sprintf("%s #%d", cause.UpstreamProject, cause.UpstreamBuild)
+							build.TriggeredBy = triggeredByBuild
 						}
 					}
 				}