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 bff2ef91e feat: enrich cicd_pipeline type/env for jenkins (#4959)
bff2ef91e is described below
commit bff2ef91e895cb110be244569dbcfa6a6d064d1d
Author: Klesh Wong <[email protected]>
AuthorDate: Sun Apr 23 11:35:48 2023 +0800
feat: enrich cicd_pipeline type/env for jenkins (#4959)
---
backend/plugins/jenkins/e2e/builds_test.go | 9 +++++----
.../jenkins/e2e/snapshot_tables/cicd_pipelines.csv | 16 ++++++++--------
backend/plugins/jenkins/e2e/stages_test.go | 12 +++++++-----
backend/plugins/jenkins/impl/impl.go | 15 ++++++++++++---
.../plugins/jenkins/tasks/build_cicd_convertor.go | 22 ++++++++--------------
backend/plugins/jenkins/tasks/stage_convertor.go | 13 ++-----------
backend/plugins/jenkins/tasks/task_data.go | 9 +++++----
7 files changed, 47 insertions(+), 49 deletions(-)
diff --git a/backend/plugins/jenkins/e2e/builds_test.go
b/backend/plugins/jenkins/e2e/builds_test.go
index 2ffc6ee44..aba601aba 100644
--- a/backend/plugins/jenkins/e2e/builds_test.go
+++ b/backend/plugins/jenkins/e2e/builds_test.go
@@ -22,6 +22,7 @@ import (
"github.com/apache/incubator-devlake/core/models/domainlayer/devops"
"github.com/apache/incubator-devlake/helpers/e2ehelper"
+ "github.com/apache/incubator-devlake/helpers/pluginhelper/api"
"github.com/apache/incubator-devlake/plugins/jenkins/impl"
"github.com/apache/incubator-devlake/plugins/jenkins/models"
"github.com/apache/incubator-devlake/plugins/jenkins/tasks"
@@ -32,17 +33,17 @@ func TestJenkinsBuildsDataFlow(t *testing.T) {
var jenkins impl.Jenkins
dataflowTester := e2ehelper.NewDataFlowTester(t, "jenkins", jenkins)
+ regexEnricher := api.NewRegexEnricher()
+ _ = regexEnricher.TryAdd(devops.DEPLOYMENT,
`test-sub-sub-dir\/devlake.*`)
+ _ = regexEnricher.TryAdd(devops.PRODUCTION,
`test-sub-sub-dir\/devlake.*`)
taskData := &tasks.JenkinsTaskData{
Options: &tasks.JenkinsOptions{
ConnectionId: 1,
JobName: `devlake`,
JobFullName:
`Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake`,
JobPath:
`job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/`,
- JenkinsTransformationRule:
&models.JenkinsTransformationRule{
- DeploymentPattern:
`test-sub-sub-dir\/devlake.*`,
- ProductionPattern:
`test-sub-sub-dir\/devlake.*`,
- },
},
+ RegexEnricher: regexEnricher,
}
dataflowTester.FlushTabler(&models.JenkinsBuild{})
diff --git a/backend/plugins/jenkins/e2e/snapshot_tables/cicd_pipelines.csv
b/backend/plugins/jenkins/e2e/snapshot_tables/cicd_pipelines.csv
index 401c93939..50e7be4a5 100644
--- a/backend/plugins/jenkins/e2e/snapshot_tables/cicd_pipelines.csv
+++ b/backend/plugins/jenkins/e2e/snapshot_tables/cicd_pipelines.csv
@@ -1,9 +1,9 @@
id,name,result,status,type,duration_sec,environment,created_date,finished_date,cicd_scope_id,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#11,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#11,SUCCESS,DONE,,14,,2022-04-15T10:10:16.000+00:00,2022-04-15T10:10:30.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,95,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#17,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#17,SUCCESS,DONE,,0,,2022-04-15T10:05:53.000+00:00,2022-04-15T10:05:53.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,124,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#21,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#21,SUCCESS,DONE,,2,,2022-04-15T11:35:48.000+00:00,2022-04-15T11:35:50.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,94,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#23,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#23,SUCCESS,DONE,,0,,2022-09-08T14:26:51.000+00:00,2022-09-08T14:26:51.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,96,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#27,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#27,,IN_PROGRESS,,0,,2022-04-15T10:06:17.000+00:00,,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,123,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#31,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#31,SUCCESS,DONE,,1,,2022-04-15T12:00:49.000+00:00,2022-04-15T12:00:50.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,93,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#37,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#37,SUCCESS,DONE,,0,,2022-04-15T10:06:26.000+00:00,2022-04-15T10:06:26.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,122,
-jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#47,Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#47,SUCCESS,DONE,,0,,2022-04-15T11:35:56.000+00:00,2022-04-15T11:35:56.000+00:00,jenkins:JenkinsJob:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake,"{""ConnectionId"":1,""FullName"":""Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake""}",_raw_jenkins_api_builds,121,
+jenkins:JenkinsBuild:1:Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake#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,
\ No newline at end of file
diff --git a/backend/plugins/jenkins/e2e/stages_test.go
b/backend/plugins/jenkins/e2e/stages_test.go
index 83bd34107..8f76c028d 100644
--- a/backend/plugins/jenkins/e2e/stages_test.go
+++ b/backend/plugins/jenkins/e2e/stages_test.go
@@ -18,29 +18,31 @@ limitations under the License.
package e2e
import (
+ "testing"
+
"github.com/apache/incubator-devlake/core/models/domainlayer/devops"
"github.com/apache/incubator-devlake/helpers/e2ehelper"
+ "github.com/apache/incubator-devlake/helpers/pluginhelper/api"
"github.com/apache/incubator-devlake/plugins/jenkins/impl"
"github.com/apache/incubator-devlake/plugins/jenkins/models"
"github.com/apache/incubator-devlake/plugins/jenkins/tasks"
- "testing"
)
func TestJenkinsStagesDataFlow(t *testing.T) {
var jenkins impl.Jenkins
dataflowTester := e2ehelper.NewDataFlowTester(t, "jenkins", jenkins)
+ regexEnricher := api.NewRegexEnricher()
+ _ = regexEnricher.TryAdd(devops.DEPLOYMENT, `gitlabAutoSync`)
+ _ = regexEnricher.TryAdd(devops.PRODUCTION, `gitlabAutoSync`)
taskData := &tasks.JenkinsTaskData{
Options: &tasks.JenkinsOptions{
ConnectionId: 1,
JobName: `devlake`,
JobFullName:
`Test-jenkins-dir/test-jenkins-sub-dir/test-sub-sub-dir/devlake`,
JobPath:
`job/Test-jenkins-dir/job/test-jenkins-sub-dir/job/test-sub-sub-dir/`,
- JenkinsTransformationRule:
&models.JenkinsTransformationRule{
- DeploymentPattern: `gitlabAutoSync`,
- ProductionPattern: `gitlabAutoSync`,
- },
},
+ RegexEnricher: regexEnricher,
}
// import raw data table
diff --git a/backend/plugins/jenkins/impl/impl.go
b/backend/plugins/jenkins/impl/impl.go
index fa4986cf8..59941c543 100644
--- a/backend/plugins/jenkins/impl/impl.go
+++ b/backend/plugins/jenkins/impl/impl.go
@@ -24,6 +24,7 @@ import (
"github.com/apache/incubator-devlake/core/context"
"github.com/apache/incubator-devlake/core/dal"
+ "github.com/apache/incubator-devlake/core/models/domainlayer/devops"
"github.com/apache/incubator-devlake/core/errors"
"github.com/apache/incubator-devlake/core/plugin"
@@ -131,10 +132,18 @@ func (p Jenkins) PrepareTaskData(taskCtx
plugin.TaskContext, options map[string]
return nil, errors.BadInput.Wrap(err, "invalid value
for `timeAfter`")
}
}
+ regexEnricher := helper.NewRegexEnricher()
+ if err := regexEnricher.TryAdd(devops.DEPLOYMENT,
op.DeploymentPattern); err != nil {
+ return nil, errors.BadInput.Wrap(err, "invalid value for
`deploymentPattern`")
+ }
+ if err := regexEnricher.TryAdd(devops.PRODUCTION,
op.ProductionPattern); err != nil {
+ return nil, errors.BadInput.Wrap(err, "invalid value for
`productionPattern`")
+ }
taskData := &tasks.JenkinsTaskData{
- Options: op,
- ApiClient: apiClient,
- Connection: connection,
+ Options: op,
+ ApiClient: apiClient,
+ Connection: connection,
+ RegexEnricher: regexEnricher,
}
if !timeAfter.IsZero() {
taskData.TimeAfter = &timeAfter
diff --git a/backend/plugins/jenkins/tasks/build_cicd_convertor.go
b/backend/plugins/jenkins/tasks/build_cicd_convertor.go
index 35f150bfa..13a3d2059 100644
--- a/backend/plugins/jenkins/tasks/build_cicd_convertor.go
+++ b/backend/plugins/jenkins/tasks/build_cicd_convertor.go
@@ -18,6 +18,9 @@ limitations under the License.
package tasks
import (
+ "reflect"
+ "time"
+
"github.com/apache/incubator-devlake/core/dal"
"github.com/apache/incubator-devlake/core/errors"
"github.com/apache/incubator-devlake/core/models/domainlayer"
@@ -26,8 +29,6 @@ import (
"github.com/apache/incubator-devlake/core/plugin"
"github.com/apache/incubator-devlake/helpers/pluginhelper/api"
"github.com/apache/incubator-devlake/plugins/jenkins/models"
- "reflect"
- "time"
)
var ConvertBuildsToCICDMeta = plugin.SubTaskMeta{
@@ -41,13 +42,6 @@ var ConvertBuildsToCICDMeta = plugin.SubTaskMeta{
func ConvertBuildsToCICD(taskCtx plugin.SubTaskContext) (err errors.Error) {
db := taskCtx.GetDal()
data := taskCtx.GetData().(*JenkinsTaskData)
- deploymentPattern := data.Options.DeploymentPattern
- productionPattern := data.Options.ProductionPattern
- regexEnricher := api.NewRegexEnricher()
- err = regexEnricher.AddRegexp(deploymentPattern, productionPattern)
- if err != nil {
- return err
- }
clauses := []dal.Clause{
dal.From("_tool_jenkins_builds"),
dal.Where(`_tool_jenkins_builds.connection_id = ?
@@ -108,6 +102,8 @@ func ConvertBuildsToCICD(taskCtx plugin.SubTaskContext)
(err errors.Error) {
DurationSec: uint64(durationSec),
CreatedDate: jenkinsBuild.StartTime,
CicdScopeId:
jobIdGen.Generate(jenkinsBuild.ConnectionId, data.Options.JobFullName),
+ Type:
data.RegexEnricher.ReturnNameIfMatched(devops.DEPLOYMENT,
jenkinsBuild.FullName),
+ Environment:
data.RegexEnricher.ReturnNameIfMatched(devops.PRODUCTION,
jenkinsBuild.FullName),
}
jenkinsPipeline.RawDataOrigin =
jenkinsBuild.RawDataOrigin
results = append(results, jenkinsPipeline)
@@ -124,12 +120,10 @@ func ConvertBuildsToCICD(taskCtx plugin.SubTaskContext)
(err errors.Error) {
StartedDate: jenkinsBuild.StartTime,
FinishedDate:
jenkinsPipelineFinishedDate,
CicdScopeId:
jobIdGen.Generate(jenkinsBuild.ConnectionId, data.Options.JobFullName),
+ Type:
data.RegexEnricher.ReturnNameIfMatched(devops.DEPLOYMENT,
jenkinsBuild.FullName),
+ Environment:
data.RegexEnricher.ReturnNameIfMatched(devops.PRODUCTION,
jenkinsBuild.FullName),
+ PipelineId:
buildIdGen.Generate(jenkinsBuild.ConnectionId, jenkinsBuild.FullName),
}
- jenkinsTask.Type =
regexEnricher.GetEnrichResult(deploymentPattern, jenkinsTask.Name,
devops.DEPLOYMENT)
- jenkinsTask.Environment =
regexEnricher.GetEnrichResult(productionPattern, jenkinsTask.Name,
devops.PRODUCTION)
-
- jenkinsTask.PipelineId =
buildIdGen.Generate(jenkinsBuild.ConnectionId, jenkinsBuild.FullName)
- jenkinsTask.RawDataOrigin =
jenkinsBuild.RawDataOrigin
results = append(results, jenkinsTask)
}
diff --git a/backend/plugins/jenkins/tasks/stage_convertor.go
b/backend/plugins/jenkins/tasks/stage_convertor.go
index ec9d55b70..ebae9ecf3 100644
--- a/backend/plugins/jenkins/tasks/stage_convertor.go
+++ b/backend/plugins/jenkins/tasks/stage_convertor.go
@@ -62,13 +62,6 @@ var ConvertStagesMeta = plugin.SubTaskMeta{
func ConvertStages(taskCtx plugin.SubTaskContext) (err errors.Error) {
db := taskCtx.GetDal()
data := taskCtx.GetData().(*JenkinsTaskData)
- deploymentPattern := data.Options.DeploymentPattern
- productionPattern := data.Options.ProductionPattern
- regexEnricher := api.NewRegexEnricher()
- err = regexEnricher.AddRegexp(deploymentPattern, productionPattern)
- if err != nil {
- return err
- }
clauses := []dal.Clause{
dal.Select(`tjb.connection_id, tjs.build_name, tjs.id,
tjs._raw_data_remark, tjs.name,
tjs._raw_data_id, tjs._raw_data_table,
tjs._raw_data_params,
@@ -137,11 +130,9 @@ func ConvertStages(taskCtx plugin.SubTaskContext) (err
errors.Error) {
StartedDate: startedDate,
FinishedDate: jenkinsTaskFinishedDate,
CicdScopeId:
jobIdGen.Generate(body.ConnectionId, data.Options.JobFullName),
+ Type:
data.RegexEnricher.ReturnNameIfMatched(devops.DEPLOYMENT, body.Name),
+ Environment:
data.RegexEnricher.ReturnNameIfMatched(devops.PRODUCTION, body.Name),
}
- jenkinsTask.Type =
regexEnricher.GetEnrichResult(deploymentPattern, jenkinsTask.Name,
devops.DEPLOYMENT)
- jenkinsTask.Environment =
regexEnricher.GetEnrichResult(productionPattern, jenkinsTask.Name,
devops.PRODUCTION)
- jenkinsTask.RawDataOrigin = body.RawDataOrigin
-
results = append(results, jenkinsTask)
return results, nil
},
diff --git a/backend/plugins/jenkins/tasks/task_data.go
b/backend/plugins/jenkins/tasks/task_data.go
index 2c340c1c4..f2bccf514 100644
--- a/backend/plugins/jenkins/tasks/task_data.go
+++ b/backend/plugins/jenkins/tasks/task_data.go
@@ -44,10 +44,11 @@ type JenkinsOptions struct {
}
type JenkinsTaskData struct {
- Options *JenkinsOptions
- ApiClient *api.ApiAsyncClient
- Connection *models.JenkinsConnection
- TimeAfter *time.Time
+ Options *JenkinsOptions
+ ApiClient *api.ApiAsyncClient
+ Connection *models.JenkinsConnection
+ TimeAfter *time.Time
+ RegexEnricher *api.RegexEnricher
}
func DecodeTaskOptions(options map[string]interface{}) (*JenkinsOptions,
errors.Error) {