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

abeizn 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 d69a4f216 Change the type of `duration_sec` from int to float (#6465)
d69a4f216 is described below

commit d69a4f216cebca7cbf97aa45fff5b83844998ae4
Author: Lynwee <[email protected]>
AuthorDate: Thu Nov 16 11:30:21 2023 +0800

    Change the type of `duration_sec` from int to float (#6465)
    
    * style(db): fix typos
    
    * feat(db): make `duration_sec` field in all tables `float64` instead of 
`int64`
    
    * feat(db): add migration sciprt
    
    * fix(e2e): fix e2e test
---
 .../models/domainlayer/devops/cicd_deployment.go   |   2 +-
 .../domainlayer/devops/cicd_deployment_commit.go   |   2 +-
 .../models/domainlayer/devops/cicd_pipeline.go     |   2 +-
 .../core/models/domainlayer/devops/cicd_task.go    |   2 +-
 ...ipeline.go => 20220905_modify_cicd_pipeline.go} |   0
 ...cicd_tasks.go => 20220908_modify_cicd_tasks.go} |   0
 ...s_diffs.go => 20221109_modify_commits_diffs.go} |   0
 .../20231115_change_duration_sec_to_float64.go     | 139 +++++++++++++++++++++
 backend/core/models/migrationscripts/register.go   |   1 +
 backend/go.mod                                     |   2 +-
 backend/go.sum                                     |   2 +
 .../plugins/bamboo/tasks/deploy_build_convertor.go |   2 +-
 .../plugins/bamboo/tasks/job_build_convertor.go    |   2 +-
 .../plugins/bamboo/tasks/plan_build_convertor.go   |   2 +-
 .../bitbucket/tasks/deployment_convertor.go        |   4 +-
 .../plugins/bitbucket/tasks/pipeline_convertor.go  |   2 +-
 .../bitbucket/tasks/pipeline_steps_convertor.go    |   2 +-
 backend/plugins/circleci/models/job.go             |   2 +-
 backend/plugins/circleci/models/workflow.go        |   2 +-
 backend/plugins/circleci/tasks/job_extractor.go    |   2 +-
 .../plugins/circleci/tasks/workflow_extractor.go   |   2 +-
 .../dora/tasks/deployment_commits_generator.go     |   2 +-
 backend/plugins/github/tasks/cicd_job_convertor.go |   2 +-
 backend/plugins/github/tasks/cicd_run_convertor.go |   2 +-
 .../plugins/github/tasks/deployment_convertor.go   |   2 +-
 .../snapshot_tables/cicd_deployment_commits.csv    |  14 +--
 .../e2e/snapshot_tables/cicd_deployments.csv       |  14 +--
 .../gitlab/e2e/snapshot_tables/cicd_pipelines.csv  |  26 ++--
 .../gitlab/e2e/snapshot_tables/cicd_tasks.csv      |  80 ++++++------
 .../snapshot_tables/cicd_tasks_no_prod_regex.csv   |  80 ++++++------
 .../plugins/gitlab/tasks/deployment_convertor.go   |   6 +-
 backend/plugins/gitlab/tasks/job_convertor.go      |   2 +-
 backend/plugins/gitlab/tasks/pipeline_convertor.go |   2 +-
 .../jenkins/e2e/snapshot_tables/cicd_pipelines.csv |  26 ++--
 .../jenkins/e2e/snapshot_tables/cicd_tasks.csv     |  24 ++--
 .../snapshot_tables/cicd_tasks_after_stages.csv    |  28 ++---
 .../plugins/jenkins/tasks/build_cicd_convertor.go  |  15 ++-
 backend/plugins/jenkins/tasks/stage_convertor.go   |  13 +-
 backend/plugins/webhook/api/deployments.go         |   5 +-
 39 files changed, 332 insertions(+), 185 deletions(-)

diff --git a/backend/core/models/domainlayer/devops/cicd_deployment.go 
b/backend/core/models/domainlayer/devops/cicd_deployment.go
index 3eb864547..fb63d1dba 100644
--- a/backend/core/models/domainlayer/devops/cicd_deployment.go
+++ b/backend/core/models/domainlayer/devops/cicd_deployment.go
@@ -32,7 +32,7 @@ type CICDDeployment struct {
        CreatedDate  time.Time
        StartedDate  *time.Time
        FinishedDate *time.Time
-       DurationSec  *uint64
+       DurationSec  *float64
 }
 
 func (CICDDeployment) TableName() string {
diff --git a/backend/core/models/domainlayer/devops/cicd_deployment_commit.go 
b/backend/core/models/domainlayer/devops/cicd_deployment_commit.go
index e32001f3f..5d37448ad 100644
--- a/backend/core/models/domainlayer/devops/cicd_deployment_commit.go
+++ b/backend/core/models/domainlayer/devops/cicd_deployment_commit.go
@@ -34,7 +34,7 @@ type CicdDeploymentCommit struct {
        CreatedDate                   time.Time
        StartedDate                   *time.Time
        FinishedDate                  *time.Time
-       DurationSec                   *uint64
+       DurationSec                   *float64
        CommitSha                     string 
`gorm:"primaryKey;type:varchar(255)"`
        RefName                       string `gorm:"type:varchar(255)"` // to 
delete?
        RepoId                        string `gorm:"type:varchar(255)"`
diff --git a/backend/core/models/domainlayer/devops/cicd_pipeline.go 
b/backend/core/models/domainlayer/devops/cicd_pipeline.go
index e89ca228e..5bc4f3250 100644
--- a/backend/core/models/domainlayer/devops/cicd_pipeline.go
+++ b/backend/core/models/domainlayer/devops/cicd_pipeline.go
@@ -32,7 +32,7 @@ type CICDPipeline struct {
        Result       string `gorm:"type:varchar(100)"`
        Status       string `gorm:"type:varchar(100)"`
        Type         string `gorm:"type:varchar(100);comment: to indicate this 
is CI or CD"`
-       DurationSec  uint64
+       DurationSec  float64
        Environment  string `gorm:"type:varchar(255)"`
        CreatedDate  time.Time
        FinishedDate *time.Time
diff --git a/backend/core/models/domainlayer/devops/cicd_task.go 
b/backend/core/models/domainlayer/devops/cicd_task.go
index 6c925355f..8314d4cce 100644
--- a/backend/core/models/domainlayer/devops/cicd_task.go
+++ b/backend/core/models/domainlayer/devops/cicd_task.go
@@ -45,7 +45,7 @@ type CICDTask struct {
        Status       string `gorm:"type:varchar(100)"`
        Type         string `gorm:"type:varchar(100);comment: to indicate this 
is CI or CD"`
        Environment  string `gorm:"type:varchar(255)"`
-       DurationSec  uint64
+       DurationSec  float64
        StartedDate  time.Time
        FinishedDate *time.Time
        CicdScopeId  string `gorm:"index;type:varchar(255)"`
diff --git 
a/backend/core/models/migrationscripts/20220905_modfiy_cicd_pipeline.go 
b/backend/core/models/migrationscripts/20220905_modify_cicd_pipeline.go
similarity index 100%
rename from 
backend/core/models/migrationscripts/20220905_modfiy_cicd_pipeline.go
rename to backend/core/models/migrationscripts/20220905_modify_cicd_pipeline.go
diff --git a/backend/core/models/migrationscripts/20220908_modfiy_cicd_tasks.go 
b/backend/core/models/migrationscripts/20220908_modify_cicd_tasks.go
similarity index 100%
rename from backend/core/models/migrationscripts/20220908_modfiy_cicd_tasks.go
rename to backend/core/models/migrationscripts/20220908_modify_cicd_tasks.go
diff --git 
a/backend/core/models/migrationscripts/20221109_modfiy_commits_diffs.go 
b/backend/core/models/migrationscripts/20221109_modify_commits_diffs.go
similarity index 100%
rename from 
backend/core/models/migrationscripts/20221109_modfiy_commits_diffs.go
rename to backend/core/models/migrationscripts/20221109_modify_commits_diffs.go
diff --git 
a/backend/core/models/migrationscripts/20231115_change_duration_sec_to_float64.go
 
b/backend/core/models/migrationscripts/20231115_change_duration_sec_to_float64.go
new file mode 100644
index 000000000..69adb2ab3
--- /dev/null
+++ 
b/backend/core/models/migrationscripts/20231115_change_duration_sec_to_float64.go
@@ -0,0 +1,139 @@
+/*
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package migrationscripts
+
+import (
+       "github.com/apache/incubator-devlake/core/context"
+       "github.com/apache/incubator-devlake/core/dal"
+       "github.com/apache/incubator-devlake/core/errors"
+       "github.com/apache/incubator-devlake/core/plugin"
+       "github.com/apache/incubator-devlake/helpers/migrationhelper"
+)
+
+var _ plugin.MigrationScript = (*changeDurationSecToFloat64)(nil)
+
+type cicdDeployment2023115 struct {
+       DurationSec float64
+}
+
+func (cicdDeployment2023115) TableName() string {
+       return "cicd_deployments"
+}
+
+type cicdDeploymentCommit2023115 struct {
+       DurationSec float64
+}
+
+func (cicdDeploymentCommit2023115) TableName() string {
+       return "cicd_deployment_commits"
+}
+
+type cicdPipeline2023115 struct {
+       DurationSec float64
+}
+
+func (cicdPipeline2023115) TableName() string {
+       return "cicd_pipelines"
+}
+
+type cicdTask2023115 struct {
+       DurationSec float64
+}
+
+func (cicdTask2023115) TableName() string {
+       return "cicd_tasks"
+}
+
+type changeDurationSecToFloat64 struct{}
+
+func (u *changeDurationSecToFloat64) Up(basicRes context.BasicRes) 
errors.Error {
+       db := basicRes.GetDal()
+       if err := migrationhelper.ChangeColumnsType[cicdDeployment2023115](
+               basicRes,
+               u,
+               cicdDeployment2023115{}.TableName(),
+               []string{"duration_sec"},
+               func(tmpColumnParams []interface{}) errors.Error {
+                       return db.UpdateColumn(
+                               &cicdDeployment2023115{},
+                               "duration_sec",
+                               dal.DalClause{Expr: " ? ", Params: 
tmpColumnParams},
+                               dal.Where("? != 0", tmpColumnParams...),
+                       )
+               },
+       ); err != nil {
+               return err
+       }
+       if err := 
migrationhelper.ChangeColumnsType[cicdDeploymentCommit2023115](
+               basicRes,
+               u,
+               cicdDeploymentCommit2023115{}.TableName(),
+               []string{"duration_sec"},
+               func(tmpColumnParams []interface{}) errors.Error {
+                       return db.UpdateColumn(
+                               &cicdDeploymentCommit2023115{},
+                               "duration_sec",
+                               dal.DalClause{Expr: " ? ", Params: 
tmpColumnParams},
+                               dal.Where("? != 0", tmpColumnParams...),
+                       )
+               },
+       ); err != nil {
+               return err
+       }
+       if err := migrationhelper.ChangeColumnsType[cicdPipeline2023115](
+               basicRes,
+               u,
+               cicdPipeline2023115{}.TableName(),
+               []string{"duration_sec"},
+               func(tmpColumnParams []interface{}) errors.Error {
+                       return db.UpdateColumn(
+                               &cicdPipeline2023115{},
+                               "duration_sec",
+                               dal.DalClause{Expr: " ? ", Params: 
tmpColumnParams},
+                               dal.Where("? != 0", tmpColumnParams...),
+                       )
+               },
+       ); err != nil {
+               return err
+       }
+       if err := migrationhelper.ChangeColumnsType[cicdTask2023115](
+               basicRes,
+               u,
+               cicdTask2023115{}.TableName(),
+               []string{"duration_sec"},
+               func(tmpColumnParams []interface{}) errors.Error {
+                       return db.UpdateColumn(
+                               &cicdTask2023115{},
+                               "duration_sec",
+                               dal.DalClause{Expr: " ? ", Params: 
tmpColumnParams},
+                               dal.Where("? != 0", tmpColumnParams...),
+                       )
+               },
+       ); err != nil {
+               return err
+       }
+       return nil
+}
+
+func (*changeDurationSecToFloat64) Version() uint64 {
+       return 20231115170000
+}
+
+func (*changeDurationSecToFloat64) Name() string {
+       return "change duration_sec field to float64 in all related tables"
+}
diff --git a/backend/core/models/migrationscripts/register.go 
b/backend/core/models/migrationscripts/register.go
index 6e4e78c64..241b6af19 100644
--- a/backend/core/models/migrationscripts/register.go
+++ b/backend/core/models/migrationscripts/register.go
@@ -96,5 +96,6 @@ func All() []plugin.MigrationScript {
                new(addSyncPolicy),
                new(addIssueCustomArrayField),
                new(removePositionFromPullRequestComments),
+               new(changeDurationSecToFloat64),
        }
 }
diff --git a/backend/go.mod b/backend/go.mod
index 11f3c1b4c..a61d3ff2c 100644
--- a/backend/go.mod
+++ b/backend/go.mod
@@ -21,7 +21,7 @@ require (
        github.com/robfig/cron/v3 v3.0.0
        github.com/sirupsen/logrus v1.9.0
        github.com/spf13/afero v1.6.0 // indirect
-       github.com/spf13/cast v1.4.1
+       github.com/spf13/cast v1.5.1
        github.com/spf13/cobra v1.5.0
        github.com/spf13/viper v1.8.1
        github.com/stretchr/testify v1.8.3
diff --git a/backend/go.sum b/backend/go.sum
index b7aa2095f..9739816ad 100644
--- a/backend/go.sum
+++ b/backend/go.sum
@@ -592,6 +592,8 @@ github.com/spf13/cast v1.3.0/go.mod 
h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkU
 github.com/spf13/cast v1.3.1/go.mod 
h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
 github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA=
 github.com/spf13/cast v1.4.1/go.mod 
h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
+github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA=
+github.com/spf13/cast v1.5.1/go.mod 
h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48=
 github.com/spf13/cobra v0.0.5/go.mod 
h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=
 github.com/spf13/cobra v1.5.0 h1:X+jTBEBqF0bHN+9cSMgmfuvv2VHJ9ezmFNf9Y/XstYU=
 github.com/spf13/cobra v1.5.0/go.mod 
h1:dWXEIy2H428czQCjInthrTRUg7yKbok+2Qi/yBIJoUM=
diff --git a/backend/plugins/bamboo/tasks/deploy_build_convertor.go 
b/backend/plugins/bamboo/tasks/deploy_build_convertor.go
index 885206137..40b8adad0 100644
--- a/backend/plugins/bamboo/tasks/deploy_build_convertor.go
+++ b/backend/plugins/bamboo/tasks/deploy_build_convertor.go
@@ -140,7 +140,7 @@ func ConvertDeployBuilds(taskCtx plugin.SubTaskContext) 
errors.Error {
                                deploymentCommit.Environment = devops.PRODUCTION
                        }
                        if input.FinishedDate != nil && input.StartedDate != 
nil {
-                               duration := 
uint64(input.FinishedDate.Sub(*input.StartedDate).Seconds())
+                               duration := 
input.FinishedDate.Sub(*input.StartedDate).Seconds()
                                deploymentCommit.DurationSec = &duration
                        }
                        fakeRepoUrl, err := 
generateFakeRepoUrl(data.ApiClient.GetEndpoint(), input.RepositoryId)
diff --git a/backend/plugins/bamboo/tasks/job_build_convertor.go 
b/backend/plugins/bamboo/tasks/job_build_convertor.go
index d170d177e..89784a5d7 100644
--- a/backend/plugins/bamboo/tasks/job_build_convertor.go
+++ b/backend/plugins/bamboo/tasks/job_build_convertor.go
@@ -65,7 +65,7 @@ func ConvertJobBuilds(taskCtx plugin.SubTaskContext) 
errors.Error {
                        domainJobBuild := &devops.CICDTask{
                                DomainEntity: domainlayer.DomainEntity{Id: 
jobBuildIdGen.Generate(data.Options.ConnectionId, line.JobBuildKey)},
                                Name:         line.JobName,
-                               DurationSec:  
uint64(line.BuildDurationInSeconds),
+                               DurationSec:  
float64(line.BuildDurationInSeconds),
                                StartedDate:  *line.BuildStartedTime,
                                FinishedDate: line.BuildCompletedDate,
                                PipelineId:   
planBuildIdGen.Generate(data.Options.ConnectionId, line.PlanBuildKey),
diff --git a/backend/plugins/bamboo/tasks/plan_build_convertor.go 
b/backend/plugins/bamboo/tasks/plan_build_convertor.go
index ef235c87e..40e797d5c 100644
--- a/backend/plugins/bamboo/tasks/plan_build_convertor.go
+++ b/backend/plugins/bamboo/tasks/plan_build_convertor.go
@@ -64,7 +64,7 @@ func ConvertPlanBuilds(taskCtx plugin.SubTaskContext) 
errors.Error {
                        domainPlanBuild := &devops.CICDPipeline{
                                DomainEntity: domainlayer.DomainEntity{Id: 
planBuildIdGen.Generate(data.Options.ConnectionId, line.PlanBuildKey)},
                                Name:         line.GenerateCICDPipeLineName(),
-                               DurationSec:  
uint64(line.BuildDurationInSeconds),
+                               DurationSec:  
float64(line.BuildDurationInSeconds),
                                CreatedDate:  *line.BuildStartedTime,
                                FinishedDate: line.BuildCompletedDate,
                                CicdScopeId:  
planIdGen.Generate(data.Options.ConnectionId, data.Options.PlanKey),
diff --git a/backend/plugins/bitbucket/tasks/deployment_convertor.go 
b/backend/plugins/bitbucket/tasks/deployment_convertor.go
index da11e9dd7..b19512d93 100644
--- a/backend/plugins/bitbucket/tasks/deployment_convertor.go
+++ b/backend/plugins/bitbucket/tasks/deployment_convertor.go
@@ -75,9 +75,9 @@ func ConvertDeployments(taskCtx plugin.SubTaskContext) 
errors.Error {
                Convert: func(inputRow interface{}) ([]interface{}, 
errors.Error) {
                        bitbucketDeployment := 
inputRow.(*bitbucketDeploymentWithRefName)
 
-                       var duration *uint64
+                       var duration *float64
                        if bitbucketDeployment.CompletedOn != nil {
-                               d := 
uint64(bitbucketDeployment.CompletedOn.Sub(*bitbucketDeployment.StartedOn).Seconds())
+                               d := 
bitbucketDeployment.CompletedOn.Sub(*bitbucketDeployment.StartedOn).Seconds()
                                duration = &d
                        }
                        domainDeployCommit := &devops.CicdDeploymentCommit{
diff --git a/backend/plugins/bitbucket/tasks/pipeline_convertor.go 
b/backend/plugins/bitbucket/tasks/pipeline_convertor.go
index 219599f09..7132e753b 100644
--- a/backend/plugins/bitbucket/tasks/pipeline_convertor.go
+++ b/backend/plugins/bitbucket/tasks/pipeline_convertor.go
@@ -100,7 +100,7 @@ func ConvertPipelines(taskCtx plugin.SubTaskContext) 
errors.Error {
                                Type:         bitbucketPipeline.Type,
                                Environment:  bitbucketPipeline.Environment,
                                CreatedDate:  createdAt,
-                               DurationSec:  
bitbucketPipeline.DurationInSeconds,
+                               DurationSec:  
float64(bitbucketPipeline.DurationInSeconds),
                                FinishedDate: 
bitbucketPipeline.BitbucketCompleteOn,
                                CicdScopeId:  repoId,
                        }
diff --git a/backend/plugins/bitbucket/tasks/pipeline_steps_convertor.go 
b/backend/plugins/bitbucket/tasks/pipeline_steps_convertor.go
index 55baa8196..0eb10bb00 100644
--- a/backend/plugins/bitbucket/tasks/pipeline_steps_convertor.go
+++ b/backend/plugins/bitbucket/tasks/pipeline_steps_convertor.go
@@ -88,7 +88,7 @@ func ConvertPipelineSteps(taskCtx plugin.SubTaskContext) 
errors.Error {
                        // rebuild the FinishedDate
                        if domainTask.Status == devops.STATUS_DONE {
                                domainTask.FinishedDate = 
bitbucketPipelineStep.CompletedOn
-                               domainTask.DurationSec = 
uint64(bitbucketPipelineStep.DurationInSeconds)
+                               domainTask.DurationSec = 
float64(bitbucketPipelineStep.DurationInSeconds)
                        }
                        return []interface{}{
                                domainTask,
diff --git a/backend/plugins/circleci/models/job.go 
b/backend/plugins/circleci/models/job.go
index f0e18d77f..8de32dbeb 100644
--- a/backend/plugins/circleci/models/job.go
+++ b/backend/plugins/circleci/models/job.go
@@ -36,7 +36,7 @@ type CircleciJob struct {
        Type              string              `gorm:"type:varchar(100)" 
json:"type"`
        ApprovalRequestId string              `gorm:"type:varchar(100)" 
json:"approval_request_id"`
        StoppedAt         *common.Iso8601Time `json:"stopped_at"`
-       DurationSec       uint64              `json:"duration_sec"`
+       DurationSec       float64             `json:"duration_sec"`
        PipelineId        string              `gorm:"type:varchar(100)" 
json:"pipeline_id"`
 
        common.NoPKModel `swaggerignore:"true" json:"-" mapstructure:"-"`
diff --git a/backend/plugins/circleci/models/workflow.go 
b/backend/plugins/circleci/models/workflow.go
index a1e0bcf2c..f4e5e9f71 100644
--- a/backend/plugins/circleci/models/workflow.go
+++ b/backend/plugins/circleci/models/workflow.go
@@ -35,7 +35,7 @@ type CircleciWorkflow struct {
        PipelineNumber int64               `json:"pipeline_number"`
        CreatedAt      *common.Iso8601Time `json:"created_at"`
        StoppedAt      *common.Iso8601Time `json:"stopped_at"`
-       DurationSec    uint64              `json:"duration_sec"`
+       DurationSec    float64             `json:"duration_sec"`
 
        common.NoPKModel `swaggerignore:"true" json:"-" mapstructure:"-"`
 }
diff --git a/backend/plugins/circleci/tasks/job_extractor.go 
b/backend/plugins/circleci/tasks/job_extractor.go
index a7b89a1a0..f9ccc185b 100644
--- a/backend/plugins/circleci/tasks/job_extractor.go
+++ b/backend/plugins/circleci/tasks/job_extractor.go
@@ -58,7 +58,7 @@ func ExtractJobs(taskCtx plugin.SubTaskContext) errors.Error {
                        if userRes.StartedAt != nil && userRes.StoppedAt != nil 
{
                                startTime := userRes.StartedAt.ToTime()
                                stopTime := userRes.StoppedAt.ToTime()
-                               toolL.DurationSec = 
uint64(stopTime.Sub(startTime).Seconds())
+                               toolL.DurationSec = 
stopTime.Sub(startTime).Seconds()
                        }
                        return []interface{}{
                                &toolL,
diff --git a/backend/plugins/circleci/tasks/workflow_extractor.go 
b/backend/plugins/circleci/tasks/workflow_extractor.go
index 3e1161c8d..603847b3c 100644
--- a/backend/plugins/circleci/tasks/workflow_extractor.go
+++ b/backend/plugins/circleci/tasks/workflow_extractor.go
@@ -51,7 +51,7 @@ func ExtractWorkflows(taskCtx plugin.SubTaskContext) 
errors.Error {
                        if userRes.CreatedAt != nil && userRes.StoppedAt != nil 
{
                                startTime := userRes.CreatedAt.ToTime()
                                endTime := userRes.StoppedAt.ToTime()
-                               toolL.DurationSec = 
uint64(endTime.Sub(startTime).Seconds())
+                               toolL.DurationSec = 
endTime.Sub(startTime).Seconds()
                        }
                        return []interface{}{
                                &toolL,
diff --git a/backend/plugins/dora/tasks/deployment_commits_generator.go 
b/backend/plugins/dora/tasks/deployment_commits_generator.go
index 34237e141..7061313b3 100644
--- a/backend/plugins/dora/tasks/deployment_commits_generator.go
+++ b/backend/plugins/dora/tasks/deployment_commits_generator.go
@@ -43,7 +43,7 @@ type pipelineCommitEx struct {
        PipelineName       string
        Result             string
        Status             string
-       DurationSec        *uint64
+       DurationSec        *float64
        CreatedDate        *time.Time
        FinishedDate       *time.Time
        Environment        string
diff --git a/backend/plugins/github/tasks/cicd_job_convertor.go 
b/backend/plugins/github/tasks/cicd_job_convertor.go
index 1b48ef160..7be00b0c7 100644
--- a/backend/plugins/github/tasks/cicd_job_convertor.go
+++ b/backend/plugins/github/tasks/cicd_job_convertor.go
@@ -109,7 +109,7 @@ func ConvertJobs(taskCtx plugin.SubTaskContext) (err 
errors.Error) {
                        }
 
                        if domainJob.Status == devops.STATUS_DONE {
-                               domainJob.DurationSec = 
uint64(line.CompletedAt.Sub(*line.StartedAt).Seconds())
+                               domainJob.DurationSec = 
line.CompletedAt.Sub(*line.StartedAt).Seconds()
                        }
 
                        return []interface{}{
diff --git a/backend/plugins/github/tasks/cicd_run_convertor.go 
b/backend/plugins/github/tasks/cicd_run_convertor.go
index d6967e865..a6b08e5eb 100644
--- a/backend/plugins/github/tasks/cicd_run_convertor.go
+++ b/backend/plugins/github/tasks/cicd_run_convertor.go
@@ -109,7 +109,7 @@ func ConvertRuns(taskCtx plugin.SubTaskContext) 
errors.Error {
                                }, line.Status),
                        }
                        if domainPipeline.Status == devops.STATUS_DONE {
-                               domainPipeline.DurationSec = 
uint64(line.GithubUpdatedAt.Sub(*line.GithubCreatedAt).Seconds())
+                               domainPipeline.DurationSec = 
line.GithubUpdatedAt.Sub(*line.GithubCreatedAt).Seconds()
                        }
 
                        domainPipelineCommit := &devops.CiCDPipelineCommit{
diff --git a/backend/plugins/github/tasks/deployment_convertor.go 
b/backend/plugins/github/tasks/deployment_convertor.go
index fa49b913a..7047b6862 100644
--- a/backend/plugins/github/tasks/deployment_convertor.go
+++ b/backend/plugins/github/tasks/deployment_convertor.go
@@ -95,7 +95,7 @@ func ConvertDeployment(taskCtx plugin.SubTaskContext) 
errors.Error {
                                RepoUrl:      githubDeployment.RepositoryUrl,
                        }
 
-                       durationSec := 
uint64(githubDeployment.UpdatedDate.Sub(githubDeployment.CreatedDate).Seconds())
+                       durationSec := 
githubDeployment.UpdatedDate.Sub(githubDeployment.CreatedDate).Seconds()
                        deploymentCommit.DurationSec = &durationSec
 
                        if data.RegexEnricher != nil {
diff --git 
a/backend/plugins/gitlab/e2e/snapshot_tables/cicd_deployment_commits.csv 
b/backend/plugins/gitlab/e2e/snapshot_tables/cicd_deployment_commits.csv
index 507dc7072..6939cd9e0 100644
--- a/backend/plugins/gitlab/e2e/snapshot_tables/cicd_deployment_commits.csv
+++ b/backend/plugins/gitlab/e2e/snapshot_tables/cicd_deployment_commits.csv
@@ -1,9 +1,9 @@
 
id,commit_sha,cicd_scope_id,cicd_deployment_id,name,result,status,environment,created_date,started_date,finished_date,duration_sec,ref_name,repo_id,repo_url,prev_success_deployment_commit_id
-gitlab:GitlabDeployment:1:12345678:13426753,add237f6852e6108ee8e0246780a54ce909c6087,gitlab:GitlabProject:1:12345678,gitlab:GitlabDeployment:1:12345678:13426753,test_deploy_vdev:13426753,SUCCESS,DONE,staging,2019-03-13T14:14:24.109+00:00,2019-03-13T14:17:33.559+00:00,2019-03-13T14:17:47.640+00:00,14,master,gitlab:GitlabProject:1:12345678,https://gitlab.com/gitlab-data/snowflake_spend,
-gitlab:GitlabDeployment:1:12345678:13432654,8373d207f0f2cc4414c4b1ad359b5af56e979d59,gitlab:GitlabProject:1:12345678,gitlab:GitlabDeployment:1:12345678:13432654,test_deploy_vdev:13432654,SUCCESS,DONE,staging,2019-03-13T14:53:48.148+00:00,2019-03-13T14:57:46.441+00:00,2019-03-13T14:57:58.845+00:00,12,master,gitlab:GitlabProject:1:12345678,https://gitlab.com/gitlab-data/snowflake_spend,
+gitlab:GitlabDeployment:1:12345678:13426753,add237f6852e6108ee8e0246780a54ce909c6087,gitlab:GitlabProject:1:12345678,gitlab:GitlabDeployment:1:12345678:13426753,test_deploy_vdev:13426753,SUCCESS,DONE,staging,2019-03-13T14:14:24.109+00:00,2019-03-13T14:17:33.559+00:00,2019-03-13T14:17:47.640+00:00,14.080506,master,gitlab:GitlabProject:1:12345678,https://gitlab.com/gitlab-data/snowflake_spend,
+gitlab:GitlabDeployment:1:12345678:13432654,8373d207f0f2cc4414c4b1ad359b5af56e979d59,gitlab:GitlabProject:1:12345678,gitlab:GitlabDeployment:1:12345678:13432654,test_deploy_vdev:13432654,SUCCESS,DONE,staging,2019-03-13T14:53:48.148+00:00,2019-03-13T14:57:46.441+00:00,2019-03-13T14:57:58.845+00:00,12.403719,master,gitlab:GitlabProject:1:12345678,https://gitlab.com/gitlab-data/snowflake_spend,
 
gitlab:GitlabDeployment:1:12345678:13432768,35c3a3d82586fa0bcdb2a73b812081ece4e83429,gitlab:GitlabProject:1:12345678,gitlab:GitlabDeployment:1:12345678:13432768,test_deploy_vdev:13432768,FAILURE,DONE,staging,2019-03-13T14:55:21.182+00:00,,,,master,gitlab:GitlabProject:1:12345678,https://gitlab.com/gitlab-data/snowflake_spend,
-gitlab:GitlabDeployment:1:12345678:13436532,35c3a3d82586fa0bcdb2a73b812081ece4e83429,gitlab:GitlabProject:1:12345678,gitlab:GitlabDeployment:1:12345678:13436532,deploy_vdev:13436532,FAILURE,DONE,production,2019-03-13T15:21:00.302+00:00,2019-03-13T15:21:07.335+00:00,2019-03-13T15:21:27.825+00:00,20,deploy,gitlab:GitlabProject:1:12345678,https://gitlab.com/gitlab-data/snowflake_spend,
-gitlab:GitlabDeployment:1:12345678:13436763,fc449afa34b6732752d2c8ca117833e8cc1226dc,gitlab:GitlabProject:1:12345678,gitlab:GitlabDeployment:1:12345678:13436763,deploy_vdev:13436763,,OTHER,production,2019-03-13T15:23:35.859+00:00,2019-03-13T15:23:40.064+00:00,2019-03-13T15:23:55.970+00:00,15,deploy,gitlab:GitlabProject:1:12345678,https://gitlab.com/gitlab-data/snowflake_spend,
-gitlab:GitlabDeployment:1:12345678:13436778,fc449afa34b6732752d2c8ca117833e8cc1226dc,gitlab:GitlabProject:1:12345678,gitlab:GitlabDeployment:1:12345678:13436778,test_deploy_vdev:13436778,,IN_PROGRESS,staging,2019-03-13T15:23:52.979+00:00,,2019-03-13T15:25:41.412+00:00,108,master,gitlab:GitlabProject:1:12345678,https://gitlab.com/gitlab-data/snowflake_spend,
-gitlab:GitlabDeployment:1:12345678:13436915,d8e7440fc02b62064624c788f4e4da19ca7be198,gitlab:GitlabProject:1:12345678,gitlab:GitlabDeployment:1:12345678:13436915,test_deploy_vdev:13436915,,OTHER,staging,2019-03-13T15:25:15.583+00:00,,2019-03-13T15:28:32.934+00:00,197,master,gitlab:GitlabProject:1:12345678,https://gitlab.com/gitlab-data/snowflake_spend,
-gitlab:GitlabDeployment:1:12345678:13436986,d8e7440fc02b62064624c788f4e4da19ca7be198,gitlab:GitlabProject:1:12345678,gitlab:GitlabDeployment:1:12345678:13436986,deploy_vdev:13436986,,OTHER,production,2019-03-13T15:25:46.042+00:00,2019-03-13T15:26:19.170+00:00,2019-03-13T15:26:37.468+00:00,18,deploy,gitlab:GitlabProject:1:12345678,https://gitlab.com/gitlab-data/snowflake_spend,
+gitlab:GitlabDeployment:1:12345678:13436532,35c3a3d82586fa0bcdb2a73b812081ece4e83429,gitlab:GitlabProject:1:12345678,gitlab:GitlabDeployment:1:12345678:13436532,deploy_vdev:13436532,FAILURE,DONE,production,2019-03-13T15:21:00.302+00:00,2019-03-13T15:21:07.335+00:00,2019-03-13T15:21:27.825+00:00,20.489227,deploy,gitlab:GitlabProject:1:12345678,https://gitlab.com/gitlab-data/snowflake_spend,
+gitlab:GitlabDeployment:1:12345678:13436763,fc449afa34b6732752d2c8ca117833e8cc1226dc,gitlab:GitlabProject:1:12345678,gitlab:GitlabDeployment:1:12345678:13436763,deploy_vdev:13436763,,OTHER,production,2019-03-13T15:23:35.859+00:00,2019-03-13T15:23:40.064+00:00,2019-03-13T15:23:55.970+00:00,15.905676,deploy,gitlab:GitlabProject:1:12345678,https://gitlab.com/gitlab-data/snowflake_spend,
+gitlab:GitlabDeployment:1:12345678:13436778,fc449afa34b6732752d2c8ca117833e8cc1226dc,gitlab:GitlabProject:1:12345678,gitlab:GitlabDeployment:1:12345678:13436778,test_deploy_vdev:13436778,,IN_PROGRESS,staging,2019-03-13T15:23:52.979+00:00,,2019-03-13T15:25:41.412+00:00,108.526,master,gitlab:GitlabProject:1:12345678,https://gitlab.com/gitlab-data/snowflake_spend,
+gitlab:GitlabDeployment:1:12345678:13436915,d8e7440fc02b62064624c788f4e4da19ca7be198,gitlab:GitlabProject:1:12345678,gitlab:GitlabDeployment:1:12345678:13436915,test_deploy_vdev:13436915,,OTHER,staging,2019-03-13T15:25:15.583+00:00,,2019-03-13T15:28:32.934+00:00,197.474,master,gitlab:GitlabProject:1:12345678,https://gitlab.com/gitlab-data/snowflake_spend,
+gitlab:GitlabDeployment:1:12345678:13436986,d8e7440fc02b62064624c788f4e4da19ca7be198,gitlab:GitlabProject:1:12345678,gitlab:GitlabDeployment:1:12345678:13436986,deploy_vdev:13436986,,OTHER,production,2019-03-13T15:25:46.042+00:00,2019-03-13T15:26:19.170+00:00,2019-03-13T15:26:37.468+00:00,18.298368,deploy,gitlab:GitlabProject:1:12345678,https://gitlab.com/gitlab-data/snowflake_spend,
diff --git a/backend/plugins/gitlab/e2e/snapshot_tables/cicd_deployments.csv 
b/backend/plugins/gitlab/e2e/snapshot_tables/cicd_deployments.csv
index 30d5d60b0..f2521b095 100644
--- a/backend/plugins/gitlab/e2e/snapshot_tables/cicd_deployments.csv
+++ b/backend/plugins/gitlab/e2e/snapshot_tables/cicd_deployments.csv
@@ -1,9 +1,9 @@
 
id,cicd_scope_id,name,result,status,environment,created_date,started_date,finished_date,duration_sec
-gitlab:GitlabDeployment:1:12345678:13426753,gitlab:GitlabProject:1:12345678,test_deploy_vdev:13426753,SUCCESS,DONE,staging,2019-03-13T14:14:24.109+00:00,2019-03-13T14:17:33.559+00:00,2019-03-13T14:17:47.640+00:00,14
-gitlab:GitlabDeployment:1:12345678:13432654,gitlab:GitlabProject:1:12345678,test_deploy_vdev:13432654,SUCCESS,DONE,staging,2019-03-13T14:53:48.148+00:00,2019-03-13T14:57:46.441+00:00,2019-03-13T14:57:58.845+00:00,12
+gitlab:GitlabDeployment:1:12345678:13426753,gitlab:GitlabProject:1:12345678,test_deploy_vdev:13426753,SUCCESS,DONE,staging,2019-03-13T14:14:24.109+00:00,2019-03-13T14:17:33.559+00:00,2019-03-13T14:17:47.640+00:00,14.080506
+gitlab:GitlabDeployment:1:12345678:13432654,gitlab:GitlabProject:1:12345678,test_deploy_vdev:13432654,SUCCESS,DONE,staging,2019-03-13T14:53:48.148+00:00,2019-03-13T14:57:46.441+00:00,2019-03-13T14:57:58.845+00:00,12.403719
 
gitlab:GitlabDeployment:1:12345678:13432768,gitlab:GitlabProject:1:12345678,test_deploy_vdev:13432768,FAILURE,DONE,staging,2019-03-13T14:55:21.182+00:00,,,
-gitlab:GitlabDeployment:1:12345678:13436532,gitlab:GitlabProject:1:12345678,deploy_vdev:13436532,FAILURE,DONE,production,2019-03-13T15:21:00.302+00:00,2019-03-13T15:21:07.335+00:00,2019-03-13T15:21:27.825+00:00,20
-gitlab:GitlabDeployment:1:12345678:13436763,gitlab:GitlabProject:1:12345678,deploy_vdev:13436763,,OTHER,production,2019-03-13T15:23:35.859+00:00,2019-03-13T15:23:40.064+00:00,2019-03-13T15:23:55.970+00:00,15
-gitlab:GitlabDeployment:1:12345678:13436778,gitlab:GitlabProject:1:12345678,test_deploy_vdev:13436778,,IN_PROGRESS,staging,2019-03-13T15:23:52.979+00:00,,2019-03-13T15:25:41.412+00:00,108
-gitlab:GitlabDeployment:1:12345678:13436915,gitlab:GitlabProject:1:12345678,test_deploy_vdev:13436915,,OTHER,staging,2019-03-13T15:25:15.583+00:00,,2019-03-13T15:28:32.934+00:00,197
-gitlab:GitlabDeployment:1:12345678:13436986,gitlab:GitlabProject:1:12345678,deploy_vdev:13436986,,OTHER,production,2019-03-13T15:25:46.042+00:00,2019-03-13T15:26:19.170+00:00,2019-03-13T15:26:37.468+00:00,18
+gitlab:GitlabDeployment:1:12345678:13436532,gitlab:GitlabProject:1:12345678,deploy_vdev:13436532,FAILURE,DONE,production,2019-03-13T15:21:00.302+00:00,2019-03-13T15:21:07.335+00:00,2019-03-13T15:21:27.825+00:00,20.489227
+gitlab:GitlabDeployment:1:12345678:13436763,gitlab:GitlabProject:1:12345678,deploy_vdev:13436763,,OTHER,production,2019-03-13T15:23:35.859+00:00,2019-03-13T15:23:40.064+00:00,2019-03-13T15:23:55.970+00:00,15.905676
+gitlab:GitlabDeployment:1:12345678:13436778,gitlab:GitlabProject:1:12345678,test_deploy_vdev:13436778,,IN_PROGRESS,staging,2019-03-13T15:23:52.979+00:00,,2019-03-13T15:25:41.412+00:00,108.526
+gitlab:GitlabDeployment:1:12345678:13436915,gitlab:GitlabProject:1:12345678,test_deploy_vdev:13436915,,OTHER,staging,2019-03-13T15:25:15.583+00:00,,2019-03-13T15:28:32.934+00:00,197.474
+gitlab:GitlabDeployment:1:12345678:13436986,gitlab:GitlabProject:1:12345678,deploy_vdev:13436986,,OTHER,production,2019-03-13T15:25:46.042+00:00,2019-03-13T15:26:19.170+00:00,2019-03-13T15:26:37.468+00:00,18.298368
diff --git a/backend/plugins/gitlab/e2e/snapshot_tables/cicd_pipelines.csv 
b/backend/plugins/gitlab/e2e/snapshot_tables/cicd_pipelines.csv
index e2afd6ab9..299840520 100644
--- a/backend/plugins/gitlab/e2e/snapshot_tables/cicd_pipelines.csv
+++ b/backend/plugins/gitlab/e2e/snapshot_tables/cicd_pipelines.csv
@@ -1,7 +1,7 @@
 
id,name,result,status,type,duration_sec,environment,created_date,finished_date,cicd_scope_id
 
gitlab:GitlabPipeline:1:457474837,gitlab:GitlabPipeline:1:457474837,,IN_PROGRESS,,0,,2022-01-27T10:07:09.429+00:00,,gitlab:GitlabProject:1:12345678
-gitlab:GitlabPipeline:1:457474996,gitlab:GitlabPipeline:1:457474996,FAILURE,DONE,,0,,2022-01-27T10:07:18.884+00:00,2022-01-27T10:07:19.043+00:00,gitlab:GitlabProject:1:12345678
-gitlab:GitlabPipeline:1:457475160,gitlab:GitlabPipeline:1:457475160,FAILURE,DONE,,0,,2022-01-27T10:07:26.435+00:00,2022-01-27T10:07:26.638+00:00,gitlab:GitlabProject:1:12345678
+gitlab:GitlabPipeline:1:457474996,gitlab:GitlabPipeline:1:457474996,FAILURE,DONE,,0.159,,2022-01-27T10:07:18.884+00:00,2022-01-27T10:07:19.043+00:00,gitlab:GitlabProject:1:12345678
+gitlab:GitlabPipeline:1:457475160,gitlab:GitlabPipeline:1:457475160,FAILURE,DONE,,0.203,,2022-01-27T10:07:26.435+00:00,2022-01-27T10:07:26.638+00:00,gitlab:GitlabProject:1:12345678
 
gitlab:GitlabPipeline:1:457475337,gitlab:GitlabPipeline:1:457475337,,IN_PROGRESS,,0,,2022-01-27T10:07:36.502+00:00,,gitlab:GitlabProject:1:12345678
 
gitlab:GitlabPipeline:1:485811050,gitlab:GitlabPipeline:1:485811050,FAILURE,DONE,DEPLOYMENT,0,PRODUCTION,2022-03-07T06:26:42.109+00:00,2022-03-07T06:26:42.109+00:00,gitlab:GitlabProject:1:12345678
 
gitlab:GitlabPipeline:1:485811059,gitlab:GitlabPipeline:1:485811059,FAILURE,DONE,,0,,2022-03-07T06:26:43.784+00:00,2022-03-07T06:26:43.784+00:00,gitlab:GitlabProject:1:12345678
@@ -9,17 +9,17 @@ 
gitlab:GitlabPipeline:1:485813816,gitlab:GitlabPipeline:1:485813816,FAILURE,DONE
 
gitlab:GitlabPipeline:1:485813830,gitlab:GitlabPipeline:1:485813830,FAILURE,DONE,,0,,2022-03-07T06:33:58.889+00:00,2022-03-07T06:33:58.889+00:00,gitlab:GitlabProject:1:12345678
 
gitlab:GitlabPipeline:1:485814501,gitlab:GitlabPipeline:1:485814501,FAILURE,DONE,DEPLOYMENT,0,PRODUCTION,2022-03-07T06:35:28.111+00:00,2022-03-07T06:35:28.111+00:00,gitlab:GitlabProject:1:12345678
 
gitlab:GitlabPipeline:1:485814516,gitlab:GitlabPipeline:1:485814516,FAILURE,DONE,,0,,2022-03-07T06:35:31.255+00:00,2022-03-07T06:35:31.255+00:00,gitlab:GitlabProject:1:12345678
-gitlab:GitlabPipeline:1:485814871,gitlab:GitlabPipeline:1:485814871,FAILURE,DONE,,42,,2022-03-07T06:36:50.020+00:00,2022-03-07T06:37:32.103+00:00,gitlab:GitlabProject:1:12345678
-gitlab:GitlabPipeline:1:485817670,gitlab:GitlabPipeline:1:485817670,FAILURE,DONE,,1956,,2022-03-07T06:45:09.471+00:00,2022-03-07T07:17:46.305+00:00,gitlab:GitlabProject:1:12345678
-gitlab:GitlabPipeline:1:485837602,gitlab:GitlabPipeline:1:485837602,FAILURE,DONE,,434,,2022-03-07T07:20:45.859+00:00,2022-03-07T07:28:00.277+00:00,gitlab:GitlabProject:1:12345678
-gitlab:GitlabPipeline:1:485842553,gitlab:GitlabPipeline:1:485842553,FAILURE,DONE,,287,,2022-03-07T07:30:47.018+00:00,2022-03-07T07:35:34.998+00:00,gitlab:GitlabProject:1:12345678
-gitlab:GitlabPipeline:1:485845850,gitlab:GitlabPipeline:1:485845850,FAILURE,DONE,,419,,2022-03-07T07:38:58.611+00:00,2022-03-07T07:45:58.412+00:00,gitlab:GitlabProject:1:12345678
-gitlab:GitlabPipeline:1:485852752,gitlab:GitlabPipeline:1:485852752,FAILURE,DONE,,319,,2022-03-07T07:46:09.385+00:00,2022-03-07T07:51:28.709+00:00,gitlab:GitlabProject:1:12345678
-gitlab:GitlabPipeline:1:485865876,gitlab:GitlabPipeline:1:485865876,FAILURE,DONE,,480,,2022-03-07T08:04:56.406+00:00,2022-03-07T08:12:56.453+00:00,gitlab:GitlabProject:1:12345678
-gitlab:GitlabPipeline:1:485877118,gitlab:GitlabPipeline:1:485877118,FAILURE,DONE,,289,,2022-03-07T08:22:48.943+00:00,2022-03-07T08:27:38.364+00:00,gitlab:GitlabProject:1:12345678
-gitlab:GitlabPipeline:1:485905167,gitlab:GitlabPipeline:1:485905167,FAILURE,DONE,,687,,2022-03-07T09:02:09.994+00:00,2022-03-07T09:13:37.013+00:00,gitlab:GitlabProject:1:12345678
-gitlab:GitlabPipeline:1:485932863,gitlab:GitlabPipeline:1:485932863,SUCCESS,DONE,,398,,2022-03-07T09:34:57.476+00:00,2022-03-07T09:41:36.267+00:00,gitlab:GitlabProject:1:12345678
-gitlab:GitlabPipeline:1:485932864,gitlab:GitlabPipeline:1:485932864,FAILURE,DONE,,398,,2022-03-07T09:34:57.476+00:00,2022-03-07T09:41:36.267+00:00,gitlab:GitlabProject:1:12345678
+gitlab:GitlabPipeline:1:485814871,gitlab:GitlabPipeline:1:485814871,FAILURE,DONE,,42.083,,2022-03-07T06:36:50.020+00:00,2022-03-07T06:37:32.103+00:00,gitlab:GitlabProject:1:12345678
+gitlab:GitlabPipeline:1:485817670,gitlab:GitlabPipeline:1:485817670,FAILURE,DONE,,1956.834,,2022-03-07T06:45:09.471+00:00,2022-03-07T07:17:46.305+00:00,gitlab:GitlabProject:1:12345678
+gitlab:GitlabPipeline:1:485837602,gitlab:GitlabPipeline:1:485837602,FAILURE,DONE,,434.418,,2022-03-07T07:20:45.859+00:00,2022-03-07T07:28:00.277+00:00,gitlab:GitlabProject:1:12345678
+gitlab:GitlabPipeline:1:485842553,gitlab:GitlabPipeline:1:485842553,FAILURE,DONE,,287.98,,2022-03-07T07:30:47.018+00:00,2022-03-07T07:35:34.998+00:00,gitlab:GitlabProject:1:12345678
+gitlab:GitlabPipeline:1:485845850,gitlab:GitlabPipeline:1:485845850,FAILURE,DONE,,419.801,,2022-03-07T07:38:58.611+00:00,2022-03-07T07:45:58.412+00:00,gitlab:GitlabProject:1:12345678
+gitlab:GitlabPipeline:1:485852752,gitlab:GitlabPipeline:1:485852752,FAILURE,DONE,,319.324,,2022-03-07T07:46:09.385+00:00,2022-03-07T07:51:28.709+00:00,gitlab:GitlabProject:1:12345678
+gitlab:GitlabPipeline:1:485865876,gitlab:GitlabPipeline:1:485865876,FAILURE,DONE,,480.047,,2022-03-07T08:04:56.406+00:00,2022-03-07T08:12:56.453+00:00,gitlab:GitlabProject:1:12345678
+gitlab:GitlabPipeline:1:485877118,gitlab:GitlabPipeline:1:485877118,FAILURE,DONE,,289.421,,2022-03-07T08:22:48.943+00:00,2022-03-07T08:27:38.364+00:00,gitlab:GitlabProject:1:12345678
+gitlab:GitlabPipeline:1:485905167,gitlab:GitlabPipeline:1:485905167,FAILURE,DONE,,687.019,,2022-03-07T09:02:09.994+00:00,2022-03-07T09:13:37.013+00:00,gitlab:GitlabProject:1:12345678
+gitlab:GitlabPipeline:1:485932863,gitlab:GitlabPipeline:1:485932863,SUCCESS,DONE,,398.791,,2022-03-07T09:34:57.476+00:00,2022-03-07T09:41:36.267+00:00,gitlab:GitlabProject:1:12345678
+gitlab:GitlabPipeline:1:485932864,gitlab:GitlabPipeline:1:485932864,FAILURE,DONE,,398.791,,2022-03-07T09:34:57.476+00:00,2022-03-07T09:41:36.267+00:00,gitlab:GitlabProject:1:12345678
 
gitlab:GitlabPipeline:1:485932865,gitlab:GitlabPipeline:1:485932865,,OTHER,,0,,2022-03-07T09:34:57.476+00:00,,gitlab:GitlabProject:1:12345678
 
gitlab:GitlabPipeline:1:485932866,gitlab:GitlabPipeline:1:485932866,,IN_PROGRESS,,0,,2022-03-07T09:34:57.476+00:00,,gitlab:GitlabProject:1:12345678
 
gitlab:GitlabPipeline:1:485932867,gitlab:GitlabPipeline:1:485932867,,IN_PROGRESS,,0,,2022-03-07T09:34:57.476+00:00,,gitlab:GitlabProject:1:12345678
diff --git a/backend/plugins/gitlab/e2e/snapshot_tables/cicd_tasks.csv 
b/backend/plugins/gitlab/e2e/snapshot_tables/cicd_tasks.csv
index 8abaed63d..e3c3499e2 100644
--- a/backend/plugins/gitlab/e2e/snapshot_tables/cicd_tasks.csv
+++ b/backend/plugins/gitlab/e2e/snapshot_tables/cicd_tasks.csv
@@ -1,25 +1,25 @@
 
id,name,pipeline_id,result,status,type,environment,duration_sec,started_date,finished_date,cicd_scope_id
-gitlab:GitlabJob:1:100,compile,gitlab:GitlabPipeline:1:24,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,2,2022-07-25T15:06:57.051+00:00,2022-07-25T15:06:59.885+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:101,format,gitlab:GitlabPipeline:1:25,SUCCESS,DONE,,,3,2022-07-25T15:13:37.206+00:00,2022-07-25T15:13:40.246+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:102,format,gitlab:GitlabPipeline:1:26,SUCCESS,DONE,,,2,2022-07-25T15:30:22.560+00:00,2022-07-25T15:30:25.315+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:103,format,gitlab:GitlabPipeline:1:27,SUCCESS,DONE,,,2,2022-07-25T15:30:55.671+00:00,2022-07-25T15:30:58.650+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:104,format,gitlab:GitlabPipeline:1:28,SUCCESS,DONE,,,2,2022-07-25T15:32:04.954+00:00,2022-07-25T15:32:07.726+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:105,compile,gitlab:GitlabPipeline:1:28,FAILURE,DONE,DEPLOYMENT,PRODUCTION,3,2022-07-25T15:32:07.953+00:00,2022-07-25T15:32:11.077+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:106,format,gitlab:GitlabPipeline:1:29,SUCCESS,DONE,,,2,2022-07-25T15:33:26.382+00:00,2022-07-25T15:33:29.356+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:107,format,gitlab:GitlabPipeline:1:30,SUCCESS,DONE,,,2,2022-07-25T15:34:23.665+00:00,2022-07-25T15:34:26.392+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:108,format,gitlab:GitlabPipeline:1:31,SUCCESS,DONE,,,2,2022-07-25T15:35:11.707+00:00,2022-07-25T15:35:14.224+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:109,compile,gitlab:GitlabPipeline:1:31,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,3,2022-07-25T15:35:14.724+00:00,2022-07-25T15:35:17.828+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:110,format,gitlab:GitlabPipeline:1:32,SUCCESS,DONE,,,2,2022-07-25T15:36:18.097+00:00,2022-07-25T15:36:20.954+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:111,format,gitlab:GitlabPipeline:1:33,SUCCESS,DONE,,,3,2022-07-25T15:38:03.463+00:00,2022-07-25T15:38:06.467+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:112,format,gitlab:GitlabPipeline:1:34,SUCCESS,DONE,,,3,2022-07-25T21:19:14.509+00:00,2022-07-25T21:19:17.811+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:113,format,gitlab:GitlabPipeline:1:35,SUCCESS,DONE,,,5,2022-07-26T09:37:05.694+00:00,2022-07-26T09:37:10.873+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:114,format,gitlab:GitlabPipeline:1:36,SUCCESS,DONE,,,2,2022-07-26T09:37:38.057+00:00,2022-07-26T09:37:40.975+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:115,format,gitlab:GitlabPipeline:1:37,SUCCESS,DONE,,,3,2022-07-26T09:38:29.318+00:00,2022-07-26T09:38:32.970+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:116,format,gitlab:GitlabPipeline:1:38,SUCCESS,DONE,,,3,2022-07-26T21:19:13.888+00:00,2022-07-26T21:19:17.021+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:117,format,gitlab:GitlabPipeline:1:39,SUCCESS,DONE,,,3,2022-07-27T08:19:24.376+00:00,2022-07-27T08:19:28.159+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:118,format,gitlab:GitlabPipeline:1:40,SUCCESS,DONE,,,4,2022-07-27T21:19:32.288+00:00,2022-07-27T21:19:36.850+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:100,compile,gitlab:GitlabPipeline:1:24,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,2.833629,2022-07-25T15:06:57.051+00:00,2022-07-25T15:06:59.885+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:101,format,gitlab:GitlabPipeline:1:25,SUCCESS,DONE,,,3.039853,2022-07-25T15:13:37.206+00:00,2022-07-25T15:13:40.246+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:102,format,gitlab:GitlabPipeline:1:26,SUCCESS,DONE,,,2.754626,2022-07-25T15:30:22.560+00:00,2022-07-25T15:30:25.315+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:103,format,gitlab:GitlabPipeline:1:27,SUCCESS,DONE,,,2.978188,2022-07-25T15:30:55.671+00:00,2022-07-25T15:30:58.650+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:104,format,gitlab:GitlabPipeline:1:28,SUCCESS,DONE,,,2.771923,2022-07-25T15:32:04.954+00:00,2022-07-25T15:32:07.726+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:105,compile,gitlab:GitlabPipeline:1:28,FAILURE,DONE,DEPLOYMENT,PRODUCTION,3.124232,2022-07-25T15:32:07.953+00:00,2022-07-25T15:32:11.077+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:106,format,gitlab:GitlabPipeline:1:29,SUCCESS,DONE,,,2.973488,2022-07-25T15:33:26.382+00:00,2022-07-25T15:33:29.356+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:107,format,gitlab:GitlabPipeline:1:30,SUCCESS,DONE,,,2.727088,2022-07-25T15:34:23.665+00:00,2022-07-25T15:34:26.392+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:108,format,gitlab:GitlabPipeline:1:31,SUCCESS,DONE,,,2.516951,2022-07-25T15:35:11.707+00:00,2022-07-25T15:35:14.224+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:109,compile,gitlab:GitlabPipeline:1:31,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,3.103903,2022-07-25T15:35:14.724+00:00,2022-07-25T15:35:17.828+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:110,format,gitlab:GitlabPipeline:1:32,SUCCESS,DONE,,,2.857065,2022-07-25T15:36:18.097+00:00,2022-07-25T15:36:20.954+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:111,format,gitlab:GitlabPipeline:1:33,SUCCESS,DONE,,,3.004112,2022-07-25T15:38:03.463+00:00,2022-07-25T15:38:06.467+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:112,format,gitlab:GitlabPipeline:1:34,SUCCESS,DONE,,,3.302867,2022-07-25T21:19:14.509+00:00,2022-07-25T21:19:17.811+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:113,format,gitlab:GitlabPipeline:1:35,SUCCESS,DONE,,,5.179808,2022-07-26T09:37:05.694+00:00,2022-07-26T09:37:10.873+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:114,format,gitlab:GitlabPipeline:1:36,SUCCESS,DONE,,,2.918028,2022-07-26T09:37:38.057+00:00,2022-07-26T09:37:40.975+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:115,format,gitlab:GitlabPipeline:1:37,SUCCESS,DONE,,,3.651621,2022-07-26T09:38:29.318+00:00,2022-07-26T09:38:32.970+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:116,format,gitlab:GitlabPipeline:1:38,SUCCESS,DONE,,,3.13281,2022-07-26T21:19:13.888+00:00,2022-07-26T21:19:17.021+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:117,format,gitlab:GitlabPipeline:1:39,SUCCESS,DONE,,,3.783425,2022-07-27T08:19:24.376+00:00,2022-07-27T08:19:28.159+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:118,format,gitlab:GitlabPipeline:1:40,SUCCESS,DONE,,,4.562247,2022-07-27T21:19:32.288+00:00,2022-07-27T21:19:36.850+00:00,gitlab:GitlabProject:1:44
 
gitlab:GitlabJob:1:119,format,gitlab:GitlabPipeline:1:41,FAILURE,DONE,,,0,2022-07-28T21:19:24.257+00:00,2022-07-28T23:00:17.842+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:120,format,gitlab:GitlabPipeline:1:41,SUCCESS,DONE,,,56,2022-07-29T02:10:58.370+00:00,2022-07-29T02:11:55.170+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:120,format,gitlab:GitlabPipeline:1:41,SUCCESS,DONE,,,56.799878,2022-07-29T02:10:58.370+00:00,2022-07-29T02:11:55.170+00:00,gitlab:GitlabProject:1:44
 
gitlab:GitlabJob:1:121,format,gitlab:GitlabPipeline:1:42,FAILURE,DONE,,,0,2022-07-29T21:19:02.884+00:00,2022-07-29T23:00:24.840+00:00,gitlab:GitlabProject:1:44
 
gitlab:GitlabJob:1:122,format,gitlab:GitlabPipeline:1:43,FAILURE,DONE,,,0,2022-07-30T21:19:26.310+00:00,2022-07-30T23:00:25.126+00:00,gitlab:GitlabProject:1:44
 
gitlab:GitlabJob:1:123,format,gitlab:GitlabPipeline:1:44,FAILURE,DONE,,,0,2022-07-31T21:19:05.348+00:00,2022-07-31T23:00:29.135+00:00,gitlab:GitlabProject:1:44
@@ -52,25 +52,25 @@ 
gitlab:GitlabJob:1:149,format,gitlab:GitlabPipeline:1:70,FAILURE,DONE,,,0,2022-0
 
gitlab:GitlabJob:1:150,format,gitlab:GitlabPipeline:1:71,FAILURE,DONE,,,0,2022-08-24T08:19:19.653+00:00,2022-08-24T10:00:04.660+00:00,gitlab:GitlabProject:1:44
 
gitlab:GitlabJob:1:151,format,gitlab:GitlabPipeline:1:72,FAILURE,DONE,,,0,2022-08-24T21:19:29.226+00:00,2022-08-24T23:00:14.036+00:00,gitlab:GitlabProject:1:44
 
gitlab:GitlabJob:1:152,format,gitlab:GitlabPipeline:1:73,FAILURE,DONE,,,0,2022-08-25T21:19:10.938+00:00,2022-08-25T23:00:08.594+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:60,format,gitlab:GitlabPipeline:1:16,,OTHER,,,0,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:61,format,gitlab:GitlabPipeline:1:16,,IN_PROGRESS,,,0,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:62,format,gitlab:GitlabPipeline:1:16,,IN_PROGRESS,,,0,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:63,format,gitlab:GitlabPipeline:1:16,,IN_PROGRESS,,,0,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:64,format,gitlab:GitlabPipeline:1:16,,IN_PROGRESS,,,0,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:65,format,gitlab:GitlabPipeline:1:16,,OTHER,,,0,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:66,format,gitlab:GitlabPipeline:1:16,,OTHER,,,0,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:67,format,gitlab:GitlabPipeline:1:16,,OTHER,,,0,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:86,format,gitlab:GitlabPipeline:1:16,FAILURE,DONE,,,0,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:87,format,gitlab:GitlabPipeline:1:16,FAILURE,DONE,,,0,2022-07-25T13:41:11.601+00:00,2022-07-25T13:41:11.932+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:88,format,gitlab:GitlabPipeline:1:17,FAILURE,DONE,,,0,2022-07-25T13:42:59.674+00:00,2022-07-25T13:42:59.998+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:60,format,gitlab:GitlabPipeline:1:16,,OTHER,,,0.871577,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:61,format,gitlab:GitlabPipeline:1:16,,IN_PROGRESS,,,0.871577,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:62,format,gitlab:GitlabPipeline:1:16,,IN_PROGRESS,,,0.871577,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:63,format,gitlab:GitlabPipeline:1:16,,IN_PROGRESS,,,0.871577,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:64,format,gitlab:GitlabPipeline:1:16,,IN_PROGRESS,,,0.871577,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:65,format,gitlab:GitlabPipeline:1:16,,OTHER,,,0.871577,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:66,format,gitlab:GitlabPipeline:1:16,,OTHER,,,0.871577,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:67,format,gitlab:GitlabPipeline:1:16,,OTHER,,,0.871577,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:86,format,gitlab:GitlabPipeline:1:16,FAILURE,DONE,,,0.871577,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:87,format,gitlab:GitlabPipeline:1:16,FAILURE,DONE,,,0.331067,2022-07-25T13:41:11.601+00:00,2022-07-25T13:41:11.932+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:88,format,gitlab:GitlabPipeline:1:17,FAILURE,DONE,,,0.324175,2022-07-25T13:42:59.674+00:00,2022-07-25T13:42:59.998+00:00,gitlab:GitlabProject:1:44
 
gitlab:GitlabJob:1:89,format,gitlab:GitlabPipeline:1:17,FAILURE,OTHER,,,0,2022-07-25T13:46:15.482+00:00,2022-07-25T13:49:42.952+00:00,gitlab:GitlabProject:1:44
 
gitlab:GitlabJob:1:90,format,gitlab:GitlabPipeline:1:18,FAILURE,OTHER,,,0,2022-07-25T13:50:40.680+00:00,2022-07-25T14:19:03.023+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:91,format,gitlab:GitlabPipeline:1:18,FAILURE,DONE,,,2,2022-07-25T14:26:02.616+00:00,2022-07-25T14:26:05.480+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:92,format,gitlab:GitlabPipeline:1:18,FAILURE,DONE,,,1,2022-07-25T14:47:12.876+00:00,2022-07-25T14:47:14.295+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:93,format,gitlab:GitlabPipeline:1:19,FAILURE,DONE,,,1,2022-07-25T14:53:56.227+00:00,2022-07-25T14:53:57.910+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:94,format,gitlab:GitlabPipeline:1:20,FAILURE,DONE,,,1,2022-07-25T14:55:26.493+00:00,2022-07-25T14:55:28.331+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:95,format,gitlab:GitlabPipeline:1:21,FAILURE,DONE,,,1,2022-07-25T14:56:59.811+00:00,2022-07-25T14:57:01.498+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:96,format,gitlab:GitlabPipeline:1:21,FAILURE,DONE,,,5,2022-07-25T14:59:29.276+00:00,2022-07-25T14:59:34.282+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:97,format,gitlab:GitlabPipeline:1:22,SUCCESS,DONE,,,3,2022-07-25T15:00:43.749+00:00,2022-07-25T15:00:46.895+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:98,format,gitlab:GitlabPipeline:1:23,SUCCESS,DONE,,,2,2022-07-25T15:03:23.471+00:00,2022-07-25T15:03:26.432+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:99,format,gitlab:GitlabPipeline:1:24,SUCCESS,DONE,,,2,2022-07-25T15:06:54.037+00:00,2022-07-25T15:06:56.819+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:91,format,gitlab:GitlabPipeline:1:18,FAILURE,DONE,,,2.864332,2022-07-25T14:26:02.616+00:00,2022-07-25T14:26:05.480+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:92,format,gitlab:GitlabPipeline:1:18,FAILURE,DONE,,,1.419497,2022-07-25T14:47:12.876+00:00,2022-07-25T14:47:14.295+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:93,format,gitlab:GitlabPipeline:1:19,FAILURE,DONE,,,1.682669,2022-07-25T14:53:56.227+00:00,2022-07-25T14:53:57.910+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:94,format,gitlab:GitlabPipeline:1:20,FAILURE,DONE,,,1.837993,2022-07-25T14:55:26.493+00:00,2022-07-25T14:55:28.331+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:95,format,gitlab:GitlabPipeline:1:21,FAILURE,DONE,,,1.68669,2022-07-25T14:56:59.811+00:00,2022-07-25T14:57:01.498+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:96,format,gitlab:GitlabPipeline:1:21,FAILURE,DONE,,,5.006028,2022-07-25T14:59:29.276+00:00,2022-07-25T14:59:34.282+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:97,format,gitlab:GitlabPipeline:1:22,SUCCESS,DONE,,,3.146301,2022-07-25T15:00:43.749+00:00,2022-07-25T15:00:46.895+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:98,format,gitlab:GitlabPipeline:1:23,SUCCESS,DONE,,,2.960982,2022-07-25T15:03:23.471+00:00,2022-07-25T15:03:26.432+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:99,format,gitlab:GitlabPipeline:1:24,SUCCESS,DONE,,,2.781517,2022-07-25T15:06:54.037+00:00,2022-07-25T15:06:56.819+00:00,gitlab:GitlabProject:1:44
diff --git 
a/backend/plugins/gitlab/e2e/snapshot_tables/cicd_tasks_no_prod_regex.csv 
b/backend/plugins/gitlab/e2e/snapshot_tables/cicd_tasks_no_prod_regex.csv
index c00e525f2..2009e6d5c 100644
--- a/backend/plugins/gitlab/e2e/snapshot_tables/cicd_tasks_no_prod_regex.csv
+++ b/backend/plugins/gitlab/e2e/snapshot_tables/cicd_tasks_no_prod_regex.csv
@@ -1,25 +1,25 @@
 
id,name,pipeline_id,result,status,type,environment,duration_sec,started_date,finished_date,cicd_scope_id
-gitlab:GitlabJob:1:100,compile,gitlab:GitlabPipeline:1:24,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,2,2022-07-25T15:06:57.051+00:00,2022-07-25T15:06:59.885+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:101,format,gitlab:GitlabPipeline:1:25,SUCCESS,DONE,,PRODUCTION,3,2022-07-25T15:13:37.206+00:00,2022-07-25T15:13:40.246+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:102,format,gitlab:GitlabPipeline:1:26,SUCCESS,DONE,,PRODUCTION,2,2022-07-25T15:30:22.560+00:00,2022-07-25T15:30:25.315+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:103,format,gitlab:GitlabPipeline:1:27,SUCCESS,DONE,,PRODUCTION,2,2022-07-25T15:30:55.671+00:00,2022-07-25T15:30:58.650+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:104,format,gitlab:GitlabPipeline:1:28,SUCCESS,DONE,,PRODUCTION,2,2022-07-25T15:32:04.954+00:00,2022-07-25T15:32:07.726+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:105,compile,gitlab:GitlabPipeline:1:28,FAILURE,DONE,DEPLOYMENT,PRODUCTION,3,2022-07-25T15:32:07.953+00:00,2022-07-25T15:32:11.077+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:106,format,gitlab:GitlabPipeline:1:29,SUCCESS,DONE,,PRODUCTION,2,2022-07-25T15:33:26.382+00:00,2022-07-25T15:33:29.356+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:107,format,gitlab:GitlabPipeline:1:30,SUCCESS,DONE,,PRODUCTION,2,2022-07-25T15:34:23.665+00:00,2022-07-25T15:34:26.392+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:108,format,gitlab:GitlabPipeline:1:31,SUCCESS,DONE,,PRODUCTION,2,2022-07-25T15:35:11.707+00:00,2022-07-25T15:35:14.224+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:109,compile,gitlab:GitlabPipeline:1:31,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,3,2022-07-25T15:35:14.724+00:00,2022-07-25T15:35:17.828+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:110,format,gitlab:GitlabPipeline:1:32,SUCCESS,DONE,,PRODUCTION,2,2022-07-25T15:36:18.097+00:00,2022-07-25T15:36:20.954+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:111,format,gitlab:GitlabPipeline:1:33,SUCCESS,DONE,,PRODUCTION,3,2022-07-25T15:38:03.463+00:00,2022-07-25T15:38:06.467+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:112,format,gitlab:GitlabPipeline:1:34,SUCCESS,DONE,,PRODUCTION,3,2022-07-25T21:19:14.509+00:00,2022-07-25T21:19:17.811+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:113,format,gitlab:GitlabPipeline:1:35,SUCCESS,DONE,,PRODUCTION,5,2022-07-26T09:37:05.694+00:00,2022-07-26T09:37:10.873+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:114,format,gitlab:GitlabPipeline:1:36,SUCCESS,DONE,,PRODUCTION,2,2022-07-26T09:37:38.057+00:00,2022-07-26T09:37:40.975+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:115,format,gitlab:GitlabPipeline:1:37,SUCCESS,DONE,,PRODUCTION,3,2022-07-26T09:38:29.318+00:00,2022-07-26T09:38:32.970+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:116,format,gitlab:GitlabPipeline:1:38,SUCCESS,DONE,,PRODUCTION,3,2022-07-26T21:19:13.888+00:00,2022-07-26T21:19:17.021+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:117,format,gitlab:GitlabPipeline:1:39,SUCCESS,DONE,,PRODUCTION,3,2022-07-27T08:19:24.376+00:00,2022-07-27T08:19:28.159+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:118,format,gitlab:GitlabPipeline:1:40,SUCCESS,DONE,,PRODUCTION,4,2022-07-27T21:19:32.288+00:00,2022-07-27T21:19:36.850+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:100,compile,gitlab:GitlabPipeline:1:24,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,2.833629,2022-07-25T15:06:57.051+00:00,2022-07-25T15:06:59.885+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:101,format,gitlab:GitlabPipeline:1:25,SUCCESS,DONE,,PRODUCTION,3.039853,2022-07-25T15:13:37.206+00:00,2022-07-25T15:13:40.246+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:102,format,gitlab:GitlabPipeline:1:26,SUCCESS,DONE,,PRODUCTION,2.754626,2022-07-25T15:30:22.560+00:00,2022-07-25T15:30:25.315+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:103,format,gitlab:GitlabPipeline:1:27,SUCCESS,DONE,,PRODUCTION,2.978188,2022-07-25T15:30:55.671+00:00,2022-07-25T15:30:58.650+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:104,format,gitlab:GitlabPipeline:1:28,SUCCESS,DONE,,PRODUCTION,2.771923,2022-07-25T15:32:04.954+00:00,2022-07-25T15:32:07.726+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:105,compile,gitlab:GitlabPipeline:1:28,FAILURE,DONE,DEPLOYMENT,PRODUCTION,3.124232,2022-07-25T15:32:07.953+00:00,2022-07-25T15:32:11.077+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:106,format,gitlab:GitlabPipeline:1:29,SUCCESS,DONE,,PRODUCTION,2.973488,2022-07-25T15:33:26.382+00:00,2022-07-25T15:33:29.356+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:107,format,gitlab:GitlabPipeline:1:30,SUCCESS,DONE,,PRODUCTION,2.727088,2022-07-25T15:34:23.665+00:00,2022-07-25T15:34:26.392+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:108,format,gitlab:GitlabPipeline:1:31,SUCCESS,DONE,,PRODUCTION,2.516951,2022-07-25T15:35:11.707+00:00,2022-07-25T15:35:14.224+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:109,compile,gitlab:GitlabPipeline:1:31,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,3.103903,2022-07-25T15:35:14.724+00:00,2022-07-25T15:35:17.828+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:110,format,gitlab:GitlabPipeline:1:32,SUCCESS,DONE,,PRODUCTION,2.857065,2022-07-25T15:36:18.097+00:00,2022-07-25T15:36:20.954+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:111,format,gitlab:GitlabPipeline:1:33,SUCCESS,DONE,,PRODUCTION,3.004112,2022-07-25T15:38:03.463+00:00,2022-07-25T15:38:06.467+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:112,format,gitlab:GitlabPipeline:1:34,SUCCESS,DONE,,PRODUCTION,3.302867,2022-07-25T21:19:14.509+00:00,2022-07-25T21:19:17.811+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:113,format,gitlab:GitlabPipeline:1:35,SUCCESS,DONE,,PRODUCTION,5.179808,2022-07-26T09:37:05.694+00:00,2022-07-26T09:37:10.873+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:114,format,gitlab:GitlabPipeline:1:36,SUCCESS,DONE,,PRODUCTION,2.918028,2022-07-26T09:37:38.057+00:00,2022-07-26T09:37:40.975+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:115,format,gitlab:GitlabPipeline:1:37,SUCCESS,DONE,,PRODUCTION,3.651621,2022-07-26T09:38:29.318+00:00,2022-07-26T09:38:32.970+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:116,format,gitlab:GitlabPipeline:1:38,SUCCESS,DONE,,PRODUCTION,3.13281,2022-07-26T21:19:13.888+00:00,2022-07-26T21:19:17.021+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:117,format,gitlab:GitlabPipeline:1:39,SUCCESS,DONE,,PRODUCTION,3.783425,2022-07-27T08:19:24.376+00:00,2022-07-27T08:19:28.159+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:118,format,gitlab:GitlabPipeline:1:40,SUCCESS,DONE,,PRODUCTION,4.562247,2022-07-27T21:19:32.288+00:00,2022-07-27T21:19:36.850+00:00,gitlab:GitlabProject:1:44
 
gitlab:GitlabJob:1:119,format,gitlab:GitlabPipeline:1:41,FAILURE,DONE,,PRODUCTION,0,2022-07-28T21:19:24.257+00:00,2022-07-28T23:00:17.842+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:120,format,gitlab:GitlabPipeline:1:41,SUCCESS,DONE,,PRODUCTION,56,2022-07-29T02:10:58.370+00:00,2022-07-29T02:11:55.170+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:120,format,gitlab:GitlabPipeline:1:41,SUCCESS,DONE,,PRODUCTION,56.799878,2022-07-29T02:10:58.370+00:00,2022-07-29T02:11:55.170+00:00,gitlab:GitlabProject:1:44
 
gitlab:GitlabJob:1:121,format,gitlab:GitlabPipeline:1:42,FAILURE,DONE,,PRODUCTION,0,2022-07-29T21:19:02.884+00:00,2022-07-29T23:00:24.840+00:00,gitlab:GitlabProject:1:44
 
gitlab:GitlabJob:1:122,format,gitlab:GitlabPipeline:1:43,FAILURE,DONE,,PRODUCTION,0,2022-07-30T21:19:26.310+00:00,2022-07-30T23:00:25.126+00:00,gitlab:GitlabProject:1:44
 
gitlab:GitlabJob:1:123,format,gitlab:GitlabPipeline:1:44,FAILURE,DONE,,PRODUCTION,0,2022-07-31T21:19:05.348+00:00,2022-07-31T23:00:29.135+00:00,gitlab:GitlabProject:1:44
@@ -52,25 +52,25 @@ 
gitlab:GitlabJob:1:149,format,gitlab:GitlabPipeline:1:70,FAILURE,DONE,,PRODUCTIO
 
gitlab:GitlabJob:1:150,format,gitlab:GitlabPipeline:1:71,FAILURE,DONE,,PRODUCTION,0,2022-08-24T08:19:19.653+00:00,2022-08-24T10:00:04.660+00:00,gitlab:GitlabProject:1:44
 
gitlab:GitlabJob:1:151,format,gitlab:GitlabPipeline:1:72,FAILURE,DONE,,PRODUCTION,0,2022-08-24T21:19:29.226+00:00,2022-08-24T23:00:14.036+00:00,gitlab:GitlabProject:1:44
 
gitlab:GitlabJob:1:152,format,gitlab:GitlabPipeline:1:73,FAILURE,DONE,,PRODUCTION,0,2022-08-25T21:19:10.938+00:00,2022-08-25T23:00:08.594+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:60,format,gitlab:GitlabPipeline:1:16,,OTHER,,PRODUCTION,0,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:61,format,gitlab:GitlabPipeline:1:16,,IN_PROGRESS,,PRODUCTION,0,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:62,format,gitlab:GitlabPipeline:1:16,,IN_PROGRESS,,PRODUCTION,0,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:63,format,gitlab:GitlabPipeline:1:16,,IN_PROGRESS,,PRODUCTION,0,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:64,format,gitlab:GitlabPipeline:1:16,,IN_PROGRESS,,PRODUCTION,0,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:65,format,gitlab:GitlabPipeline:1:16,,OTHER,,PRODUCTION,0,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:66,format,gitlab:GitlabPipeline:1:16,,OTHER,,PRODUCTION,0,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:67,format,gitlab:GitlabPipeline:1:16,,OTHER,,PRODUCTION,0,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:86,format,gitlab:GitlabPipeline:1:16,FAILURE,DONE,,PRODUCTION,0,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:87,format,gitlab:GitlabPipeline:1:16,FAILURE,DONE,,PRODUCTION,0,2022-07-25T13:41:11.601+00:00,2022-07-25T13:41:11.932+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:88,format,gitlab:GitlabPipeline:1:17,FAILURE,DONE,,PRODUCTION,0,2022-07-25T13:42:59.674+00:00,2022-07-25T13:42:59.998+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:60,format,gitlab:GitlabPipeline:1:16,,OTHER,,PRODUCTION,0.871577,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:61,format,gitlab:GitlabPipeline:1:16,,IN_PROGRESS,,PRODUCTION,0.871577,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:62,format,gitlab:GitlabPipeline:1:16,,IN_PROGRESS,,PRODUCTION,0.871577,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:63,format,gitlab:GitlabPipeline:1:16,,IN_PROGRESS,,PRODUCTION,0.871577,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:64,format,gitlab:GitlabPipeline:1:16,,IN_PROGRESS,,PRODUCTION,0.871577,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:65,format,gitlab:GitlabPipeline:1:16,,OTHER,,PRODUCTION,0.871577,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:66,format,gitlab:GitlabPipeline:1:16,,OTHER,,PRODUCTION,0.871577,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:67,format,gitlab:GitlabPipeline:1:16,,OTHER,,PRODUCTION,0.871577,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:86,format,gitlab:GitlabPipeline:1:16,FAILURE,DONE,,PRODUCTION,0.871577,2022-07-25T13:40:42.020+00:00,2022-07-25T13:40:42.892+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:87,format,gitlab:GitlabPipeline:1:16,FAILURE,DONE,,PRODUCTION,0.331067,2022-07-25T13:41:11.601+00:00,2022-07-25T13:41:11.932+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:88,format,gitlab:GitlabPipeline:1:17,FAILURE,DONE,,PRODUCTION,0.324175,2022-07-25T13:42:59.674+00:00,2022-07-25T13:42:59.998+00:00,gitlab:GitlabProject:1:44
 
gitlab:GitlabJob:1:89,format,gitlab:GitlabPipeline:1:17,FAILURE,OTHER,,PRODUCTION,0,2022-07-25T13:46:15.482+00:00,2022-07-25T13:49:42.952+00:00,gitlab:GitlabProject:1:44
 
gitlab:GitlabJob:1:90,format,gitlab:GitlabPipeline:1:18,FAILURE,OTHER,,PRODUCTION,0,2022-07-25T13:50:40.680+00:00,2022-07-25T14:19:03.023+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:91,format,gitlab:GitlabPipeline:1:18,FAILURE,DONE,,PRODUCTION,2,2022-07-25T14:26:02.616+00:00,2022-07-25T14:26:05.480+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:92,format,gitlab:GitlabPipeline:1:18,FAILURE,DONE,,PRODUCTION,1,2022-07-25T14:47:12.876+00:00,2022-07-25T14:47:14.295+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:93,format,gitlab:GitlabPipeline:1:19,FAILURE,DONE,,PRODUCTION,1,2022-07-25T14:53:56.227+00:00,2022-07-25T14:53:57.910+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:94,format,gitlab:GitlabPipeline:1:20,FAILURE,DONE,,PRODUCTION,1,2022-07-25T14:55:26.493+00:00,2022-07-25T14:55:28.331+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:95,format,gitlab:GitlabPipeline:1:21,FAILURE,DONE,,PRODUCTION,1,2022-07-25T14:56:59.811+00:00,2022-07-25T14:57:01.498+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:96,format,gitlab:GitlabPipeline:1:21,FAILURE,DONE,,PRODUCTION,5,2022-07-25T14:59:29.276+00:00,2022-07-25T14:59:34.282+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:97,format,gitlab:GitlabPipeline:1:22,SUCCESS,DONE,,PRODUCTION,3,2022-07-25T15:00:43.749+00:00,2022-07-25T15:00:46.895+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:98,format,gitlab:GitlabPipeline:1:23,SUCCESS,DONE,,PRODUCTION,2,2022-07-25T15:03:23.471+00:00,2022-07-25T15:03:26.432+00:00,gitlab:GitlabProject:1:44
-gitlab:GitlabJob:1:99,format,gitlab:GitlabPipeline:1:24,SUCCESS,DONE,,PRODUCTION,2,2022-07-25T15:06:54.037+00:00,2022-07-25T15:06:56.819+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:91,format,gitlab:GitlabPipeline:1:18,FAILURE,DONE,,PRODUCTION,2.864332,2022-07-25T14:26:02.616+00:00,2022-07-25T14:26:05.480+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:92,format,gitlab:GitlabPipeline:1:18,FAILURE,DONE,,PRODUCTION,1.419497,2022-07-25T14:47:12.876+00:00,2022-07-25T14:47:14.295+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:93,format,gitlab:GitlabPipeline:1:19,FAILURE,DONE,,PRODUCTION,1.682669,2022-07-25T14:53:56.227+00:00,2022-07-25T14:53:57.910+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:94,format,gitlab:GitlabPipeline:1:20,FAILURE,DONE,,PRODUCTION,1.837993,2022-07-25T14:55:26.493+00:00,2022-07-25T14:55:28.331+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:95,format,gitlab:GitlabPipeline:1:21,FAILURE,DONE,,PRODUCTION,1.68669,2022-07-25T14:56:59.811+00:00,2022-07-25T14:57:01.498+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:96,format,gitlab:GitlabPipeline:1:21,FAILURE,DONE,,PRODUCTION,5.006028,2022-07-25T14:59:29.276+00:00,2022-07-25T14:59:34.282+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:97,format,gitlab:GitlabPipeline:1:22,SUCCESS,DONE,,PRODUCTION,3.146301,2022-07-25T15:00:43.749+00:00,2022-07-25T15:00:46.895+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:98,format,gitlab:GitlabPipeline:1:23,SUCCESS,DONE,,PRODUCTION,2.960982,2022-07-25T15:03:23.471+00:00,2022-07-25T15:03:26.432+00:00,gitlab:GitlabProject:1:44
+gitlab:GitlabJob:1:99,format,gitlab:GitlabPipeline:1:24,SUCCESS,DONE,,PRODUCTION,2.781517,2022-07-25T15:06:54.037+00:00,2022-07-25T15:06:56.819+00:00,gitlab:GitlabProject:1:44
diff --git a/backend/plugins/gitlab/tasks/deployment_convertor.go 
b/backend/plugins/gitlab/tasks/deployment_convertor.go
index bf3cfdc40..81d9b0b61 100644
--- a/backend/plugins/gitlab/tasks/deployment_convertor.go
+++ b/backend/plugins/gitlab/tasks/deployment_convertor.go
@@ -78,14 +78,14 @@ func ConvertDeployment(taskCtx plugin.SubTaskContext) 
errors.Error {
                Convert: func(inputRow interface{}) ([]interface{}, 
errors.Error) {
                        gitlabDeployment := inputRow.(*models.GitlabDeployment)
 
-                       var duration *uint64
+                       var duration *float64
                        if gitlabDeployment.DeployableDuration != nil {
-                               deployableDuration := 
cast.ToUint64(*gitlabDeployment.DeployableDuration)
+                               deployableDuration := 
cast.ToFloat64(*gitlabDeployment.DeployableDuration)
                                duration = &deployableDuration
                        }
                        if duration == nil || *duration == 0 {
                                if gitlabDeployment.DeployableFinishedAt != nil 
&& gitlabDeployment.DeployableCreatedAt != nil {
-                                       deployableDuration := 
uint64(gitlabDeployment.DeployableFinishedAt.Sub(*gitlabDeployment.DeployableCreatedAt).Seconds())
+                                       deployableDuration := 
gitlabDeployment.DeployableFinishedAt.Sub(*gitlabDeployment.DeployableCreatedAt).Seconds()
                                        duration = &deployableDuration
                                }
                        }
diff --git a/backend/plugins/gitlab/tasks/job_convertor.go 
b/backend/plugins/gitlab/tasks/job_convertor.go
index 17837fbb1..3cd02d3b9 100644
--- a/backend/plugins/gitlab/tasks/job_convertor.go
+++ b/backend/plugins/gitlab/tasks/job_convertor.go
@@ -95,7 +95,7 @@ func ConvertJobs(taskCtx plugin.SubTaskContext) (err 
errors.Error) {
                                        Default:    devops.STATUS_OTHER,
                                }, gitlabJob.Status),
 
-                               DurationSec:  uint64(gitlabJob.Duration),
+                               DurationSec:  gitlabJob.Duration,
                                StartedDate:  *startedAt,
                                FinishedDate: gitlabJob.FinishedAt,
                                CicdScopeId:  
projectIdGen.Generate(data.Options.ConnectionId, gitlabJob.ProjectId),
diff --git a/backend/plugins/gitlab/tasks/pipeline_convertor.go 
b/backend/plugins/gitlab/tasks/pipeline_convertor.go
index a874fe11c..4192c6a02 100644
--- a/backend/plugins/gitlab/tasks/pipeline_convertor.go
+++ b/backend/plugins/gitlab/tasks/pipeline_convertor.go
@@ -108,7 +108,7 @@ func ConvertPipelines(taskCtx plugin.SubTaskContext) 
errors.Error {
                                domainPipeline.DurationSec = 0
                        } else if domainPipeline.FinishedDate != nil {
                                durationTime := 
domainPipeline.FinishedDate.Sub(startedAt)
-                               domainPipeline.DurationSec = 
uint64(durationTime.Seconds())
+                               domainPipeline.DurationSec = 
durationTime.Seconds()
                        }
 
                        return []interface{}{
diff --git a/backend/plugins/jenkins/e2e/snapshot_tables/cicd_pipelines.csv 
b/backend/plugins/jenkins/e2e/snapshot_tables/cicd_pipelines.csv
index 7d9ce895d..bbef41a7e 100644
--- a/backend/plugins/jenkins/e2e/snapshot_tables/cicd_pipelines.csv
+++ b/backend/plugins/jenkins/e2e/snapshot_tables/cicd_pipelines.csv
@@ -1,14 +1,14 @@
 
id,name,result,status,type,duration_sec,environment,created_date,finished_date,cicd_scope_id,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10001,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10001,,IN_PROGRESS,DEPLOYMENT,0,PRODUCTION,2022-04-15T10:06:17.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,10001,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10002,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10002,,IN_PROGRESS,DEPLOYMENT,0,PRODUCTION,2022-04-15T10:06:17.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,10002,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10003,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10003,FAILURE,DONE,DEPLOYMENT,0,PRODUCTION,2022-04-15T10:06:17.000+00:00,2022-04-15T10:06:17.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,10003,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10004,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10004,,DONE,DEPLOYMENT,0,PRODUCTION,2022-04-15T10:06:17.000+00:00,2022-04-15T10:06:17.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,10004,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10005,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10005,,DONE,DEPLOYMENT,0,PRODUCTION,2022-04-15T10:06:17.000+00:00,2022-04-15T10:06:17.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,10005,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#11,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#11,SUCCESS,DONE,DEPLOYMENT,14,PRODUCTION,2022-04-15T10:10:16.000+00:00,2022-04-15T10:10:30.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,95,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#17,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#17,SUCCESS,DONE,DEPLOYMENT,0,PRODUCTION,2022-04-15T10:05:53.000+00:00,2022-04-15T10:05:53.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,124,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#21,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#21,SUCCESS,DONE,DEPLOYMENT,2,PRODUCTION,2022-04-15T11:35:48.000+00:00,2022-04-15T11:35:50.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,94,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#23,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#23,SUCCESS,DONE,DEPLOYMENT,0,PRODUCTION,2022-09-08T14:26:51.000+00:00,2022-09-08T14:26:51.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,96,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#27,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#27,,IN_PROGRESS,DEPLOYMENT,0,PRODUCTION,2022-04-15T10:06:17.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,123,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#31,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#31,SUCCESS,DONE,DEPLOYMENT,1,PRODUCTION,2022-04-15T12:00:49.000+00:00,2022-04-15T12:00:50.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,93,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#37,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#37,SUCCESS,DONE,DEPLOYMENT,0,PRODUCTION,2022-04-15T10:06:26.000+00:00,2022-04-15T10:06:26.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,122,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#47,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#47,SUCCESS,DONE,DEPLOYMENT,0,PRODUCTION,2022-04-15T11:35:56.000+00:00,2022-04-15T11:35:56.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,121,
+jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10001,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10001,,IN_PROGRESS,DEPLOYMENT,0.004,PRODUCTION,2022-04-15T10:06:17.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,10001,
+jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10002,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10002,,IN_PROGRESS,DEPLOYMENT,0.004,PRODUCTION,2022-04-15T10:06:17.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,10002,
+jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10003,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10003,FAILURE,DONE,DEPLOYMENT,0.004,PRODUCTION,2022-04-15T10:06:17.000+00:00,2022-04-15T10:06:17.004+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,10003,
+jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10004,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10004,,DONE,DEPLOYMENT,0.004,PRODUCTION,2022-04-15T10:06:17.000+00:00,2022-04-15T10:06:17.004+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,10004,
+jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10005,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10005,,DONE,DEPLOYMENT,0.004,PRODUCTION,2022-04-15T10:06:17.000+00:00,2022-04-15T10:06:17.004+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,10005,
+jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#11,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#11,SUCCESS,DONE,DEPLOYMENT,14.82,PRODUCTION,2022-04-15T10:10:16.000+00:00,2022-04-15T10:10:30.820+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,95,
+jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#17,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#17,SUCCESS,DONE,DEPLOYMENT,0.057,PRODUCTION,2022-04-15T10:05:53.000+00:00,2022-04-15T10:05:53.057+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,124,
+jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#21,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#21,SUCCESS,DONE,DEPLOYMENT,2.121,PRODUCTION,2022-04-15T11:35:48.000+00:00,2022-04-15T11:35:50.121+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,94,
+jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#23,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#23,SUCCESS,DONE,DEPLOYMENT,0.061,PRODUCTION,2022-09-08T14:26:51.000+00:00,2022-09-08T14:26:51.061+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,96,
+jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#27,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#27,,IN_PROGRESS,DEPLOYMENT,0.004,PRODUCTION,2022-04-15T10:06:17.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,123,
+jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#31,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#31,SUCCESS,DONE,DEPLOYMENT,1.587,PRODUCTION,2022-04-15T12:00:49.000+00:00,2022-04-15T12:00:50.587+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,93,
+jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#37,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#37,SUCCESS,DONE,DEPLOYMENT,0.003,PRODUCTION,2022-04-15T10:06:26.000+00:00,2022-04-15T10:06:26.003+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,122,
+jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#47,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#47,SUCCESS,DONE,DEPLOYMENT,0.006,PRODUCTION,2022-04-15T11:35:56.000+00:00,2022-04-15T11:35:56.006+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,121,
diff --git a/backend/plugins/jenkins/e2e/snapshot_tables/cicd_tasks.csv 
b/backend/plugins/jenkins/e2e/snapshot_tables/cicd_tasks.csv
index 128f2dec2..e3002446e 100644
--- a/backend/plugins/jenkins/e2e/snapshot_tables/cicd_tasks.csv
+++ b/backend/plugins/jenkins/e2e/snapshot_tables/cicd_tasks.csv
@@ -1,13 +1,13 @@
 
id,name,pipeline_id,result,status,type,environment,duration_sec,started_date,finished_date,cicd_scope_id,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10001,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10001,,IN_PROGRESS,DEPLOYMENT,PRODUCTION,0,2022-04-15T10:06:17.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/de
 [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10002,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10002,,IN_PROGRESS,DEPLOYMENT,PRODUCTION,0,2022-04-15T10:06:17.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/de
 [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10003,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10003,FAILURE,DONE,DEPLOYMENT,PRODUCTION,0,2022-04-15T10:06:17.000+00:00,2022-04-15T10:06:17.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkin
 [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10004,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10004,,DONE,DEPLOYMENT,PRODUCTION,0,2022-04-15T10:06:17.000+00:00,2022-04-15T10:06:17.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-d
 [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10005,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10005,,DONE,DEPLOYMENT,PRODUCTION,0,2022-04-15T10:06:17.000+00:00,2022-04-15T10:06:17.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-d
 [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#17,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#17,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,0,2022-04-15T10:05:53.000+00:00,2022-04-15T10:05:53.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-
 [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#21,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#21,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,2,2022-04-15T11:35:48.000+00:00,2022-04-15T11:35:50.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-
 [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#23,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#23,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,0,2022-09-08T14:26:51.000+00:00,2022-09-08T14:26:51.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-
 [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#27,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#27,,IN_PROGRESS,DEPLOYMENT,PRODUCTION,0,2022-04-15T10:06:17.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake"
 [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#31,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#31,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,1,2022-04-15T12:00:49.000+00:00,2022-04-15T12:00:50.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-
 [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#37,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#37,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,0,2022-04-15T10:06:26.000+00:00,2022-04-15T10:06:26.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-
 [...]
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#47,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#47,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,0,2022-04-15T11:35:56.000+00:00,2022-04-15T11:35:56.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-
 [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10001,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10001,,IN_PROGRESS,DEPLOYMENT,PRODUCTION,0.004,2022-04-15T10:06:17.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-di
 [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10002,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10002,,IN_PROGRESS,DEPLOYMENT,PRODUCTION,0.004,2022-04-15T10:06:17.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-di
 [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10003,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10003,FAILURE,DONE,DEPLOYMENT,PRODUCTION,0.004,2022-04-15T10:06:17.000+00:00,2022-04-15T10:06:17.004+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-je
 [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10004,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10004,,DONE,DEPLOYMENT,PRODUCTION,0.004,2022-04-15T10:06:17.000+00:00,2022-04-15T10:06:17.004+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-s
 [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10005,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10005,,DONE,DEPLOYMENT,PRODUCTION,0.004,2022-04-15T10:06:17.000+00:00,2022-04-15T10:06:17.004+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-s
 [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#17,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#17,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,0.057,2022-04-15T10:05:53.000+00:00,2022-04-15T10:05:53.057+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-
 [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#21,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#21,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,2.121,2022-04-15T11:35:48.000+00:00,2022-04-15T11:35:50.121+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-
 [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#23,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#23,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,0.061,2022-09-08T14:26:51.000+00:00,2022-09-08T14:26:51.061+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-
 [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#27,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#27,,IN_PROGRESS,DEPLOYMENT,PRODUCTION,0.004,2022-04-15T10:06:17.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devl
 [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#31,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#31,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,1.587,2022-04-15T12:00:49.000+00:00,2022-04-15T12:00:50.587+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-
 [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#37,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#37,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,0.003,2022-04-15T10:06:26.000+00:00,2022-04-15T10:06:26.003+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-
 [...]
+jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#47,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#47,SUCCESS,DONE,DEPLOYMENT,PRODUCTION,0.006,2022-04-15T11:35:56.000+00:00,2022-04-15T11:35:56.006+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-
 [...]
diff --git 
a/backend/plugins/jenkins/e2e/snapshot_tables/cicd_tasks_after_stages.csv 
b/backend/plugins/jenkins/e2e/snapshot_tables/cicd_tasks_after_stages.csv
index ad371de98..6f5eebed8 100644
--- a/backend/plugins/jenkins/e2e/snapshot_tables/cicd_tasks_after_stages.csv
+++ b/backend/plugins/jenkins/e2e/snapshot_tables/cicd_tasks_after_stages.csv
@@ -1,15 +1,15 @@
 
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:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10:8,scp-f/b,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10,SUCCESS,OTHER,,0,2019-10-29T04:01:34.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,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_stages,13577,
-jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#11:9,gitlabInit,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#11,SUCCESS,OTHER,,1312,2021-03-09T13:35:10.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,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_stages,13578,
-jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#12:1,gitlabAutoSync,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#12,SUCCESS,DONE,DEPLOYMENT,14,2020-02-07T11:54:28.000+00:00,2020-02-07T11:54:42.000+00:00,PRODUCTION,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins
 [...]
-jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#13:2,gitlabInit,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#13,SUCCESS,OTHER,,5,2020-03-18T02:19:17.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,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_stages,13580,
-jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#14:3,gitlabAutoSync,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#14,SUCCESS,DONE,DEPLOYMENT,83,2020-03-12T02:45:25.000+00:00,2020-03-12T02:46:48.000+00:00,PRODUCTION,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins
 [...]
-jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#1:6,Hello,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#1,SUCCESS,DONE,,0,2022-09-08T15:40:34.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,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_stages,1,
-jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#2:7,Hello,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#2,SUCCESS,DONE,,0,2022-09-08T15:40:49.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,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_stages,2,
-jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#3:8,Hello,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#3,SUCCESS,DONE,,0,2022-09-08T15:40:49.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,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_stages,3,
-jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#4:9,Hello,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#4,SUCCESS,DONE,,0,2022-09-08T15:40:17.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,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_stages,4,
-jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#5:10,Hello,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#5,SUCCESS,DONE,,0,2022-09-08T15:40:17.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,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_stages,5,
-jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#6:11,Hello,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#6,SUCCESS,DONE,,0,2022-09-08T15:40:34.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,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_stages,6,
-jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#7:12,gitlabInit,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#7,SUCCESS,OTHER,,0,2020-03-04T13:47:24.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,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_stages,13574,
-jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#8:6,gitlabInit,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#8,SUCCESS,OTHER,,215,2020-03-17T15:27:15.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,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_stages,13575,
-jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#9:7,gitlabInit,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#9,SUCCESS,OTHER,,5,2020-03-18T02:19:17.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,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_stages,13576,
+jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10:8,scp-f/b,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#10,SUCCESS,OTHER,,0,2019-10-29T04:01:34.000+00:00,2019-10-29T04:01:34.297+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_stages,13577,
+jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#11:9,gitlabInit,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#11,SUCCESS,OTHER,,1312,2021-03-09T13:35:10.000+00:00,2021-03-09T13:57:02.274+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_stages,13578,
+jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#12:1,gitlabAutoSync,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#12,SUCCESS,DONE,DEPLOYMENT,14,2020-02-07T11:54:28.000+00:00,2020-02-07T11:54:42.118+00:00,PRODUCTION,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins
 [...]
+jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#13:2,gitlabInit,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#13,SUCCESS,OTHER,,5,2020-03-18T02:19:17.000+00:00,2020-03-18T02:19:22.859+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_stages,13580,
+jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#14:3,gitlabAutoSync,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#14,SUCCESS,DONE,DEPLOYMENT,83,2020-03-12T02:45:25.000+00:00,2020-03-12T02:46:48.641+00:00,PRODUCTION,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins
 [...]
+jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#1:6,Hello,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#1,SUCCESS,DONE,,0,2022-09-08T15:40:34.000+00:00,2022-09-08T15:40:34.079+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_stages,1,
+jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#2:7,Hello,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#2,SUCCESS,DONE,,0,2022-09-08T15:40:49.000+00:00,2022-09-08T15:40:49.122+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_stages,2,
+jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#3:8,Hello,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#3,SUCCESS,DONE,,0,2022-09-08T15:40:49.000+00:00,2022-09-08T15:40:49.122+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_stages,3,
+jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#4:9,Hello,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#4,SUCCESS,DONE,,0,2022-09-08T15:40:17.000+00:00,2022-09-08T15:40:17.258+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_stages,4,
+jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#5:10,Hello,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#5,SUCCESS,DONE,,0,2022-09-08T15:40:17.000+00:00,2022-09-08T15:40:17.258+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_stages,5,
+jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#6:11,Hello,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#6,SUCCESS,DONE,,0,2022-09-08T15:40:34.000+00:00,2022-09-08T15:40:34.079+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_stages,6,
+jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#7:12,gitlabInit,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#7,SUCCESS,OTHER,,0,2020-03-04T13:47:24.000+00:00,2020-03-04T13:47:24.588+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_stages,13574,
+jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#8:6,gitlabInit,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#8,SUCCESS,OTHER,,215,2020-03-17T15:27:15.000+00:00,2020-03-17T15:30:50.100+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_stages,13575,
+jenkins:JenkinsStage:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#9:7,gitlabInit,jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#9,SUCCESS,OTHER,,5,2020-03-18T02:19:17.000+00:00,2020-03-18T02:19:22.859+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_stages,13576,
diff --git a/backend/plugins/jenkins/tasks/build_cicd_convertor.go 
b/backend/plugins/jenkins/tasks/build_cicd_convertor.go
index add8e510f..485814d3e 100644
--- a/backend/plugins/jenkins/tasks/build_cicd_convertor.go
+++ b/backend/plugins/jenkins/tasks/build_cicd_convertor.go
@@ -70,7 +70,14 @@ func ConvertBuildsToCicdTasks(taskCtx plugin.SubTaskContext) 
(err errors.Error)
                },
                Convert: func(inputRow interface{}) ([]interface{}, 
errors.Error) {
                        jenkinsBuild := inputRow.(*models.JenkinsBuild)
-                       durationSec := int64(jenkinsBuild.Duration / 1000)
+                       var durationMillis float64
+                       if jenkinsBuild.Duration > 0 {
+                               durationMillis = jenkinsBuild.Duration
+                       } else {
+                               durationMillis = 0
+                       }
+                       durationSec := durationMillis / 1e3
+
                        jenkinsPipelineStatus := 
devops.GetStatusCommon(&devops.StatusRuleCommon[bool]{
                                InProgress: []bool{true},
                                Done:       []bool{false},
@@ -88,7 +95,7 @@ func ConvertBuildsToCicdTasks(taskCtx plugin.SubTaskContext) 
(err errors.Error)
                        results := make([]interface{}, 0)
 
                        if jenkinsPipelineStatus == devops.STATUS_DONE {
-                               finishTime := 
jenkinsBuild.StartTime.Add(time.Duration(durationSec * int64(time.Second)))
+                               finishTime := 
jenkinsBuild.StartTime.Add(time.Duration(int64(durationMillis) * 
int64(time.Millisecond)))
                                jenkinsPipelineFinishedDate = &finishTime
                        }
                        jenkinsPipeline := &devops.CICDPipeline{
@@ -99,7 +106,7 @@ func ConvertBuildsToCicdTasks(taskCtx plugin.SubTaskContext) 
(err errors.Error)
                                Result:       jenkinsPipelineResult,
                                Status:       jenkinsPipelineStatus,
                                FinishedDate: jenkinsPipelineFinishedDate,
-                               DurationSec:  uint64(durationSec),
+                               DurationSec:  durationSec,
                                CreatedDate:  jenkinsBuild.StartTime,
                                CicdScopeId:  
jobIdGen.Generate(jenkinsBuild.ConnectionId, data.Options.JobFullName),
                                Type:         
data.RegexEnricher.ReturnNameIfMatched(devops.DEPLOYMENT, 
jenkinsBuild.FullName),
@@ -116,7 +123,7 @@ func ConvertBuildsToCicdTasks(taskCtx 
plugin.SubTaskContext) (err errors.Error)
                                        Name:         data.Options.JobFullName,
                                        Result:       jenkinsPipelineResult,
                                        Status:       jenkinsPipelineStatus,
-                                       DurationSec:  uint64(durationSec),
+                                       DurationSec:  durationSec,
                                        StartedDate:  jenkinsBuild.StartTime,
                                        FinishedDate: 
jenkinsPipelineFinishedDate,
                                        CicdScopeId:  
jobIdGen.Generate(jenkinsBuild.ConnectionId, data.Options.JobFullName),
diff --git a/backend/plugins/jenkins/tasks/stage_convertor.go 
b/backend/plugins/jenkins/tasks/stage_convertor.go
index 76d7a0332..bb439e7b3 100644
--- a/backend/plugins/jenkins/tasks/stage_convertor.go
+++ b/backend/plugins/jenkins/tasks/stage_convertor.go
@@ -99,14 +99,13 @@ func ConvertStages(taskCtx plugin.SubTaskContext) (err 
errors.Error) {
                        if body.Name == "" {
                                return nil, err
                        }
-                       var durationMillis int
+                       var durationMillis int64
                        if body.DurationMillis > 0 {
-                               durationMillis = body.DurationMillis
+                               durationMillis = int64(body.DurationMillis)
                        } else {
-                               durationMillis = 0
+                               durationMillis = int64(0)
                        }
-
-                       durationSec := int64(durationMillis / 1000)
+                       durationSec := float64(durationMillis / 1e3)
                        jenkinsTaskResult := 
devops.GetResult(&devops.ResultRule{
                                Success: []string{SUCCESS},
                                Failure: []string{FAILED, FAILURE, ABORTED},
@@ -122,7 +121,7 @@ func ConvertStages(taskCtx plugin.SubTaskContext) (err 
errors.Error) {
                        var jenkinsTaskFinishedDate *time.Time
                        results := make([]interface{}, 0)
                        startedDate := time.Unix(body.StartTimeMillis/1000, 0)
-                       finishedDate := 
startedDate.Add(time.Duration(durationSec * int64(time.Second)))
+                       finishedDate := 
startedDate.Add(time.Duration(durationMillis * int64(time.Millisecond)))
                        jenkinsTaskFinishedDate = &finishedDate
                        jenkinsTask := &devops.CICDTask{
                                DomainEntity: domainlayer.DomainEntity{
@@ -132,7 +131,7 @@ func ConvertStages(taskCtx plugin.SubTaskContext) (err 
errors.Error) {
                                PipelineId:   
buildIdGen.Generate(body.ConnectionId, body.BuildName),
                                Result:       jenkinsTaskResult,
                                Status:       jenkinsTaskStatus,
-                               DurationSec:  uint64(durationMillis / 1000),
+                               DurationSec:  durationSec,
                                StartedDate:  startedDate,
                                FinishedDate: jenkinsTaskFinishedDate,
                                CicdScopeId:  
jobIdGen.Generate(body.ConnectionId, data.Options.JobFullName),
diff --git a/backend/plugins/webhook/api/deployments.go 
b/backend/plugins/webhook/api/deployments.go
index 67752c72c..bb60ffcd3 100644
--- a/backend/plugins/webhook/api/deployments.go
+++ b/backend/plugins/webhook/api/deployments.go
@@ -21,6 +21,7 @@ import (
        "crypto/md5"
        "fmt"
        "github.com/apache/incubator-devlake/helpers/dbhelper"
+       "github.com/go-playground/validator/v10"
        "net/http"
        "time"
 
@@ -30,8 +31,6 @@ import (
        "github.com/apache/incubator-devlake/core/plugin"
        "github.com/apache/incubator-devlake/helpers/pluginhelper/api"
        "github.com/apache/incubator-devlake/plugins/webhook/models"
-
-       "github.com/go-playground/validator/v10"
 )
 
 type WebhookDeployTaskRequest struct {
@@ -105,7 +104,7 @@ func PostDeploymentCicdTask(input *plugin.ApiResourceInput) 
(*plugin.ApiResource
        if request.Result == "" {
                request.Result = devops.RESULT_SUCCESS
        }
-       duration := 
uint64(request.FinishedDate.Sub(*request.StartedDate).Seconds())
+       duration := request.FinishedDate.Sub(*request.StartedDate).Seconds()
 
        // create a deployment_commit record
        deploymentCommit := &devops.CicdDeploymentCommit{

Reply via email to