You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by wa...@apache.org on 2022/11/10 11:38:55 UTC

[incubator-devlake] branch main updated: feat(jenkins): add cicd scope id (#3707)

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

warren 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 be41363d feat(jenkins): add cicd scope id (#3707)
be41363d is described below

commit be41363d91df16a5e46d9f942cb0300bed79d453
Author: Warren Chen <yi...@merico.dev>
AuthorDate: Thu Nov 10 19:38:51 2022 +0800

    feat(jenkins): add cicd scope id (#3707)
---
 models/domainlayer/devops/cicd_pipeline.go         |  1 +
 models/domainlayer/devops/cicd_scope.go            | 11 +++
 models/domainlayer/devops/cicd_task.go             |  1 +
 .../dora/e2e/snapshot_tables/lake_cicd_tasks.csv   | 50 ++++++------
 .../e2e/snapshot_tables/lake_cicd_tasks_prefix.csv |  4 +-
 plugins/jenkins/e2e/builds_test.go                 |  3 +
 plugins/jenkins/e2e/jobs_test.go                   | 11 +++
 .../e2e/snapshot_tables/_tool_jenkins_jobs.csv     |  4 +-
 .../jenkins/e2e/snapshot_tables/cicd_pipelines.csv | 60 +++++++-------
 .../jenkins/e2e/snapshot_tables/cicd_scopes.csv    |  2 +
 plugins/jenkins/e2e/snapshot_tables/cicd_tasks.csv | 60 +++++++-------
 .../snapshot_tables/cicd_tasks_after_stages.csv    | 34 ++++----
 plugins/jenkins/e2e/stages_test.go                 |  2 +
 plugins/jenkins/impl/impl.go                       |  1 +
 plugins/jenkins/models/job.go                      |  2 +-
 .../20221110_change_index_of_job_path.go           | 95 ++++++++++++++++++++++
 .../jenkins/models/migrationscripts/register.go    |  1 +
 plugins/jenkins/tasks/build_cicd_convertor.go      |  3 +
 plugins/jenkins/tasks/job_convertor.go             | 90 ++++++++++++++++++++
 plugins/jenkins/tasks/job_extractor.go             |  2 +-
 plugins/jenkins/tasks/stage_convertor.go           |  3 +
 plugins/jenkins/tasks/task_data.go                 |  1 +
 22 files changed, 333 insertions(+), 108 deletions(-)

diff --git a/models/domainlayer/devops/cicd_pipeline.go b/models/domainlayer/devops/cicd_pipeline.go
index e92c1c4e..0decb3bd 100644
--- a/models/domainlayer/devops/cicd_pipeline.go
+++ b/models/domainlayer/devops/cicd_pipeline.go
@@ -33,6 +33,7 @@ type CICDPipeline struct {
 	Environment  string `gorm:"type:varchar(255)"`
 	CreatedDate  time.Time
 	FinishedDate *time.Time
+	CicdScopeId  string `gorm:"index;type:varchar(255)"`
 }
 
 func (CICDPipeline) TableName() string {
diff --git a/models/domainlayer/devops/cicd_scope.go b/models/domainlayer/devops/cicd_scope.go
index 068ee5cf..fcb3646e 100644
--- a/models/domainlayer/devops/cicd_scope.go
+++ b/models/domainlayer/devops/cicd_scope.go
@@ -19,9 +19,12 @@ package devops
 
 import (
 	"github.com/apache/incubator-devlake/models/domainlayer"
+	"github.com/apache/incubator-devlake/plugins/core"
 	"time"
 )
 
+var _ core.Scope = (*CicdScope)(nil)
+
 type CicdScope struct {
 	domainlayer.DomainEntity
 	Name        string `gorm:"type:varchar(255)"`
@@ -34,3 +37,11 @@ type CicdScope struct {
 func (CicdScope) TableName() string {
 	return "cicd_scopes"
 }
+
+func (r *CicdScope) ScopeId() string {
+	return r.Id
+}
+
+func (r *CicdScope) ScopeName() string {
+	return r.Name
+}
diff --git a/models/domainlayer/devops/cicd_task.go b/models/domainlayer/devops/cicd_task.go
index 2a786e13..d7d933b6 100644
--- a/models/domainlayer/devops/cicd_task.go
+++ b/models/domainlayer/devops/cicd_task.go
@@ -47,6 +47,7 @@ type CICDTask struct {
 	DurationSec  uint64
 	StartedDate  time.Time
 	FinishedDate *time.Time
+	CicdScopeId  string `gorm:"index;type:varchar(255)"`
 }
 
 func (CICDTask) TableName() string {
diff --git a/plugins/dora/e2e/snapshot_tables/lake_cicd_tasks.csv b/plugins/dora/e2e/snapshot_tables/lake_cicd_tasks.csv
index 1db38869..f444b048 100644
--- a/plugins/dora/e2e/snapshot_tables/lake_cicd_tasks.csv
+++ b/plugins/dora/e2e/snapshot_tables/lake_cicd_tasks.csv
@@ -1,25 +1,25 @@
-id,name,pipeline_id,result,status,type,environment,duration_sec,started_date,finished_date
-github:GithubJob:1:7773010057,build_deploy,github:GithubRun:1:3022300997,SUCCESS,DONE,,PRODUCTION,57,2022-09-09T12:12:52.000+00:00,2022-09-09T12:13:49.000+00:00
-github:GithubJob:1:7773010060,deployment,github:GithubRun:1:3022301033,SUCCESS,DONE,,PRODUCTION,991,2022-09-09T12:13:58.000+00:00,2022-09-09T12:30:29.000+00:00
-github:GithubJob:1:7773010062,deploy,github:GithubRun:1:3022348786,SUCCESS,DONE,,PRODUCTION,1006,2022-09-09T12:21:30.000+00:00,2022-09-09T12:38:16.000+00:00
-github:GithubJob:1:8269045794,deploy,github:GithubRun:1:3022052551,FAILURE,DONE,DEPLOYMENT,PRODUCTION,72,2022-09-09T11:27:13.000+00:00,2022-09-09T11:28:25.000+00:00
-github:GithubJob:1:8269045795,test (ubuntu-latest),github:GithubRun:1:3022052557,SUCCESS,DONE,DEPLOYMENT,,191,2022-09-09T11:27:42.000+00:00,2022-09-09T11:30:53.000+00:00
-github:GithubJob:1:8269045819,commit-msg,github:GithubRun:1:3022052555,SUCCESS,DONE,DEPLOYMENT,,8,2022-09-09T11:26:38.000+00:00,2022-09-09T11:26:46.000+00:00
-github:GithubJob:1:8269045928,e2e-mysql,github:GithubRun:1:3022052558,SUCCESS,DONE,,,200,2022-09-09T11:28:00.000+00:00,2022-09-09T11:31:20.000+00:00
-github:GithubJob:1:8269046116,check Apache license header,github:GithubRun:1:3022052589,SUCCESS,DONE,,,57,2022-09-09T11:28:34.000+00:00,2022-09-09T11:29:31.000+00:00
-github:GithubJob:1:8269415129,deploy,github:GithubRun:1:3022190519,FAILURE,DONE,,PRODUCTION,84,2022-09-09T11:51:21.000+00:00,2022-09-09T11:52:45.000+00:00
-github:GithubJob:1:8269415130,test (ubuntu-latest),github:GithubRun:1:3022190524,SUCCESS,DONE,,,182,2022-09-09T11:50:31.000+00:00,2022-09-09T11:53:33.000+00:00
-github:GithubJob:1:8269415142,check Apache license header,github:GithubRun:1:3022190525,SUCCESS,DONE,,,63,2022-09-09T11:52:06.000+00:00,2022-09-09T11:53:09.000+00:00
-github:GithubJob:1:8269415165,commit-msg,github:GithubRun:1:3022190521,SUCCESS,DONE,,,10,2022-09-09T11:52:46.000+00:00,2022-09-09T11:52:56.000+00:00
-github:GithubJob:1:8269415315,deployment,github:GithubRun:1:3022190520,SUCCESS,DONE,,PRODUCTION,242,2022-09-09T11:53:45.000+00:00,2022-09-09T11:57:47.000+00:00
-github:GithubJob:1:8269598312,e2e-mysql,github:GithubRun:1:3022255519,SUCCESS,DONE,,,828,2022-09-09T12:05:04.000+00:00,2022-09-09T12:18:52.000+00:00
-github:GithubJob:1:8269598316,test (ubuntu-latest),github:GithubRun:1:3022255511,SUCCESS,DONE,,,1016,2022-09-09T12:05:49.000+00:00,2022-09-09T12:22:45.000+00:00
-github:GithubJob:1:8269598318,lint,github:GithubRun:1:3022255516,FAILURE,DONE,,,62,2022-09-09T12:02:28.000+00:00,2022-09-09T12:03:30.000+00:00
-github:GithubJob:1:8269598325,check Apache license header,github:GithubRun:1:3022255517,SUCCESS,DONE,,,52,2022-09-09T12:03:51.000+00:00,2022-09-09T12:04:43.000+00:00
-github:GithubJob:1:8269598469,commit-msg,github:GithubRun:1:3022255524,FAILURE,DONE,,,41,2022-09-09T12:06:55.000+00:00,2022-09-09T12:07:36.000+00:00
-github:GithubJob:1:8269729324,e2e-mysql,github:GithubRun:1:3022300995,SUCCESS,DONE,,,1007,2022-09-09T12:10:08.000+00:00,2022-09-09T12:26:55.000+00:00
-github:GithubJob:1:8269729327,xx_deploy_xx,github:GithubRun:1:3022301001,FAILURE,DONE,,PRODUCTION,82,2022-09-09T12:11:22.000+00:00,2022-09-09T12:12:44.000+00:00
-github:GithubJob:1:8269729550,build_deployment,github:GithubRun:1:3022301007,SUCCESS,DONE,,PRODUCTION,6,2022-09-09T12:12:02.000+00:00,2022-09-09T12:12:08.000+00:00
-github:GithubJob:1:8269729553,build_deploy,github:GithubRun:1:3022300997,SUCCESS,DONE,,PRODUCTION,57,2022-09-09T12:12:52.000+00:00,2022-09-09T12:13:49.000+00:00
-github:GithubJob:1:8269729821,deployment,github:GithubRun:1:3022301033,SUCCESS,DONE,,PRODUCTION,991,2022-09-09T12:13:58.000+00:00,2022-09-09T12:30:29.000+00:00
-github:GithubJob:1:8269872730,deploy,github:GithubRun:1:3022348786,SUCCESS,DONE,,PRODUCTION,1006,2022-09-09T12:21:30.000+00:00,2022-09-09T12:38:16.000+00:00
+id,name,pipeline_id,result,status,type,environment,duration_sec,started_date,finished_date,cicd_scope_id
+github:GithubJob:1:7773010057,build_deploy,github:GithubRun:1:3022300997,SUCCESS,DONE,,PRODUCTION,57,2022-09-09T12:12:52.000+00:00,2022-09-09T12:13:49.000+00:00,
+github:GithubJob:1:7773010060,deployment,github:GithubRun:1:3022301033,SUCCESS,DONE,,PRODUCTION,991,2022-09-09T12:13:58.000+00:00,2022-09-09T12:30:29.000+00:00,
+github:GithubJob:1:7773010062,deploy,github:GithubRun:1:3022348786,SUCCESS,DONE,,PRODUCTION,1006,2022-09-09T12:21:30.000+00:00,2022-09-09T12:38:16.000+00:00,
+github:GithubJob:1:8269045794,deploy,github:GithubRun:1:3022052551,FAILURE,DONE,DEPLOYMENT,PRODUCTION,72,2022-09-09T11:27:13.000+00:00,2022-09-09T11:28:25.000+00:00,
+github:GithubJob:1:8269045795,test (ubuntu-latest),github:GithubRun:1:3022052557,SUCCESS,DONE,DEPLOYMENT,,191,2022-09-09T11:27:42.000+00:00,2022-09-09T11:30:53.000+00:00,
+github:GithubJob:1:8269045819,commit-msg,github:GithubRun:1:3022052555,SUCCESS,DONE,DEPLOYMENT,,8,2022-09-09T11:26:38.000+00:00,2022-09-09T11:26:46.000+00:00,
+github:GithubJob:1:8269045928,e2e-mysql,github:GithubRun:1:3022052558,SUCCESS,DONE,,,200,2022-09-09T11:28:00.000+00:00,2022-09-09T11:31:20.000+00:00,
+github:GithubJob:1:8269046116,check Apache license header,github:GithubRun:1:3022052589,SUCCESS,DONE,,,57,2022-09-09T11:28:34.000+00:00,2022-09-09T11:29:31.000+00:00,
+github:GithubJob:1:8269415129,deploy,github:GithubRun:1:3022190519,FAILURE,DONE,,PRODUCTION,84,2022-09-09T11:51:21.000+00:00,2022-09-09T11:52:45.000+00:00,
+github:GithubJob:1:8269415130,test (ubuntu-latest),github:GithubRun:1:3022190524,SUCCESS,DONE,,,182,2022-09-09T11:50:31.000+00:00,2022-09-09T11:53:33.000+00:00,
+github:GithubJob:1:8269415142,check Apache license header,github:GithubRun:1:3022190525,SUCCESS,DONE,,,63,2022-09-09T11:52:06.000+00:00,2022-09-09T11:53:09.000+00:00,
+github:GithubJob:1:8269415165,commit-msg,github:GithubRun:1:3022190521,SUCCESS,DONE,,,10,2022-09-09T11:52:46.000+00:00,2022-09-09T11:52:56.000+00:00,
+github:GithubJob:1:8269415315,deployment,github:GithubRun:1:3022190520,SUCCESS,DONE,,PRODUCTION,242,2022-09-09T11:53:45.000+00:00,2022-09-09T11:57:47.000+00:00,
+github:GithubJob:1:8269598312,e2e-mysql,github:GithubRun:1:3022255519,SUCCESS,DONE,,,828,2022-09-09T12:05:04.000+00:00,2022-09-09T12:18:52.000+00:00,
+github:GithubJob:1:8269598316,test (ubuntu-latest),github:GithubRun:1:3022255511,SUCCESS,DONE,,,1016,2022-09-09T12:05:49.000+00:00,2022-09-09T12:22:45.000+00:00,
+github:GithubJob:1:8269598318,lint,github:GithubRun:1:3022255516,FAILURE,DONE,,,62,2022-09-09T12:02:28.000+00:00,2022-09-09T12:03:30.000+00:00,
+github:GithubJob:1:8269598325,check Apache license header,github:GithubRun:1:3022255517,SUCCESS,DONE,,,52,2022-09-09T12:03:51.000+00:00,2022-09-09T12:04:43.000+00:00,
+github:GithubJob:1:8269598469,commit-msg,github:GithubRun:1:3022255524,FAILURE,DONE,,,41,2022-09-09T12:06:55.000+00:00,2022-09-09T12:07:36.000+00:00,
+github:GithubJob:1:8269729324,e2e-mysql,github:GithubRun:1:3022300995,SUCCESS,DONE,,,1007,2022-09-09T12:10:08.000+00:00,2022-09-09T12:26:55.000+00:00,
+github:GithubJob:1:8269729327,xx_deploy_xx,github:GithubRun:1:3022301001,FAILURE,DONE,,PRODUCTION,82,2022-09-09T12:11:22.000+00:00,2022-09-09T12:12:44.000+00:00,
+github:GithubJob:1:8269729550,build_deployment,github:GithubRun:1:3022301007,SUCCESS,DONE,,PRODUCTION,6,2022-09-09T12:12:02.000+00:00,2022-09-09T12:12:08.000+00:00,
+github:GithubJob:1:8269729553,build_deploy,github:GithubRun:1:3022300997,SUCCESS,DONE,,PRODUCTION,57,2022-09-09T12:12:52.000+00:00,2022-09-09T12:13:49.000+00:00,
+github:GithubJob:1:8269729821,deployment,github:GithubRun:1:3022301033,SUCCESS,DONE,,PRODUCTION,991,2022-09-09T12:13:58.000+00:00,2022-09-09T12:30:29.000+00:00,
+github:GithubJob:1:8269872730,deploy,github:GithubRun:1:3022348786,SUCCESS,DONE,,PRODUCTION,1006,2022-09-09T12:21:30.000+00:00,2022-09-09T12:38:16.000+00:00,
diff --git a/plugins/dora/e2e/snapshot_tables/lake_cicd_tasks_prefix.csv b/plugins/dora/e2e/snapshot_tables/lake_cicd_tasks_prefix.csv
index 482b9f9b..deb5f3c8 100644
--- a/plugins/dora/e2e/snapshot_tables/lake_cicd_tasks_prefix.csv
+++ b/plugins/dora/e2e/snapshot_tables/lake_cicd_tasks_prefix.csv
@@ -1,2 +1,2 @@
-id,name,pipeline_id,result,status,type,environment,duration_sec,started_date,finished_date
-jenkins:GithubJob:1:8269872730,deploy,jenkins:GithubRun:1:3022348786,SUCCESS,DONE,,PRODUCTION,1006,2022-09-09T12:21:30.000+00:00,2022-09-09T12:38:16.000+00:00
+id,name,pipeline_id,result,status,type,environment,duration_sec,started_date,finished_date,cicd_scope_id
+jenkins:GithubJob:1:8269872730,deploy,jenkins:GithubRun:1:3022348786,SUCCESS,DONE,,PRODUCTION,1006,2022-09-09T12:21:30.000+00:00,2022-09-09T12:38:16.000+00:00,
diff --git a/plugins/jenkins/e2e/builds_test.go b/plugins/jenkins/e2e/builds_test.go
index 7021975c..5a925c09 100644
--- a/plugins/jenkins/e2e/builds_test.go
+++ b/plugins/jenkins/e2e/builds_test.go
@@ -38,6 +38,7 @@ func TestJenkinsBuildsDataFlow(t *testing.T) {
 			JobName:      `devlake`,
 			JobPath:      `job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/`,
 		},
+		Job: &models.JenkinsJob{FullName: "Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake"},
 	}
 
 	// import raw data table
@@ -99,6 +100,7 @@ func TestJenkinsBuildsDataFlow(t *testing.T) {
 			"duration_sec",
 			"started_date",
 			"finished_date",
+			"cicd_scope_id",
 		),
 	)
 
@@ -114,6 +116,7 @@ func TestJenkinsBuildsDataFlow(t *testing.T) {
 			"environment",
 			"created_date",
 			"finished_date",
+			"cicd_scope_id",
 		),
 	)
 
diff --git a/plugins/jenkins/e2e/jobs_test.go b/plugins/jenkins/e2e/jobs_test.go
index 8dfee7ff..a8ffa278 100644
--- a/plugins/jenkins/e2e/jobs_test.go
+++ b/plugins/jenkins/e2e/jobs_test.go
@@ -18,6 +18,8 @@ limitations under the License.
 package e2e
 
 import (
+	"github.com/apache/incubator-devlake/models/common"
+	"github.com/apache/incubator-devlake/models/domainlayer/devops"
 	"testing"
 
 	"github.com/apache/incubator-devlake/helpers/e2ehelper"
@@ -37,6 +39,7 @@ func TestJenkinsJobsDataFlow(t *testing.T) {
 			JobName:      `devlake`,
 			JobPath:      `job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/`,
 		},
+		Job: &models.JenkinsJob{FullName: "Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake"},
 	}
 
 	// import raw data table
@@ -62,4 +65,12 @@ func TestJenkinsJobsDataFlow(t *testing.T) {
 			"primary_view",
 		),
 	)
+
+	// verify extraction
+	dataflowTester.FlushTabler(&devops.CicdScope{})
+	dataflowTester.Subtask(tasks.ConvertJobsMeta, taskData)
+	dataflowTester.VerifyTableWithOptions(&devops.CicdScope{}, e2ehelper.TableOptions{
+		CSVRelPath:  "./snapshot_tables/cicd_scopes.csv",
+		IgnoreTypes: []interface{}{common.NoPKModel{}},
+	})
 }
diff --git a/plugins/jenkins/e2e/snapshot_tables/_tool_jenkins_jobs.csv b/plugins/jenkins/e2e/snapshot_tables/_tool_jenkins_jobs.csv
index 8666233b..0fbab23f 100644
--- a/plugins/jenkins/e2e/snapshot_tables/_tool_jenkins_jobs.csv
+++ b/plugins/jenkins/e2e/snapshot_tables/_tool_jenkins_jobs.csv
@@ -1,2 +1,2 @@
-connection_id,full_name,path,name,class,color,base,url,description,primary_view,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
-1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/test-job,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,test-job,hudson.model.FreeStyleProject,blue,,https://jenkins-zjk.merico.cn/job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/job/test-job/,12121,All,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_jobs,16247,
+connection_id,full_name,name,path,class,color,base,url,description,primary_view,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
+1,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/test-job,test-job,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/,hudson.model.FreeStyleProject,blue,,https://jenkins-zjk.merico.cn/job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/job/test-job/,12121,All,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_jobs,16247,
diff --git a/plugins/jenkins/e2e/snapshot_tables/cicd_pipelines.csv b/plugins/jenkins/e2e/snapshot_tables/cicd_pipelines.csv
index 25f1e658..c64339d0 100644
--- a/plugins/jenkins/e2e/snapshot_tables/cicd_pipelines.csv
+++ b/plugins/jenkins/e2e/snapshot_tables/cicd_pipelines.csv
@@ -1,30 +1,30 @@
-id,name,result,status,type,duration_sec,environment,created_date,finished_date,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
-jenkins:JenkinsBuild:1:pipeline-test2 #1,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,4,,2022-09-08T15:40:13.000+00:00,2022-09-08T15:40:17.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,100,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #11,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,14,,2022-04-15T10:10:16.000+00:00,2022-04-15T10:10:30.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,95,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #13,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,1,,2022-07-21T06:40:02.000+00:00,2022-07-21T06:40:03.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,97,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #15,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,0,,2022-07-21T06:39:26.000+00:00,2022-07-21T06:39:26.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,105,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #17,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,0,,2022-04-15T10:05:53.000+00:00,2022-04-15T10:05:53.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,124,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #170,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,0,,2022-09-08T14:27:13.000+00:00,2022-09-08T14:27:13.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,115,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #171,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,0,,2022-09-08T15:40:56.000+00:00,2022-09-08T15:40:56.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,114,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #172,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,0,,2022-09-08T15:40:57.000+00:00,2022-09-08T15:40:57.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,113,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #21,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,2,,2022-04-15T11:35:48.000+00:00,2022-04-15T11:35:50.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,94,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #215,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,0,,2022-09-08T14:26:52.000+00:00,2022-09-08T14:26:52.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,101,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #23,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,0,,2022-09-08T14:26:51.000+00:00,2022-09-08T14:26:51.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,96,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #24,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,0,,2022-09-08T15:40:33.000+00:00,2022-09-08T15:40:33.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,99,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #25,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,0,,2022-07-21T06:39:36.000+00:00,2022-07-21T06:39:36.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,104,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #27,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,,IN_PROGRESS,,0,,2022-04-15T10:06:17.000+00:00,,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,123,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #31,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,1,,2022-04-15T12:00:49.000+00:00,2022-04-15T12:00:50.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,93,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #34,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,0,,2022-09-08T15:40:48.000+00:00,2022-09-08T15:40:48.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,98,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #35,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,0,,2022-09-08T14:26:57.000+00:00,2022-09-08T14:26:57.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,103,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #37,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,0,,2022-04-15T10:06:26.000+00:00,2022-04-15T10:06:26.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,122,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #41,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,13,,2022-09-08T14:26:43.000+00:00,2022-09-08T14:26:56.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,92,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #47,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,0,,2022-04-15T11:35:56.000+00:00,2022-04-15T11:35:56.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,121,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #51,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,1,,2022-09-08T14:27:11.000+00:00,2022-09-08T14:27:12.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,91,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #57,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,0,,2022-04-15T11:35:58.000+00:00,2022-04-15T11:35:58.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,120,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #61,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,1,,2022-09-08T14:27:22.000+00:00,2022-09-08T14:27:23.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,90,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #67,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,0,,2022-04-15T11:36:00.000+00:00,2022-04-15T11:36:00.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,119,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #71,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,1,,2022-09-08T15:40:25.000+00:00,2022-09-08T15:40:26.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,89,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #77,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,0,,2022-04-15T11:58:03.000+00:00,2022-04-15T11:58:03.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,118,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #81,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,1,,2022-09-08T15:40:40.000+00:00,2022-09-08T15:40:41.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,88,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #87,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,0,,2022-04-15T11:58:14.000+00:00,2022-04-15T11:58:14.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,117,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #97,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,0,,2022-09-08T14:26:47.000+00:00,2022-09-08T14:26:47.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,116,
+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:pipeline-test2 #1,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,SUCCESS,DONE,,4,,2022-09-08T15:40:13.000+00:00,2022-09-08T15:40:17.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,100,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #11,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,95,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #13,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,97,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #15,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,105,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #17,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,124,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #170,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,115,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #171,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,114,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #172,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,113,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #21,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,94,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #215,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,101,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #23,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,96,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #24,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,99,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #25,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,104,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #27,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,123,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #31,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,93,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #34,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,98,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #35,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,103,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #37,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,122,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #41,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,92,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #47,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,121,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #51,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,91,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #57,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,120,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #61,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,90,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #67,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,119,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #71,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,89,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #77,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,118,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #81,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,88,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #87,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,117,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #97,job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/devlake,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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,116,
diff --git a/plugins/jenkins/e2e/snapshot_tables/cicd_scopes.csv b/plugins/jenkins/e2e/snapshot_tables/cicd_scopes.csv
new file mode 100644
index 00000000..37ea5de0
--- /dev/null
+++ b/plugins/jenkins/e2e/snapshot_tables/cicd_scopes.csv
@@ -0,0 +1,2 @@
+id,name,description,url,created_date,updated_date
+jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/test-job,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/test-job,12121,https://jenkins-zjk.merico.cn/job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/job/test-job/,,
diff --git a/plugins/jenkins/e2e/snapshot_tables/cicd_tasks.csv b/plugins/jenkins/e2e/snapshot_tables/cicd_tasks.csv
index 10801db2..cb798e9a 100644
--- a/plugins/jenkins/e2e/snapshot_tables/cicd_tasks.csv
+++ b/plugins/jenkins/e2e/snapshot_tables/cicd_tasks.csv
@@ -1,30 +1,30 @@
-id,name,pipeline_id,result,status,type,environment,duration_sec,started_date,finished_date,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
-jenkins:JenkinsBuild:1:pipeline-test2 #1,devlake,jenkins:JenkinsBuild:1:pipeline-test2 #1,SUCCESS,DONE,,,4,2022-09-08T15:40:13.000+00:00,2022-09-08T15:40:17.000+00:00,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,100,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #11,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,95,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #13,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,97,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #15,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,105,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #17,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,124,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #170,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,115,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #171,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,114,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #172,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,113,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #21,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,94,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #215,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,101,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #23,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,96,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #24,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,99,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #25,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,104,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #27,devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #27,,IN_PROGRESS,,,0,2022-04-15T10:06:17.000+00:00,,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,123,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #31,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,93,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #34,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,98,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #35,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,103,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #37,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,122,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #41,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,92,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #47,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,121,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #51,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,91,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #57,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,120,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #61,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,90,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #67,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,119,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #71,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,89,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #77,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,118,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #81,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,88,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #87,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,117,
-jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #97,devlake,jenkins:JenkinsBuild:1: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,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,116,
+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:pipeline-test2 #1,devlake,jenkins:JenkinsBuild:1:pipeline-test2 #1,SUCCESS,DONE,,,4,2022-09-08T15:40:13.000+00:00,2022-09-08T15:40:17.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,100,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #11,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-di [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #13,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #15,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #17,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #170,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-d [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #171,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-d [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #172,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-d [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #21,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #215,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-d [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #23,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #24,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #25,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #27,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_builds,123,
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #31,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #34,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #35,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #37,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #41,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-di [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #47,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #51,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #57,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #61,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #67,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #71,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #77,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #81,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #87,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake #97,devlake,jenkins:JenkinsBuild:1: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,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir [...]
diff --git a/plugins/jenkins/e2e/snapshot_tables/cicd_tasks_after_stages.csv b/plugins/jenkins/e2e/snapshot_tables/cicd_tasks_after_stages.csv
index ba12d5ef..d20d39bb 100644
--- a/plugins/jenkins/e2e/snapshot_tables/cicd_tasks_after_stages.csv
+++ b/plugins/jenkins/e2e/snapshot_tables/cicd_tasks_after_stages.csv
@@ -1,17 +1,17 @@
-id,name,pipeline_id,result,status,type,duration_sec,started_date,finished_date,environment,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
-jenkins:JenkinsStage:1:Auto Init Gitlab #1:12,gitlabInit,jenkins:JenkinsBuild:1:Auto Init Gitlab #1,,IN_PROGRESS,,0,1970-01-01T00:00:00.000+00:00,2020-03-04T13:47:24.000+00:00,,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,13574,
-jenkins:JenkinsStage:1:Auto Init Gitlab #18:6,gitlabInit,jenkins:JenkinsBuild:1:Auto Init Gitlab #18,,IN_PROGRESS,,215,1970-01-01T00:03:35.000+00:00,2020-03-17T15:30:50.000+00:00,,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,13575,
-jenkins:JenkinsStage:1:Auto Init Gitlab #19:2,gitlabInit,jenkins:JenkinsBuild:1:Auto Init Gitlab #19,,IN_PROGRESS,,5,1970-01-01T00:00:05.000+00:00,2020-03-18T02:19:22.000+00:00,,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,13580,
-jenkins:JenkinsStage:1:Auto Init Gitlab #19:7,gitlabInit,jenkins:JenkinsBuild:1:Auto Init Gitlab #19,,IN_PROGRESS,,5,1970-01-01T00:00:05.000+00:00,2020-03-18T02:19:22.000+00:00,,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,13576,
-jenkins:JenkinsStage:1:Auto Init Gitlab #23:4,gitlabInit,jenkins:JenkinsBuild:1:Auto Init Gitlab #23,,IN_PROGRESS,,248,1970-01-01T00:04:08.000+00:00,2020-11-19T06:31:57.000+00:00,,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,13582,
-jenkins:JenkinsStage:1:Auto Init Gitlab #58:9,gitlabInit,jenkins:JenkinsBuild:1:Auto Init Gitlab #58,,IN_PROGRESS,,1312,1970-01-01T00:21:52.000+00:00,2021-03-09T13:57:02.000+00:00,,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,13578,
-jenkins:JenkinsStage:1:Pipeline expirement #5:8,scp-f/b,jenkins:JenkinsBuild:1:Pipeline expirement #5,,IN_PROGRESS,,0,1970-01-01T00:00:00.000+00:00,2019-10-29T04:01:34.000+00:00,,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,13577,
-jenkins:JenkinsStage:1:pipeline-test2 #1:10,Hello,jenkins:JenkinsBuild:1:pipeline-test2 #1,SUCCESS,DONE,,0,1970-01-01T00:00:00.000+00:00,2022-09-08T15:40:17.000+00:00,,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,5,
-jenkins:JenkinsStage:1:pipeline-test2 #1:9,Hello,jenkins:JenkinsBuild:1:pipeline-test2 #1,SUCCESS,DONE,,0,1970-01-01T00:00:00.000+00:00,2022-09-08T15:40:17.000+00:00,,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,4,
-jenkins:JenkinsStage:1:pipeline-test2 #2:11,Hello,jenkins:JenkinsBuild:1:pipeline-test2 #2,SUCCESS,DONE,,0,1970-01-01T00:00:00.000+00:00,2022-09-08T15:40:34.000+00:00,,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,6,
-jenkins:JenkinsStage:1:pipeline-test2 #2:6,Hello,jenkins:JenkinsBuild:1:pipeline-test2 #2,SUCCESS,DONE,,0,1970-01-01T00:00:00.000+00:00,2022-09-08T15:40:34.000+00:00,,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,1,
-jenkins:JenkinsStage:1:pipeline-test2 #3:7,Hello,jenkins:JenkinsBuild:1:pipeline-test2 #3,SUCCESS,DONE,,0,1970-01-01T00:00:00.000+00:00,2022-09-08T15:40:49.000+00:00,,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,2,
-jenkins:JenkinsStage:1:pipeline-test2 #3:8,Hello,jenkins:JenkinsBuild:1:pipeline-test2 #3,SUCCESS,DONE,,0,1970-01-01T00:00:00.000+00:00,2022-09-08T15:40:49.000+00:00,,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,3,
-jenkins:JenkinsStage:1:Test Gitlab Sync #10:5,gitlabAutoSync,jenkins:JenkinsBuild:1:Test Gitlab Sync #10,SUCCESS,DONE,,86,1970-01-01T00:01:26.000+00:00,2020-03-12T02:46:46.000+00:00,,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,13583,
-jenkins:JenkinsStage:1:Test Gitlab Sync #12:3,gitlabAutoSync,jenkins:JenkinsBuild:1:Test Gitlab Sync #12,SUCCESS,DONE,,83,1970-01-01T00:01:23.000+00:00,2020-03-12T02:46:48.000+00:00,,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,13581,
-jenkins:JenkinsStage:1:Test Gitlab Sync #3:1,gitlabAutoSync,jenkins:JenkinsBuild:1:Test Gitlab Sync #3,SUCCESS,DONE,,14,1970-01-01T00:00:14.000+00:00,2020-02-07T11:54:42.000+00:00,,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,13579,
+id,name,pipeline_id,result,status,type,duration_sec,started_date,finished_date,environment,cicd_scope_id,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
+jenkins:JenkinsStage:1:Auto Init Gitlab #1:12,gitlabInit,jenkins:JenkinsBuild:1:Auto Init Gitlab #1,,IN_PROGRESS,,0,1970-01-01T00:00:00.000+00:00,2020-03-04T13:47:24.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,13574,
+jenkins:JenkinsStage:1:Auto Init Gitlab #18:6,gitlabInit,jenkins:JenkinsBuild:1:Auto Init Gitlab #18,,IN_PROGRESS,,215,1970-01-01T00:03:35.000+00:00,2020-03-17T15:30:50.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,13575,
+jenkins:JenkinsStage:1:Auto Init Gitlab #19:2,gitlabInit,jenkins:JenkinsBuild:1:Auto Init Gitlab #19,,IN_PROGRESS,,5,1970-01-01T00:00:05.000+00:00,2020-03-18T02:19:22.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,13580,
+jenkins:JenkinsStage:1:Auto Init Gitlab #19:7,gitlabInit,jenkins:JenkinsBuild:1:Auto Init Gitlab #19,,IN_PROGRESS,,5,1970-01-01T00:00:05.000+00:00,2020-03-18T02:19:22.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,13576,
+jenkins:JenkinsStage:1:Auto Init Gitlab #23:4,gitlabInit,jenkins:JenkinsBuild:1:Auto Init Gitlab #23,,IN_PROGRESS,,248,1970-01-01T00:04:08.000+00:00,2020-11-19T06:31:57.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,13582,
+jenkins:JenkinsStage:1:Auto Init Gitlab #58:9,gitlabInit,jenkins:JenkinsBuild:1:Auto Init Gitlab #58,,IN_PROGRESS,,1312,1970-01-01T00:21:52.000+00:00,2021-03-09T13:57:02.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,13578,
+jenkins:JenkinsStage:1:Pipeline expirement #5:8,scp-f/b,jenkins:JenkinsBuild:1:Pipeline expirement #5,,IN_PROGRESS,,0,1970-01-01T00:00:00.000+00:00,2019-10-29T04:01:34.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,13577,
+jenkins:JenkinsStage:1:pipeline-test2 #1:10,Hello,jenkins:JenkinsBuild:1:pipeline-test2 #1,SUCCESS,DONE,,0,1970-01-01T00:00:00.000+00:00,2022-09-08T15:40:17.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,5,
+jenkins:JenkinsStage:1:pipeline-test2 #1:9,Hello,jenkins:JenkinsBuild:1:pipeline-test2 #1,SUCCESS,DONE,,0,1970-01-01T00:00:00.000+00:00,2022-09-08T15:40:17.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,4,
+jenkins:JenkinsStage:1:pipeline-test2 #2:11,Hello,jenkins:JenkinsBuild:1:pipeline-test2 #2,SUCCESS,DONE,,0,1970-01-01T00:00:00.000+00:00,2022-09-08T15:40:34.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,6,
+jenkins:JenkinsStage:1:pipeline-test2 #2:6,Hello,jenkins:JenkinsBuild:1:pipeline-test2 #2,SUCCESS,DONE,,0,1970-01-01T00:00:00.000+00:00,2022-09-08T15:40:34.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,1,
+jenkins:JenkinsStage:1:pipeline-test2 #3:7,Hello,jenkins:JenkinsBuild:1:pipeline-test2 #3,SUCCESS,DONE,,0,1970-01-01T00:00:00.000+00:00,2022-09-08T15:40:49.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,2,
+jenkins:JenkinsStage:1:pipeline-test2 #3:8,Hello,jenkins:JenkinsBuild:1:pipeline-test2 #3,SUCCESS,DONE,,0,1970-01-01T00:00:00.000+00:00,2022-09-08T15:40:49.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,3,
+jenkins:JenkinsStage:1:Test Gitlab Sync #10:5,gitlabAutoSync,jenkins:JenkinsBuild:1:Test Gitlab Sync #10,SUCCESS,DONE,,86,1970-01-01T00:01:26.000+00:00,2020-03-12T02:46:46.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,13583,
+jenkins:JenkinsStage:1:Test Gitlab Sync #12:3,gitlabAutoSync,jenkins:JenkinsBuild:1:Test Gitlab Sync #12,SUCCESS,DONE,,83,1970-01-01T00:01:23.000+00:00,2020-03-12T02:46:48.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,13581,
+jenkins:JenkinsStage:1:Test Gitlab Sync #3:1,gitlabAutoSync,jenkins:JenkinsBuild:1:Test Gitlab Sync #3,SUCCESS,DONE,,14,1970-01-01T00:00:14.000+00:00,2020-02-07T11:54:42.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake,"{""ConnectionId"":1,""JobName"":""devlake"",""JobPath"":""job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/""}",_raw_jenkins_api_stages,13579,
diff --git a/plugins/jenkins/e2e/stages_test.go b/plugins/jenkins/e2e/stages_test.go
index d71cafb0..3976695c 100644
--- a/plugins/jenkins/e2e/stages_test.go
+++ b/plugins/jenkins/e2e/stages_test.go
@@ -37,6 +37,7 @@ func TestJenkinsStagesDataFlow(t *testing.T) {
 			JobName:      `devlake`,
 			JobPath:      `job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/`,
 		},
+		Job: &models.JenkinsJob{FullName: "Test-jenkins-dir » test-jenkins-sub-dir » test-sub-sub-dir » devlake"},
 	}
 
 	// import raw data table
@@ -85,6 +86,7 @@ func TestJenkinsStagesDataFlow(t *testing.T) {
 			"started_date",
 			"finished_date",
 			"environment",
+			"cicd_scope_id",
 		),
 	)
 }
diff --git a/plugins/jenkins/impl/impl.go b/plugins/jenkins/impl/impl.go
index b0814c69..34b58911 100644
--- a/plugins/jenkins/impl/impl.go
+++ b/plugins/jenkins/impl/impl.go
@@ -68,6 +68,7 @@ func (plugin Jenkins) SubTaskMetas() []core.SubTaskMeta {
 	return []core.SubTaskMeta{
 		tasks.CollectApiJobsMeta,
 		tasks.ExtractApiJobsMeta,
+		tasks.ConvertJobsMeta,
 		tasks.CollectApiBuildsMeta,
 		tasks.ExtractApiBuildsMeta,
 		tasks.CollectApiStagesMeta,
diff --git a/plugins/jenkins/models/job.go b/plugins/jenkins/models/job.go
index 2f2a06e2..075bfa9f 100644
--- a/plugins/jenkins/models/job.go
+++ b/plugins/jenkins/models/job.go
@@ -26,7 +26,7 @@ type JenkinsJob struct {
 	ConnectionId uint64 `gorm:"primaryKey"`
 	FullName     string `gorm:"primaryKey;type:varchar(255)"`
 	Name         string `gorm:"index;type:varchar(255)"`
-	Path         string `gorm:"primaryKey;type:varchar(511)"`
+	Path         string `gorm:"index;type:varchar(511)"`
 	Class        string `gorm:"type:varchar(255)"`
 	Color        string `gorm:"type:varchar(255)"`
 	Base         string `gorm:"type:varchar(255)"`
diff --git a/plugins/jenkins/models/migrationscripts/20221110_change_index_of_job_path.go b/plugins/jenkins/models/migrationscripts/20221110_change_index_of_job_path.go
new file mode 100644
index 00000000..ccd0c2d9
--- /dev/null
+++ b/plugins/jenkins/models/migrationscripts/20221110_change_index_of_job_path.go
@@ -0,0 +1,95 @@
+/*
+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/errors"
+	"github.com/apache/incubator-devlake/helpers/migrationhelper"
+	"github.com/apache/incubator-devlake/models/migrationscripts/archived"
+	"github.com/apache/incubator-devlake/plugins/core"
+)
+
+type changeIndexOfJobPath struct{}
+
+type jenkinsJob20221110Before struct {
+	ConnectionId uint64 `gorm:"primaryKey"`
+	FullName     string `gorm:"primaryKey;type:varchar(255)"`
+	Name         string `gorm:"index;type:varchar(255)"`
+	Path         string `gorm:"primaryKey;type:varchar(511)"`
+	Class        string `gorm:"type:varchar(255)"`
+	Color        string `gorm:"type:varchar(255)"`
+	Base         string `gorm:"type:varchar(255)"`
+	Url          string
+	Description  string
+	PrimaryView  string `gorm:"type:varchar(255)"`
+	archived.NoPKModel
+}
+
+func (jenkinsJob20221110Before) TableName() string {
+	return "_tool_jenkins_jobs"
+}
+
+type jenkinsJob20221110After struct {
+	ConnectionId uint64 `gorm:"primaryKey"`
+	FullName     string `gorm:"primaryKey;type:varchar(255)"`
+	Name         string `gorm:"index;type:varchar(255)"`
+	Path         string `gorm:"index;type:varchar(511)"`
+	Class        string `gorm:"type:varchar(255)"`
+	Color        string `gorm:"type:varchar(255)"`
+	Base         string `gorm:"type:varchar(255)"`
+	Url          string
+	Description  string
+	PrimaryView  string `gorm:"type:varchar(255)"`
+	archived.NoPKModel
+}
+
+func (jenkinsJob20221110After) TableName() string {
+	return "_tool_jenkins_jobs"
+}
+
+func (script *changeIndexOfJobPath) Up(basicRes core.BasicRes) errors.Error {
+	return migrationhelper.TransformTable(
+		basicRes,
+		script,
+		"_tool_jenkins_jobs",
+		func(s *jenkinsJob20221110Before) (*jenkinsJob20221110After, errors.Error) {
+			dst := &jenkinsJob20221110After{
+				ConnectionId: s.ConnectionId,
+				FullName:     s.FullName,
+				Name:         s.Name,
+				Path:         s.Path,
+				Class:        s.Class,
+				Color:        s.Color,
+				Base:         s.Base,
+				Url:          s.Url,
+				Description:  s.Description,
+				PrimaryView:  s.PrimaryView,
+				NoPKModel:    s.NoPKModel,
+			}
+			return dst, nil
+		},
+	)
+}
+
+func (*changeIndexOfJobPath) Version() uint64 {
+	return 20221110231237
+}
+
+func (*changeIndexOfJobPath) Name() string {
+	return "add url to jenkinsJob"
+}
diff --git a/plugins/jenkins/models/migrationscripts/register.go b/plugins/jenkins/models/migrationscripts/register.go
index 9642b2a6..8d607959 100644
--- a/plugins/jenkins/models/migrationscripts/register.go
+++ b/plugins/jenkins/models/migrationscripts/register.go
@@ -29,5 +29,6 @@ func All() []core.MigrationScript {
 		new(modifyJenkinsBuild),
 		new(addJobFields),
 		new(addJobPathForBuilds),
+		new(changeIndexOfJobPath),
 	}
 }
diff --git a/plugins/jenkins/tasks/build_cicd_convertor.go b/plugins/jenkins/tasks/build_cicd_convertor.go
index 46296bd2..9710d433 100644
--- a/plugins/jenkins/tasks/build_cicd_convertor.go
+++ b/plugins/jenkins/tasks/build_cicd_convertor.go
@@ -66,6 +66,7 @@ func ConvertBuildsToCICD(taskCtx core.SubTaskContext) (err errors.Error) {
 	}
 	defer cursor.Close()
 	buildIdGen := didgen.NewDomainIdGenerator(&models.JenkinsBuild{})
+	jobIdGen := didgen.NewDomainIdGenerator(&models.JenkinsJob{})
 
 	converter, err := helper.NewDataConverter(helper.DataConverterArgs{
 		InputRowType: reflect.TypeOf(models.JenkinsBuild{}),
@@ -113,6 +114,7 @@ func ConvertBuildsToCICD(taskCtx core.SubTaskContext) (err errors.Error) {
 				FinishedDate: jenkinsPipelineFinishedDate,
 				DurationSec:  uint64(durationSec),
 				CreatedDate:  jenkinsBuild.StartTime,
+				CicdScopeId:  jobIdGen.Generate(jenkinsBuild.ConnectionId, data.Job.FullName),
 			}
 			jenkinsPipeline.RawDataOrigin = jenkinsBuild.RawDataOrigin
 			results = append(results, jenkinsPipeline)
@@ -129,6 +131,7 @@ func ConvertBuildsToCICD(taskCtx core.SubTaskContext) (err errors.Error) {
 					DurationSec:  uint64(durationSec),
 					StartedDate:  jenkinsBuild.StartTime,
 					FinishedDate: jenkinsPipelineFinishedDate,
+					CicdScopeId:  jobIdGen.Generate(jenkinsBuild.ConnectionId, data.Job.FullName),
 				}
 				if deployTagRegexp != nil {
 					if deployFlag := deployTagRegexp.FindString(jenkinsBuild.JobName); deployFlag != "" {
diff --git a/plugins/jenkins/tasks/job_convertor.go b/plugins/jenkins/tasks/job_convertor.go
new file mode 100644
index 00000000..764b392b
--- /dev/null
+++ b/plugins/jenkins/tasks/job_convertor.go
@@ -0,0 +1,90 @@
+/*
+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 tasks
+
+import (
+	"github.com/apache/incubator-devlake/errors"
+	"reflect"
+
+	"github.com/apache/incubator-devlake/models/domainlayer"
+	"github.com/apache/incubator-devlake/models/domainlayer/devops"
+	"github.com/apache/incubator-devlake/models/domainlayer/didgen"
+	"github.com/apache/incubator-devlake/plugins/core"
+	"github.com/apache/incubator-devlake/plugins/core/dal"
+	"github.com/apache/incubator-devlake/plugins/helper"
+	"github.com/apache/incubator-devlake/plugins/jenkins/models"
+)
+
+var ConvertJobsMeta = core.SubTaskMeta{
+	Name:             "convertJobs",
+	EntryPoint:       ConvertJobs,
+	EnabledByDefault: true,
+	Description:      "Convert tool layer table jenkins_jobs into  domain layer table jobs",
+	DomainTypes:      []string{core.DOMAIN_TYPE_CICD},
+}
+
+func ConvertJobs(taskCtx core.SubTaskContext) errors.Error {
+	db := taskCtx.GetDal()
+	data := taskCtx.GetData().(*JenkinsTaskData)
+
+	clauses := []dal.Clause{
+		dal.Select("*"),
+		dal.From("_tool_jenkins_jobs"),
+		dal.Where("connection_id = ?", data.Options.ConnectionId),
+	}
+	cursor, err := db.Cursor(clauses...)
+	if err != nil {
+		return err
+	}
+	defer cursor.Close()
+
+	jobIdGen := didgen.NewDomainIdGenerator(&models.JenkinsJob{})
+
+	converter, err := helper.NewDataConverter(helper.DataConverterArgs{
+		InputRowType: reflect.TypeOf(models.JenkinsJob{}),
+		Input:        cursor,
+		RawDataSubTaskArgs: helper.RawDataSubTaskArgs{
+			Params: JenkinsApiParams{
+				ConnectionId: data.Options.ConnectionId,
+				JobName:      data.Options.JobName,
+				JobPath:      data.Options.JobPath,
+			},
+			Ctx:   taskCtx,
+			Table: RAW_JOB_TABLE,
+		},
+		Convert: func(inputRow interface{}) ([]interface{}, errors.Error) {
+			jenkinsJob := inputRow.(*models.JenkinsJob)
+			job := &devops.CicdScope{
+				DomainEntity: domainlayer.DomainEntity{
+					Id: jobIdGen.Generate(jenkinsJob.ConnectionId, jenkinsJob.FullName),
+				},
+				Name:        jenkinsJob.FullName,
+				Description: jenkinsJob.Description,
+				Url:         jenkinsJob.Url,
+			}
+			return []interface{}{
+				job,
+			}, nil
+		},
+	})
+	if err != nil {
+		return err
+	}
+
+	return converter.Execute()
+}
diff --git a/plugins/jenkins/tasks/job_extractor.go b/plugins/jenkins/tasks/job_extractor.go
index 4d0ec5e7..1ef90e6e 100644
--- a/plugins/jenkins/tasks/job_extractor.go
+++ b/plugins/jenkins/tasks/job_extractor.go
@@ -80,7 +80,7 @@ func ExtractApiJobs(taskCtx core.SubTaskContext) errors.Error {
 				}
 				results = append(results, &upDownJob)
 			}
-
+			data.Job = job
 			results = append(results, job)
 
 			return results, nil
diff --git a/plugins/jenkins/tasks/stage_convertor.go b/plugins/jenkins/tasks/stage_convertor.go
index 66b3880b..027fb114 100644
--- a/plugins/jenkins/tasks/stage_convertor.go
+++ b/plugins/jenkins/tasks/stage_convertor.go
@@ -92,6 +92,8 @@ func ConvertStages(taskCtx core.SubTaskContext) (err errors.Error) {
 	defer cursor.Close()
 	stageIdGen := didgen.NewDomainIdGenerator(&models.JenkinsStage{})
 	buildIdGen := didgen.NewDomainIdGenerator(&models.JenkinsBuild{})
+	jobIdGen := didgen.NewDomainIdGenerator(&models.JenkinsJob{})
+
 	convertor, err := helper.NewDataConverter(helper.DataConverterArgs{
 		InputRowType: reflect.TypeOf(JenkinsBuildWithRepoStage{}),
 		Input:        cursor,
@@ -141,6 +143,7 @@ func ConvertStages(taskCtx core.SubTaskContext) (err errors.Error) {
 				DurationSec:  uint64(body.DurationMillis / 1000),
 				StartedDate:  time.Unix(durationSec, 0),
 				FinishedDate: jenkinsTaskFinishedDate,
+				CicdScopeId:  jobIdGen.Generate(body.ConnectionId, data.Job.FullName),
 			}
 			if deployTagRegexp != nil {
 				if deployFlag := deployTagRegexp.FindString(body.Name); deployFlag != "" {
diff --git a/plugins/jenkins/tasks/task_data.go b/plugins/jenkins/tasks/task_data.go
index d4de88bc..c76325bf 100644
--- a/plugins/jenkins/tasks/task_data.go
+++ b/plugins/jenkins/tasks/task_data.go
@@ -45,6 +45,7 @@ type JenkinsTaskData struct {
 	ApiClient  *helper.ApiAsyncClient
 	Connection *models.JenkinsConnection
 	Since      *time.Time
+	Job        *models.JenkinsJob
 }
 
 func DecodeAndValidateTaskOptions(options map[string]interface{}) (*JenkinsOptions, errors.Error) {