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 273209edc refactor: use plan rather than project as bamboo scope
(#5771)
273209edc is described below
commit 273209edc8a664ed5a814e1bd586f757ac3b7bd5
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Jul 31 18:46:52 2023 +0800
refactor: use plan rather than project as bamboo scope (#5771)
* refactor: use plan rather than project as bamboo scope
* fix: add ScopeFullName methor to BambooPlan
* fix: lint error
* fix: case issue of scopes API
* fix: the lint error
* fix: e2e test
* fix: e2e test
---
backend/plugins/bamboo/api/blueprint_V200_test.go | 20 +--
backend/plugins/bamboo/api/blueprint_v200.go | 4 +-
backend/plugins/bamboo/api/connection.go | 3 +
backend/plugins/bamboo/api/init.go | 16 +--
backend/plugins/bamboo/api/remote.go | 78 +++++------
backend/plugins/bamboo/api/scope.go | 57 ++++----
backend/plugins/bamboo/e2e/deploy_build_test.go | 2 +-
backend/plugins/bamboo/e2e/deploy_test.go | 6 +-
backend/plugins/bamboo/e2e/job_build_test.go | 6 +-
backend/plugins/bamboo/e2e/job_test.go | 4 +-
.../plugins/bamboo/e2e/plan_build_commits_test.go | 4 +-
backend/plugins/bamboo/e2e/plan_build_test.go | 5 +-
backend/plugins/bamboo/e2e/plan_test.go | 40 ++----
.../e2e/raw_tables/_raw_bamboo_api_deploy.csv | 8 +-
.../raw_tables/_raw_bamboo_api_deploy_build.csv | 18 +--
.../bamboo/e2e/raw_tables/_raw_bamboo_api_job.csv | 8 +-
.../e2e/raw_tables/_raw_bamboo_api_job_build.csv | 13 +-
.../bamboo/e2e/raw_tables/_raw_bamboo_api_plan.csv | 5 -
.../e2e/raw_tables/_raw_bamboo_api_plan_build.csv | 13 +-
.../snapshot_tables/_tool_bamboo_deploy_build.csv | 18 +--
.../_tool_bamboo_deploy_environment.csv | 10 +-
.../snapshot_tables/_tool_bamboo_job_builds.csv | 11 +-
.../_tool_bamboo_job_builds_no_prod_env.csv | 11 +-
.../e2e/snapshot_tables/_tool_bamboo_jobs.csv | 5 +-
.../_tool_bamboo_plan_build_commits.csv | 4 +-
.../snapshot_tables/_tool_bamboo_plan_builds.csv | 11 +-
.../e2e/snapshot_tables/_tool_bamboo_plans.csv | 5 +-
.../e2e/snapshot_tables/cicd_pipeline_commits.csv | 4 +-
.../bamboo/e2e/snapshot_tables/cicd_pipelines.csv | 11 +-
.../bamboo/e2e/snapshot_tables/cicd_scopes.csv | 2 +
.../bamboo/e2e/snapshot_tables/cicd_tasks.csv | 11 +-
.../e2e/snapshot_tables/cicd_tasks_deploy.csv | 18 +--
backend/plugins/bamboo/impl/impl.go | 36 ++---
backend/plugins/bamboo/models/deploy_build.go | 2 +-
...er.go => 20230725_add_scopeConfigId_to_plan.go} | 33 +++--
.../bamboo/models/migrationscripts/register.go | 1 +
backend/plugins/bamboo/models/plan.go | 152 +++++++++++++--------
backend/plugins/bamboo/models/project.go | 118 ----------------
backend/plugins/bamboo/models/task.go | 4 +-
.../plugins/bamboo/tasks/deploy_build_collector.go | 7 +-
.../plugins/bamboo/tasks/deploy_build_convertor.go | 6 +-
.../plugins/bamboo/tasks/deploy_build_extractor.go | 2 +-
backend/plugins/bamboo/tasks/deploy_extractor.go | 53 ++-----
.../plugins/bamboo/tasks/job_build_collector.go | 2 +-
.../plugins/bamboo/tasks/job_build_convertor.go | 9 +-
.../plugins/bamboo/tasks/job_build_extractor.go | 3 +-
backend/plugins/bamboo/tasks/job_collector.go | 31 +----
backend/plugins/bamboo/tasks/job_extractor.go | 8 +-
.../plugins/bamboo/tasks/plan_build_collector.go | 31 +----
.../plugins/bamboo/tasks/plan_build_convertor.go | 9 +-
.../plugins/bamboo/tasks/plan_build_extractor.go | 8 +-
backend/plugins/bamboo/tasks/plan_collector.go | 83 -----------
.../plugins/bamboo/tasks/plan_commit_convertor.go | 2 +-
.../{project_convertor.go => plan_convertor.go} | 39 +++---
backend/plugins/bamboo/tasks/plan_extractor.go | 61 ---------
backend/plugins/bamboo/tasks/shared.go | 2 +-
56 files changed, 369 insertions(+), 764 deletions(-)
diff --git a/backend/plugins/bamboo/api/blueprint_V200_test.go
b/backend/plugins/bamboo/api/blueprint_V200_test.go
index ce74bd2b7..113a5e738 100644
--- a/backend/plugins/bamboo/api/blueprint_V200_test.go
+++ b/backend/plugins/bamboo/api/blueprint_V200_test.go
@@ -40,7 +40,7 @@ func TestMakeDataSourcePipelinePlanV200(t *testing.T) {
const testScopeConfigId uint64 = 2
const testKey string = "TEST"
const testBambooEndPoint string =
"http://mail.nddtf.com:8085/rest/api/latest/"
- const testLink string =
"http://mail.nddtf.com:8085/rest/api/latest/project/TEST"
+ const testLink string =
"http://mail.nddtf.com:8085/rest/api/latest/plan/TEST"
const testUser string = "username"
const testPass string = "password"
const testName string = "bamboo-test"
@@ -55,9 +55,9 @@ func TestMakeDataSourcePipelinePlanV200(t *testing.T) {
},
}
- var testBambooProject = &models.BambooProject{
+ var testBambooPlan = &models.BambooPlan{
ConnectionId: testConnectionID,
- ProjectKey: testKey,
+ PlanKey: testKey,
Name: testName,
Href: testLink,
@@ -94,10 +94,10 @@ func TestMakeDataSourcePipelinePlanV200(t *testing.T) {
},
}
- var expectRepoId = "bamboo:BambooProject:1:TEST"
+ var expectRepoId = "bamboo:BambooPlan:1:TEST"
var testSubTaskMeta = []plugin.SubTaskMeta{
- tasks.ConvertProjectsMeta,
+ tasks.ConvertPlansMeta,
}
var expectPlans = plugin.PipelinePlan{
@@ -105,11 +105,11 @@ func TestMakeDataSourcePipelinePlanV200(t *testing.T) {
{
Plugin: "bamboo",
Subtasks: []string{
- tasks.ConvertProjectsMeta.Name,
+ tasks.ConvertPlansMeta.Name,
},
Options: map[string]interface{}{
"connectionId": uint64(1),
- "projectKey": testKey,
+ "planKey": testKey,
"scopeConfigId": testScopeConfigId,
},
},
@@ -136,9 +136,9 @@ func TestMakeDataSourcePipelinePlanV200(t *testing.T) {
*dst = *testBambooConnection
}).Return(nil)
- mockDal.On("First",
mock.AnythingOfType("*models.BambooProject"), mock.Anything).Run(func(args
mock.Arguments) {
- dst := args.Get(0).(*models.BambooProject)
- *dst = *testBambooProject
+ mockDal.On("First", mock.AnythingOfType("*models.BambooPlan"),
mock.Anything).Run(func(args mock.Arguments) {
+ dst := args.Get(0).(*models.BambooPlan)
+ *dst = *testBambooPlan
}).Return(nil)
mockDal.On("First",
mock.AnythingOfType("*models.BambooScopeConfig"), mock.Anything).Run(func(args
mock.Arguments) {
diff --git a/backend/plugins/bamboo/api/blueprint_v200.go
b/backend/plugins/bamboo/api/blueprint_v200.go
index 88e2d7476..2c5429c31 100644
--- a/backend/plugins/bamboo/api/blueprint_v200.go
+++ b/backend/plugins/bamboo/api/blueprint_v200.go
@@ -61,7 +61,7 @@ func makeScopeV200(connectionId uint64, scopes
[]*plugin.BlueprintScopeV200) ([]
sc := make([]plugin.Scope, 0, len(scopes))
for _, scope := range scopes {
- id :=
didgen.NewDomainIdGenerator(&models.BambooProject{}).Generate(connectionId,
scope.Id)
+ id :=
didgen.NewDomainIdGenerator(&models.BambooPlan{}).Generate(connectionId,
scope.Id)
// get project from db
project, scopeConfig, err :=
scopeHelper.DbHelper().GetScopeAndConfig(connectionId, scope.Id)
@@ -98,7 +98,7 @@ func makePipelinePlanV200(
// bamboo main part
options := make(map[string]interface{})
options["connectionId"] = connection.ID
- options["projectKey"] = scope.Id
+ options["planKey"] = scope.Id
options["scopeConfigId"] = scopeConfig.ID
// construct subtasks
diff --git a/backend/plugins/bamboo/api/connection.go
b/backend/plugins/bamboo/api/connection.go
index 5e6f8f893..91df4cefe 100644
--- a/backend/plugins/bamboo/api/connection.go
+++ b/backend/plugins/bamboo/api/connection.go
@@ -89,6 +89,7 @@ func PostConnections(input *plugin.ApiResourceInput)
(*plugin.ApiResourceOutput,
// @Description Patch bamboo connection
// @Tags plugins/bamboo
// @Param body body models.BambooConnection true "json body"
+// @Param connectionId path int true "connection ID"
// @Success 200 {object} models.BambooConnection
// @Failure 400 {string} errcode.Error "Bad Request"
// @Failure 500 {string} errcode.Error "Internel Error"
@@ -105,6 +106,7 @@ func PatchConnection(input *plugin.ApiResourceInput)
(*plugin.ApiResourceOutput,
// @Summary delete a bamboo connection
// @Description Delete a bamboo connection
// @Tags plugins/bamboo
+// @Param connectionId path int true "connection ID"
// @Success 200 {object} models.BambooConnection
// @Failure 400 {string} errcode.Error "Bad Request"
// @Failure 409 {object} services.BlueprintProjectPairs "References exist to
this connection"
@@ -133,6 +135,7 @@ func ListConnections(input *plugin.ApiResourceInput)
(*plugin.ApiResourceOutput,
// @Summary get bamboo connection detail
// @Description Get bamboo connection detail
// @Tags plugins/bamboo
+// @Param connectionId path int true "connection ID"
// @Success 200 {object} models.BambooConnection
// @Failure 400 {string} errcode.Error "Bad Request"
// @Failure 500 {string} errcode.Error "Internel Error"
diff --git a/backend/plugins/bamboo/api/init.go
b/backend/plugins/bamboo/api/init.go
index 3122788a3..91b151f45 100644
--- a/backend/plugins/bamboo/api/init.go
+++ b/backend/plugins/bamboo/api/init.go
@@ -27,8 +27,8 @@ import (
var vld *validator.Validate
var connectionHelper *api.ConnectionApiHelper
-var scopeHelper *api.ScopeApiHelper[models.BambooConnection,
models.BambooProject, models.BambooScopeConfig]
-var remoteHelper *api.RemoteApiHelper[models.BambooConnection,
models.BambooProject, models.ApiBambooProject, api.NoRemoteGroupResponse]
+var scopeHelper *api.ScopeApiHelper[models.BambooConnection,
models.BambooPlan, models.BambooScopeConfig]
+var remoteHelper *api.RemoteApiHelper[models.BambooConnection,
models.BambooPlan, models.ApiBambooPlan, api.NoRemoteGroupResponse]
var scopeConfigHelper *api.ScopeConfigHelper[models.BambooScopeConfig]
var basicRes context.BasicRes
@@ -43,20 +43,20 @@ func Init(br context.BasicRes, p plugin.PluginMeta) {
p.Name(),
)
params := &api.ReflectionParameters{
- ScopeIdFieldName: "ProjectKey",
- ScopeIdColumnName: "project_key",
- RawScopeParamName: "ProjectKey",
+ ScopeIdFieldName: "PlanKey",
+ ScopeIdColumnName: "plan_key",
+ RawScopeParamName: "PlanKey",
}
- scopeHelper = api.NewScopeHelper[models.BambooConnection,
models.BambooProject, models.BambooScopeConfig](
+ scopeHelper = api.NewScopeHelper[models.BambooConnection,
models.BambooPlan, models.BambooScopeConfig](
basicRes,
vld,
connectionHelper,
- api.NewScopeDatabaseHelperImpl[models.BambooConnection,
models.BambooProject, models.BambooScopeConfig](
+ api.NewScopeDatabaseHelperImpl[models.BambooConnection,
models.BambooPlan, models.BambooScopeConfig](
basicRes, connectionHelper, params),
params,
nil,
)
- remoteHelper = api.NewRemoteHelper[models.BambooConnection,
models.BambooProject, models.ApiBambooProject, api.NoRemoteGroupResponse](
+ remoteHelper = api.NewRemoteHelper[models.BambooConnection,
models.BambooPlan, models.ApiBambooPlan, api.NoRemoteGroupResponse](
basicRes,
vld,
connectionHelper,
diff --git a/backend/plugins/bamboo/api/remote.go
b/backend/plugins/bamboo/api/remote.go
index 7e1e8bbfe..54174c7cc 100644
--- a/backend/plugins/bamboo/api/remote.go
+++ b/backend/plugins/bamboo/api/remote.go
@@ -24,9 +24,7 @@ import (
"github.com/apache/incubator-devlake/core/errors"
"github.com/apache/incubator-devlake/core/plugin"
"github.com/apache/incubator-devlake/helpers/pluginhelper/api"
- aha
"github.com/apache/incubator-devlake/helpers/pluginhelper/api/apihelperabstract"
"github.com/apache/incubator-devlake/plugins/bamboo/models"
- "net/http"
"net/url"
)
@@ -43,28 +41,7 @@ import (
// @Failure 500 {object} shared.ApiBody "Internal Error"
// @Router /plugins/bamboo/connections/{connectionId}/remote-scopes [GET]
func RemoteScopes(input *plugin.ApiResourceInput) (*plugin.ApiResourceOutput,
errors.Error) {
- return remoteHelper.GetScopesFromRemote(input,
- nil,
- func(basicRes context2.BasicRes, gid string, queryData
*api.RemoteQueryData, connection models.BambooConnection)
([]models.ApiBambooProject, errors.Error) {
- query := initialQuery(queryData)
- // create api client
- apiClient, err :=
api.NewApiClientFromConnection(context.TODO(), basicRes, &connection)
- if err != nil {
- return nil, err
- }
- res, err := apiClient.Get("/project.json", query, nil)
-
- if err != nil {
- return nil, err
- }
-
- resBody := models.ApiBambooProjectResponse{}
- err = api.UnmarshalResponse(res, &resBody)
- if err != nil {
- return nil, err
- }
- return resBody.Projects.Projects, err
- })
+ return remoteHelper.GetScopesFromRemote(input, nil, getRemotePlans)
}
// SearchRemoteScopes use the Search API and only return project
@@ -82,7 +59,7 @@ func RemoteScopes(input *plugin.ApiResourceInput)
(*plugin.ApiResourceOutput, er
// @Router /plugins/bamboo/connections/{connectionId}/search-remote-scopes
[GET]
func SearchRemoteScopes(input *plugin.ApiResourceInput)
(*plugin.ApiResourceOutput, errors.Error) {
return remoteHelper.SearchRemoteScopes(input,
- func(basicRes context2.BasicRes, queryData
*api.RemoteQueryData, connection models.BambooConnection)
([]models.ApiBambooProject, errors.Error) {
+ func(basicRes context2.BasicRes, queryData
*api.RemoteQueryData, connection models.BambooConnection)
([]models.ApiBambooPlan, errors.Error) {
apiClient, err :=
api.NewApiClientFromConnection(context.TODO(), basicRes, &connection)
if err != nil {
return nil, errors.BadInput.Wrap(err, "failed
to get create apiClient")
@@ -90,26 +67,21 @@ func SearchRemoteScopes(input *plugin.ApiResourceInput)
(*plugin.ApiResourceOutp
query := initialQuery(queryData)
query.Set("searchTerm", queryData.Search[0])
// request search
- res, err := apiClient.Get("search/projects.json",
query, nil)
+ res, err := apiClient.Get("search/plans.json", query,
nil)
if err != nil {
return nil, err
}
- resBody := models.ApiBambooSearchProjectResponse{}
+ resBody := models.ApiBambooSearchPlanResponse{}
err = api.UnmarshalResponse(res, &resBody)
if err != nil {
return nil, err
}
- var apiBambooProjects []models.ApiBambooProject
+ var apiBambooPlans []models.ApiBambooPlan
// append project to output
for _, apiResult := range resBody.SearchResults {
- apiProject, err :=
GetApiProject(apiResult.SearchEntity.Key, apiClient)
- if err != nil {
- return nil, err
- }
-
- apiBambooProjects = append(apiBambooProjects,
*apiProject)
+ apiBambooPlans = append(apiBambooPlans,
apiResult.Entity)
}
- return apiBambooProjects, err
+ return apiBambooPlans, err
})
}
@@ -121,23 +93,35 @@ func initialQuery(queryData *api.RemoteQueryData)
url.Values {
return query
}
-// move from blueprint_v200 because of cycle import
-func GetApiProject(
- projectKey string,
- apiClient aha.ApiClientAbstract,
-) (*models.ApiBambooProject, errors.Error) {
- projectRes := &models.ApiBambooProject{}
- res, err := apiClient.Get(fmt.Sprintf("project/%s.json", projectKey),
nil, nil)
+func getRemotePlans(basicRes context2.BasicRes, gid string, queryData
*api.RemoteQueryData, connection models.BambooConnection)
([]models.ApiBambooPlan, errors.Error) {
+ query := initialQuery(queryData)
+ // create api client
+ apiClient, err := api.NewApiClientFromConnection(context.TODO(),
basicRes, &connection)
+ if err != nil {
+ return nil, err
+ }
+ res, err := apiClient.Get("plan.json", query, nil)
+
if err != nil {
return nil, err
}
- defer res.Body.Close()
- if res.StatusCode != http.StatusOK {
- return nil,
errors.HttpStatus(res.StatusCode).New(fmt.Sprintf("unexpected status code when
requesting project detail from %s", res.Request.URL.String()))
+ var planRes struct {
+ Expand string `json:"expand"`
+ Link struct {
+ Href string `json:"href"`
+ Rel string `json:"rel"`
+ } `json:"link"`
+ Plans struct {
+ Size int `json:"size"`
+ Expand string `json:"expand"`
+ StartIndex int `json:"start-index"`
+ MaxResult int `json:"max-result"`
+ Plan []models.ApiBambooPlan `json:"plan"`
+ } `json:"plans"`
}
- err = api.UnmarshalResponse(res, projectRes)
+ err = api.UnmarshalResponse(res, &planRes)
if err != nil {
return nil, err
}
- return projectRes, nil
+ return planRes.Plans.Plan, err
}
diff --git a/backend/plugins/bamboo/api/scope.go
b/backend/plugins/bamboo/api/scope.go
index beffd29fa..526e98ec9 100644
--- a/backend/plugins/bamboo/api/scope.go
+++ b/backend/plugins/bamboo/api/scope.go
@@ -20,25 +20,22 @@ package api
import (
"github.com/apache/incubator-devlake/core/errors"
"github.com/apache/incubator-devlake/core/plugin"
- "github.com/apache/incubator-devlake/helpers/pluginhelper/api"
"github.com/apache/incubator-devlake/plugins/bamboo/models"
)
-type ScopeRes struct {
- models.BambooProject
- api.ScopeResDoc[models.BambooScopeConfig]
+// nolint
+type scopeReq struct {
+ Data []models.BambooPlan `json:"data"`
}
-type ScopeReq api.ScopeReq[models.BambooProject]
-
-// PutScope create or update bamboo project
-// @Summary create or update bamboo project
-// @Description Create or update bamboo project
+// PutScope create or update bamboo plan
+// @Summary create or update bamboo plan
+// @Description Create or update bamboo plan
// @Tags plugins/bamboo
// @Accept application/json
-// @Param connectionId path int false "connection ID"
-// @Param scope body ScopeReq true "json"
-// @Success 200 {object} []models.BambooProject
+// @Param connectionId path int true "connection ID"
+// @Param scope body scopeReq true "json"
+// @Success 200 {object} models.BambooPlan
// @Failure 400 {object} shared.ApiBody "Bad Request"
// @Failure 500 {object} shared.ApiBody "Internal Error"
// @Router /plugins/bamboo/connections/{connectionId}/scopes [PUT]
@@ -46,15 +43,15 @@ func PutScope(input *plugin.ApiResourceInput)
(*plugin.ApiResourceOutput, errors
return scopeHelper.Put(input)
}
-// UpdateScope patch to bamboo project
-// @Summary patch to bamboo project
-// @Description patch to bamboo project
+// UpdateScope patch to bamboo plan
+// @Summary patch to bamboo plan
+// @Description patch to bamboo plan
// @Tags plugins/bamboo
// @Accept application/json
-// @Param connectionId path int false "connection ID"
-// @Param scopeId path int false "project ID"
-// @Param scope body models.BambooProject true "json"
-// @Success 200 {object} models.BambooProject
+// @Param connectionId path int true "connection ID"
+// @Param scopeId path int true "plan key"
+// @Param scope body models.BambooPlan true "json"
+// @Success 200 {object} models.BambooPlan
// @Failure 400 {object} shared.ApiBody "Bad Request"
// @Failure 500 {object} shared.ApiBody "Internal Error"
// @Router /plugins/bamboo/connections/{connectionId}/scopes/{scopeId} [PATCH]
@@ -62,14 +59,14 @@ func UpdateScope(input *plugin.ApiResourceInput)
(*plugin.ApiResourceOutput, err
return scopeHelper.Update(input)
}
-// GetScopeList get Bamboo projects
-// @Summary get Bamboo projects
-// @Description get Bamboo projects
+// GetScopeList get Bamboo plans
+// @Summary get Bamboo plans
+// @Description get Bamboo plans
// @Tags plugins/bamboo
-// @Param connectionId path int false "connection ID"
+// @Param connectionId path int true "connection ID"
// @Param searchTerm query string false "search term for scope name"
// @Param blueprints query bool false "also return blueprints using these
scopes as part of the payload"
-// @Success 200 {object} []ScopeRes
+// @Success 200 {object} []models.BambooPlan
// @Failure 400 {object} shared.ApiBody "Bad Request"
// @Failure 500 {object} shared.ApiBody "Internal Error"
// @Router /plugins/bamboo/connections/{connectionId}/scopes/ [GET]
@@ -77,15 +74,15 @@ func GetScopeList(input *plugin.ApiResourceInput)
(*plugin.ApiResourceOutput, er
return scopeHelper.GetScopeList(input)
}
-// GetScope get one Bamboo project
-// @Summary get one Bamboo project
-// @Description get one Bamboo project
+// GetScope get one Bamboo plan
+// @Summary get one Bamboo plan
+// @Description get one Bamboo plan
// @Tags plugins/bamboo
-// @Param connectionId path int false "connection ID"
-// @Param scopeId path int false "project ID"
+// @Param connectionId path int true "connection ID"
+// @Param scopeId path int true "plan key"
// @Param pageSize query int false "page size, default 50"
// @Param page query int false "page size, default 1"
-// @Success 200 {object} ScopeRes
+// @Success 200 {object} models.BambooPlan
// @Failure 400 {object} shared.ApiBody "Bad Request"
// @Failure 500 {object} shared.ApiBody "Internal Error"
// @Router /plugins/bamboo/connections/{connectionId}/scopes/{scopeId} [GET]
diff --git a/backend/plugins/bamboo/e2e/deploy_build_test.go
b/backend/plugins/bamboo/e2e/deploy_build_test.go
index 8fac7a33e..b3c913b95 100644
--- a/backend/plugins/bamboo/e2e/deploy_build_test.go
+++ b/backend/plugins/bamboo/e2e/deploy_build_test.go
@@ -35,7 +35,7 @@ func TestBambooDeployBuildDataFlow(t *testing.T) {
taskData := &tasks.BambooTaskData{
Options: &models.BambooOptions{
ConnectionId: 1,
- ProjectKey: "TEST1",
+ PlanKey: "TEST1",
BambooScopeConfig: &models.BambooScopeConfig{
DeploymentPattern: "(?i)release",
ProductionPattern: "(?i)release",
diff --git a/backend/plugins/bamboo/e2e/deploy_test.go
b/backend/plugins/bamboo/e2e/deploy_test.go
index 079043a94..44f34c1df 100644
--- a/backend/plugins/bamboo/e2e/deploy_test.go
+++ b/backend/plugins/bamboo/e2e/deploy_test.go
@@ -31,8 +31,8 @@ func TestBambooDeployDataFlow(t *testing.T) {
dataflowTester := e2ehelper.NewDataFlowTester(t, "bamboo", bamboo)
taskData := &tasks.BambooTaskData{
Options: &models.BambooOptions{
- ConnectionId: 3,
- ProjectKey: "TEST1",
+ ConnectionId: 1,
+ PlanKey: "TEST1",
BambooScopeConfig: new(models.BambooScopeConfig),
},
}
@@ -40,7 +40,7 @@ func TestBambooDeployDataFlow(t *testing.T) {
// import raw data table
dataflowTester.ImportCsvIntoRawTable("./raw_tables/_raw_bamboo_api_deploy.csv",
"_raw_bamboo_api_deploy")
// it need import plan data
-
dataflowTester.ImportCsvIntoTabler("./raw_tables/_tool_bamboo_plans_for_deploy.csv",
models.BambooPlan{})
+
//dataflowTester.ImportCsvIntoTabler("./raw_tables/_tool_bamboo_plans_for_deploy.csv",
models.BambooPlan{})
// verify extraction
dataflowTester.FlushTabler(&models.BambooDeployEnvironment{})
diff --git a/backend/plugins/bamboo/e2e/job_build_test.go
b/backend/plugins/bamboo/e2e/job_build_test.go
index 1c8ef1c6c..9d03705f0 100644
--- a/backend/plugins/bamboo/e2e/job_build_test.go
+++ b/backend/plugins/bamboo/e2e/job_build_test.go
@@ -35,8 +35,8 @@ func TestBambooJobBuildDataFlow(t *testing.T) {
dataflowTester := e2ehelper.NewDataFlowTester(t, "bamboo", bamboo)
taskData := &tasks.BambooTaskData{
Options: &models.BambooOptions{
- ConnectionId: 3,
- ProjectKey: "TEST1",
+ ConnectionId: 1,
+ PlanKey: "TEST-PLA3",
BambooScopeConfig: &models.BambooScopeConfig{
DeploymentPattern: "(?i)compile",
ProductionPattern: "(?i)compile",
@@ -51,7 +51,7 @@ func TestBambooJobBuildDataFlow(t *testing.T) {
// verify env when production regex is not set
dataflowTester.FlushTabler(&models.BambooJobBuild{})
- dataflowTester.Subtask(tasks.ExtractJobBuildMeta, taskData)
+ dataflowTester.FlushTabler(&models.BambooPlanBuildVcsRevision{})
dataflowTester.Subtask(tasks.ExtractJobBuildMeta, taskData)
dataflowTester.VerifyTable(
models.BambooJobBuild{},
diff --git a/backend/plugins/bamboo/e2e/job_test.go
b/backend/plugins/bamboo/e2e/job_test.go
index c1a32db8c..ee224191d 100644
--- a/backend/plugins/bamboo/e2e/job_test.go
+++ b/backend/plugins/bamboo/e2e/job_test.go
@@ -33,8 +33,8 @@ func TestBambooJobDataFlow(t *testing.T) {
taskData := &tasks.BambooTaskData{
Options: &models.BambooOptions{
- ConnectionId: 3,
- ProjectKey: "TEST1",
+ ConnectionId: 1,
+ PlanKey: "TEST-PLA1",
BambooScopeConfig: &models.BambooScopeConfig{
DeploymentPattern: "(?i)compile",
ProductionPattern: "(?i)compile",
diff --git a/backend/plugins/bamboo/e2e/plan_build_commits_test.go
b/backend/plugins/bamboo/e2e/plan_build_commits_test.go
index 35a40b42d..73adc7c7e 100644
--- a/backend/plugins/bamboo/e2e/plan_build_commits_test.go
+++ b/backend/plugins/bamboo/e2e/plan_build_commits_test.go
@@ -34,8 +34,8 @@ func TestBambooPlanBuildCommitsDataFlow(t *testing.T) {
taskData := &tasks.BambooTaskData{
Options: &models.BambooOptions{
- ConnectionId: 3,
- ProjectKey: "TEST1",
+ ConnectionId: 1,
+ PlanKey: "TEST-PLA3",
BambooScopeConfig: &models.BambooScopeConfig{
DeploymentPattern: "(?i)compile",
ProductionPattern: "(?i)compile",
diff --git a/backend/plugins/bamboo/e2e/plan_build_test.go
b/backend/plugins/bamboo/e2e/plan_build_test.go
index 775b668de..d0d197e5b 100644
--- a/backend/plugins/bamboo/e2e/plan_build_test.go
+++ b/backend/plugins/bamboo/e2e/plan_build_test.go
@@ -36,8 +36,8 @@ func TestBambooPlanBuildDataFlow(t *testing.T) {
taskData := &tasks.BambooTaskData{
Options: &models.BambooOptions{
- ConnectionId: 3,
- ProjectKey: "TEST1",
+ ConnectionId: 1,
+ PlanKey: "TEST-PLA3",
BambooScopeConfig: &models.BambooScopeConfig{
DeploymentPattern: "(?i)compile",
ProductionPattern: "(?i)compile",
@@ -53,6 +53,7 @@ func TestBambooPlanBuildDataFlow(t *testing.T) {
// verify extraction
dataflowTester.FlushTabler(&models.BambooPlanBuild{})
+ dataflowTester.FlushTabler(&models.BambooPlanBuildVcsRevision{})
dataflowTester.Subtask(tasks.ExtractPlanBuildMeta, taskData)
dataflowTester.VerifyTable(
models.BambooPlanBuild{},
diff --git a/backend/plugins/bamboo/e2e/plan_test.go
b/backend/plugins/bamboo/e2e/plan_test.go
index 361f27b42..a8757081a 100644
--- a/backend/plugins/bamboo/e2e/plan_test.go
+++ b/backend/plugins/bamboo/e2e/plan_test.go
@@ -20,6 +20,8 @@ package e2e
import (
"testing"
+ "github.com/apache/incubator-devlake/core/models/common"
+ "github.com/apache/incubator-devlake/core/models/domainlayer/devops"
"github.com/apache/incubator-devlake/helpers/e2ehelper"
"github.com/apache/incubator-devlake/plugins/bamboo/impl"
"github.com/apache/incubator-devlake/plugins/bamboo/models"
@@ -34,39 +36,17 @@ func TestBambooPlanDataFlow(t *testing.T) {
taskData := &tasks.BambooTaskData{
Options: &models.BambooOptions{
ConnectionId: 3,
- ProjectKey: "TEST1",
+ PlanKey: "TEST1",
BambooScopeConfig: new(models.BambooScopeConfig),
},
}
- // import raw data table
-
dataflowTester.ImportCsvIntoRawTable("./raw_tables/_raw_bamboo_api_plan.csv",
"_raw_bamboo_api_plan")
+
dataflowTester.ImportCsvIntoTabler("./snapshot_tables/_tool_bamboo_plans.csv",
models.BambooPlan{})
// verify extraction
- dataflowTester.FlushTabler(&models.BambooPlan{})
- dataflowTester.Subtask(tasks.ExtractPlanMeta, taskData)
- dataflowTester.VerifyTable(
- models.BambooPlan{},
- "./snapshot_tables/_tool_bamboo_plans.csv",
- e2ehelper.ColumnWithRawData(
- "connection_id",
- "plan_key",
- "name",
- "expand",
- "project_key",
- "project_name",
- "description",
- "short_name",
- "build_name",
- "short_key",
- "type",
- "enabled",
- "href",
- "rel",
- "is_favourite",
- "is_active",
- "is_building",
- "average_build_time_in_seconds",
- ),
- )
-
+ dataflowTester.FlushTabler(&devops.CicdScope{})
+ dataflowTester.Subtask(tasks.ConvertPlansMeta, taskData)
+ dataflowTester.VerifyTableWithOptions(&devops.CicdScope{},
e2ehelper.TableOptions{
+ CSVRelPath: "./snapshot_tables/cicd_scopes.csv",
+ IgnoreTypes: []interface{}{common.NoPKModel{}},
+ })
}
diff --git a/backend/plugins/bamboo/e2e/raw_tables/_raw_bamboo_api_deploy.csv
b/backend/plugins/bamboo/e2e/raw_tables/_raw_bamboo_api_deploy.csv
index 6f6bf318f..bdf9134dc 100644
--- a/backend/plugins/bamboo/e2e/raw_tables/_raw_bamboo_api_deploy.csv
+++ b/backend/plugins/bamboo/e2e/raw_tables/_raw_bamboo_api_deploy.csv
@@ -1,5 +1,5 @@
"id","params","data","url","input","created_at"
-39,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""id"":884737,""oid"":""q3067ilzvtvl"",""key"":{""key"":""884737""},""name"":""deploy-test"",""planKey"":{""key"":""TEST1-TEST1""},""description"":""a
test deployment
project."",""environments"":[{""id"":950273,""key"":{""key"":""884737-950273""},""name"":""test-env"",""description"":""a
test
environment"",""deploymentProjectId"":884737,""operations"":{""canView"":true,""canEdit"":true,""canDelete"":true,""allowedToExecute"":true,""can
[...]
-40,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""id"":1146881,""oid"":""q3067ilzvuo1"",""key"":{""key"":""1146881""},""name"":""deploy-test2"",""planKey"":{""key"":""TEST1-TEST2""},""description"":""other
test deployment
project."",""environments"":[],""operations"":{""canView"":true,""canEdit"":true,""canDelete"":true,""allowedToExecute"":false,""canExecute"":false,""allowedToCreateVersion"":true,""allowedToSetVersionStatus"":false}}","http://18.212.108.64:8085/rest/api/latest/dep
[...]
-41,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""id"":1146882,""oid"":""q3067ilzvuo2"",""key"":{""key"":""1146882""},""name"":""deploy-test3"",""planKey"":{""key"":""TEST1-TEST3""},""description"":""other
test deployment project
again."",""environments"":[{""id"":1310721,""key"":{""key"":""1146882-1310721""},""name"":""environment2"",""description"":""other
test
environment"",""deploymentProjectId"":1146882,""operations"":{""canView"":true,""canEdit"":true,""canDelete"":true,""allo
[...]
-42,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""id"":1146883,""oid"":""q3067ilzvuo3"",""key"":{""key"":""1146883""},""name"":""deploy-test4"",""planKey"":{""key"":""TEST2-TEST1""},""description"":"""",""environments"":[{""id"":1310726,""key"":{""key"":""1146883-1310726""},""name"":""environment-for_p2"",""description"":"""",""deploymentProjectId"":1146883,""operations"":{""canView"":true,""canEdit"":true,""canDelete"":true,""allowedToExecute"":true,""canExecute"":true,""allowedToC
[...]
+39,"{""connectionId"":1,""PlanKey"":""TEST1""}","{""id"":884737,""oid"":""q3067ilzvtvl"",""key"":{""key"":""884737""},""name"":""deploy-test"",""planKey"":{""key"":""TEST1""},""description"":""a
test deployment
project."",""environments"":[{""id"":950273,""key"":{""key"":""884737-950273""},""name"":""test-env"",""description"":""a
test
environment"",""deploymentProjectId"":884737,""operations"":{""canView"":true,""canEdit"":true,""canDelete"":true,""allowedToExecute"":true,""canExecute""
[...]
+40,"{""connectionId"":1,""PlanKey"":""TEST1""}","{""id"":1146881,""oid"":""q3067ilzvuo1"",""key"":{""key"":""1146881""},""name"":""deploy-test2"",""planKey"":{""key"":""TEST1-TEST2""},""description"":""other
test deployment
project."",""environments"":[],""operations"":{""canView"":true,""canEdit"":true,""canDelete"":true,""allowedToExecute"":false,""canExecute"":false,""allowedToCreateVersion"":true,""allowedToSetVersionStatus"":false}}","http://18.212.108.64:8085/rest/api/latest/deploy
[...]
+41,"{""connectionId"":1,""PlanKey"":""TEST1""}","{""id"":1146882,""oid"":""q3067ilzvuo2"",""key"":{""key"":""1146882""},""name"":""deploy-test3"",""planKey"":{""key"":""TEST1-TEST3""},""description"":""other
test deployment project
again."",""environments"":[{""id"":1310721,""key"":{""key"":""1146882-1310721""},""name"":""environment2"",""description"":""other
test
environment"",""deploymentProjectId"":1146882,""operations"":{""canView"":true,""canEdit"":true,""canDelete"":true,""allowed
[...]
+42,"{""connectionId"":1,""PlanKey"":""TEST1""}","{""id"":1146883,""oid"":""q3067ilzvuo3"",""key"":{""key"":""1146883""},""name"":""deploy-test4"",""planKey"":{""key"":""TEST2-TEST1""},""description"":"""",""environments"":[{""id"":1310726,""key"":{""key"":""1146883-1310726""},""name"":""environment-for_p2"",""description"":"""",""deploymentProjectId"":1146883,""operations"":{""canView"":true,""canEdit"":true,""canDelete"":true,""allowedToExecute"":true,""canExecute"":true,""allowedToCrea
[...]
diff --git
a/backend/plugins/bamboo/e2e/raw_tables/_raw_bamboo_api_deploy_build.csv
b/backend/plugins/bamboo/e2e/raw_tables/_raw_bamboo_api_deploy_build.csv
index bbf1f05b5..cea03e0d0 100644
--- a/backend/plugins/bamboo/e2e/raw_tables/_raw_bamboo_api_deploy_build.csv
+++ b/backend/plugins/bamboo/e2e/raw_tables/_raw_bamboo_api_deploy_build.csv
@@ -1,10 +1,10 @@
"id","params","data","url","input","created_at"
-1,"{""connectionId"":1,""ProjectKey"":""TEST1""}","{""deploymentVersion"":{""id"":1671170,""name"":""release-3"",""creationDate"":1678451437024,""creatorUserName"":""bamboo"",""items"":[],""operations"":{""canView"":true,""canEdit"":true,""canDelete"":true,""allowedToExecute"":false,""canExecute"":false,""allowedToCreateVersion"":true,""allowedToSetVersionStatus"":true},""creatorDisplayName"":""devlake"",""creatorGravatarUrl"":""https://secure.gravatar.com/avatar/324e7f96b867d04ccf353fe0
[...]
-2,"{""connectionId"":1,""ProjectKey"":""TEST1""}","{""deploymentVersion"":{""id"":1671170,""name"":""release-3"",""creationDate"":1678451437024,""creatorUserName"":""bamboo"",""items"":[],""operations"":{""canView"":true,""canEdit"":true,""canDelete"":true,""allowedToExecute"":false,""canExecute"":false,""allowedToCreateVersion"":true,""allowedToSetVersionStatus"":true},""creatorDisplayName"":""devlake"",""creatorGravatarUrl"":""https://secure.gravatar.com/avatar/324e7f96b867d04ccf353fe0
[...]
-3,"{""connectionId"":1,""ProjectKey"":""TEST1""}","{""deploymentVersion"":{""id"":983041,""name"":""release-1"",""creationDate"":1676989673661,""creatorUserName"":""bamboo"",""items"":[],""operations"":{""canView"":true,""canEdit"":true,""canDelete"":true,""allowedToExecute"":false,""canExecute"":false,""allowedToCreateVersion"":true,""allowedToSetVersionStatus"":true},""creatorDisplayName"":""devlake"",""creatorGravatarUrl"":""https://secure.gravatar.com/avatar/324e7f96b867d04ccf353fe0f
[...]
-4,"{""connectionId"":1,""ProjectKey"":""TEST1""}","{""deploymentVersion"":{""id"":983041,""name"":""release-1"",""creationDate"":1676989673661,""creatorUserName"":""bamboo"",""items"":[],""operations"":{""canView"":true,""canEdit"":true,""canDelete"":true,""allowedToExecute"":false,""canExecute"":false,""allowedToCreateVersion"":true,""allowedToSetVersionStatus"":true},""creatorDisplayName"":""devlake"",""creatorGravatarUrl"":""https://secure.gravatar.com/avatar/324e7f96b867d04ccf353fe0f
[...]
-5,"{""connectionId"":1,""ProjectKey"":""TEST1""}","{""deploymentVersion"":{""id"":1671169,""name"":""release-2"",""creationDate"":1678418543376,""creatorUserName"":""bamboo"",""items"":[],""operations"":{""canView"":true,""canEdit"":true,""canDelete"":true,""allowedToExecute"":false,""canExecute"":false,""allowedToCreateVersion"":true,""allowedToSetVersionStatus"":true},""creatorDisplayName"":""devlake"",""creatorGravatarUrl"":""https://secure.gravatar.com/avatar/324e7f96b867d04ccf353fe0
[...]
-6,"{""connectionId"":1,""ProjectKey"":""TEST1""}","{""deploymentVersion"":{""id"":1671169,""name"":""release-2"",""creationDate"":1678418543376,""creatorUserName"":""bamboo"",""items"":[],""operations"":{""canView"":true,""canEdit"":true,""canDelete"":true,""allowedToExecute"":false,""canExecute"":false,""allowedToCreateVersion"":true,""allowedToSetVersionStatus"":true},""creatorDisplayName"":""devlake"",""creatorGravatarUrl"":""https://secure.gravatar.com/avatar/324e7f96b867d04ccf353fe0
[...]
-7,"{""connectionId"":1,""ProjectKey"":""TEST1""}","{""deploymentVersion"":{""id"":1671169,""name"":""release-2"",""creationDate"":1678418543376,""creatorUserName"":""bamboo"",""items"":[],""operations"":{""canView"":true,""canEdit"":true,""canDelete"":true,""allowedToExecute"":false,""canExecute"":false,""allowedToCreateVersion"":true,""allowedToSetVersionStatus"":true},""creatorDisplayName"":""devlake"",""creatorGravatarUrl"":""https://secure.gravatar.com/avatar/324e7f96b867d04ccf353fe0
[...]
-8,"{""connectionId"":1,""ProjectKey"":""TEST1""}","{""deploymentVersion"":{""id"":1671169,""name"":""release-2"",""creationDate"":1678418543376,""creatorUserName"":""bamboo"",""items"":[],""operations"":{""canView"":true,""canEdit"":true,""canDelete"":true,""allowedToExecute"":false,""canExecute"":false,""allowedToCreateVersion"":true,""allowedToSetVersionStatus"":true},""creatorDisplayName"":""devlake"",""creatorGravatarUrl"":""https://secure.gravatar.com/avatar/324e7f96b867d04ccf353fe0
[...]
-9,"{""connectionId"":1,""ProjectKey"":""TEST1""}","{""deploymentVersion"":{""id"":1671169,""name"":""release-2"",""creationDate"":1678418543376,""creatorUserName"":""bamboo"",""items"":[],""operations"":{""canView"":true,""canEdit"":true,""canDelete"":true,""allowedToExecute"":false,""canExecute"":false,""allowedToCreateVersion"":true,""allowedToSetVersionStatus"":true},""creatorDisplayName"":""devlake"",""creatorGravatarUrl"":""https://secure.gravatar.com/avatar/324e7f96b867d04ccf353fe0
[...]
\ No newline at end of file
+1,"{""connectionId"":1,""PlanKey"":""TEST1""}","{""deploymentVersion"":{""id"":1671170,""name"":""release-3"",""creationDate"":1678451437024,""creatorUserName"":""bamboo"",""items"":[],""operations"":{""canView"":true,""canEdit"":true,""canDelete"":true,""allowedToExecute"":false,""canExecute"":false,""allowedToCreateVersion"":true,""allowedToSetVersionStatus"":true},""creatorDisplayName"":""devlake"",""creatorGravatarUrl"":""https://secure.gravatar.com/avatar/324e7f96b867d04ccf353fe0fb4
[...]
+2,"{""connectionId"":1,""PlanKey"":""TEST1""}","{""deploymentVersion"":{""id"":1671170,""name"":""release-3"",""creationDate"":1678451437024,""creatorUserName"":""bamboo"",""items"":[],""operations"":{""canView"":true,""canEdit"":true,""canDelete"":true,""allowedToExecute"":false,""canExecute"":false,""allowedToCreateVersion"":true,""allowedToSetVersionStatus"":true},""creatorDisplayName"":""devlake"",""creatorGravatarUrl"":""https://secure.gravatar.com/avatar/324e7f96b867d04ccf353fe0fb4
[...]
+3,"{""connectionId"":1,""PlanKey"":""TEST1""}","{""deploymentVersion"":{""id"":983041,""name"":""release-1"",""creationDate"":1676989673661,""creatorUserName"":""bamboo"",""items"":[],""operations"":{""canView"":true,""canEdit"":true,""canDelete"":true,""allowedToExecute"":false,""canExecute"":false,""allowedToCreateVersion"":true,""allowedToSetVersionStatus"":true},""creatorDisplayName"":""devlake"",""creatorGravatarUrl"":""https://secure.gravatar.com/avatar/324e7f96b867d04ccf353fe0fb41
[...]
+4,"{""connectionId"":1,""PlanKey"":""TEST1""}","{""deploymentVersion"":{""id"":983041,""name"":""release-1"",""creationDate"":1676989673661,""creatorUserName"":""bamboo"",""items"":[],""operations"":{""canView"":true,""canEdit"":true,""canDelete"":true,""allowedToExecute"":false,""canExecute"":false,""allowedToCreateVersion"":true,""allowedToSetVersionStatus"":true},""creatorDisplayName"":""devlake"",""creatorGravatarUrl"":""https://secure.gravatar.com/avatar/324e7f96b867d04ccf353fe0fb41
[...]
+5,"{""connectionId"":1,""PlanKey"":""TEST1""}","{""deploymentVersion"":{""id"":1671169,""name"":""release-2"",""creationDate"":1678418543376,""creatorUserName"":""bamboo"",""items"":[],""operations"":{""canView"":true,""canEdit"":true,""canDelete"":true,""allowedToExecute"":false,""canExecute"":false,""allowedToCreateVersion"":true,""allowedToSetVersionStatus"":true},""creatorDisplayName"":""devlake"",""creatorGravatarUrl"":""https://secure.gravatar.com/avatar/324e7f96b867d04ccf353fe0fb4
[...]
+6,"{""connectionId"":1,""PlanKey"":""TEST1""}","{""deploymentVersion"":{""id"":1671169,""name"":""release-2"",""creationDate"":1678418543376,""creatorUserName"":""bamboo"",""items"":[],""operations"":{""canView"":true,""canEdit"":true,""canDelete"":true,""allowedToExecute"":false,""canExecute"":false,""allowedToCreateVersion"":true,""allowedToSetVersionStatus"":true},""creatorDisplayName"":""devlake"",""creatorGravatarUrl"":""https://secure.gravatar.com/avatar/324e7f96b867d04ccf353fe0fb4
[...]
+7,"{""connectionId"":1,""PlanKey"":""TEST1""}","{""deploymentVersion"":{""id"":1671169,""name"":""release-2"",""creationDate"":1678418543376,""creatorUserName"":""bamboo"",""items"":[],""operations"":{""canView"":true,""canEdit"":true,""canDelete"":true,""allowedToExecute"":false,""canExecute"":false,""allowedToCreateVersion"":true,""allowedToSetVersionStatus"":true},""creatorDisplayName"":""devlake"",""creatorGravatarUrl"":""https://secure.gravatar.com/avatar/324e7f96b867d04ccf353fe0fb4
[...]
+8,"{""connectionId"":1,""PlanKey"":""TEST1""}","{""deploymentVersion"":{""id"":1671169,""name"":""release-2"",""creationDate"":1678418543376,""creatorUserName"":""bamboo"",""items"":[],""operations"":{""canView"":true,""canEdit"":true,""canDelete"":true,""allowedToExecute"":false,""canExecute"":false,""allowedToCreateVersion"":true,""allowedToSetVersionStatus"":true},""creatorDisplayName"":""devlake"",""creatorGravatarUrl"":""https://secure.gravatar.com/avatar/324e7f96b867d04ccf353fe0fb4
[...]
+9,"{""connectionId"":1,""PlanKey"":""TEST1""}","{""deploymentVersion"":{""id"":1671169,""name"":""release-2"",""creationDate"":1678418543376,""creatorUserName"":""bamboo"",""items"":[],""operations"":{""canView"":true,""canEdit"":true,""canDelete"":true,""allowedToExecute"":false,""canExecute"":false,""allowedToCreateVersion"":true,""allowedToSetVersionStatus"":true},""creatorDisplayName"":""devlake"",""creatorGravatarUrl"":""https://secure.gravatar.com/avatar/324e7f96b867d04ccf353fe0fb4
[...]
\ No newline at end of file
diff --git a/backend/plugins/bamboo/e2e/raw_tables/_raw_bamboo_api_job.csv
b/backend/plugins/bamboo/e2e/raw_tables/_raw_bamboo_api_job.csv
index 0ad94c146..bcac31058 100644
--- a/backend/plugins/bamboo/e2e/raw_tables/_raw_bamboo_api_job.csv
+++ b/backend/plugins/bamboo/e2e/raw_tables/_raw_bamboo_api_job.csv
@@ -1,5 +1,5 @@
"id","params","data","url","input","created_at"
-7,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""id"":""TEST1-TEST1-JOB1"",""type"":""job"",""searchEntity"":{""id"":""TEST1-TEST1-JOB1"",""key"":""TEST1-TEST1-JOB1"",""projectName"":""test_project"",""planName"":""test_plan"",""branchName"":""Default"",""stageName"":""Default
Stage"",""jobName"":""Default Job"",""description"":""just a test
plan"",""type"":""job""}}","http://54.172.92.89:8085/rest/api/latest/search/jobs/TEST1-TEST1.json?expand=jobs.job&max-result=100&showEmpty=true
[...]
-8,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""id"":""TEST1-TEST2-JOB1"",""type"":""job"",""searchEntity"":{""id"":""TEST1-TEST2-JOB1"",""key"":""TEST1-TEST2-JOB1"",""projectName"":""test_project"",""planName"":""test2"",""branchName"":""Default"",""stageName"":""Default
Stage"",""jobName"":""Default Job"",""description"":""description
plan2"",""type"":""job""}}","http://54.172.92.89:8085/rest/api/latest/search/jobs/TEST1-TEST2.json?expand=jobs.job&max-result=100&showEmpty=true&st
[...]
-9,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""id"":""TEST1-TEST3-JOB1"",""type"":""job"",""searchEntity"":{""id"":""TEST1-TEST3-JOB1"",""key"":""TEST1-TEST3-JOB1"",""projectName"":""test_project"",""planName"":""test3"",""branchName"":""Default"",""stageName"":""Default
Stage"",""jobName"":""Default Job"",""description"":""description
plan23"",""type"":""job""}}","http://54.172.92.89:8085/rest/api/latest/search/jobs/TEST1-TEST3.json?expand=jobs.job&max-result=100&showEmpty=true&s
[...]
-10,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""id"":""TEST1-TEST4-JOB1"",""type"":""job"",""searchEntity"":{""id"":""TEST1-TEST4-JOB1"",""key"":""TEST1-TEST4-JOB1"",""projectName"":""test_project"",""planName"":""test4"",""branchName"":""Default"",""stageName"":""Default
Stage"",""jobName"":""Default Job"",""description"":""description
plan4"",""type"":""job""}}","http://54.172.92.89:8085/rest/api/latest/search/jobs/TEST1-TEST4.json?expand=jobs.job&max-result=100&showEmpty=true&s
[...]
+1,"{""connectionId"":1,""PlanKey"":""TEST-PLA1""}","{""id"":""TEST-PLA1-JOB1"",""type"":""job"",""searchEntity"":{""id"":""TEST-PLA1-JOB1"",""key"":""TEST-PLA1-JOB1"",""projectName"":""test"",""planName"":""pla-1"",""branchName"":""main"",""stageName"":""Default
Stage"",""jobName"":""Default
Job"",""description"":"""",""type"":""job""}}","http://18.232.129.138:8085/rest/api/latest/search/jobs/TEST-PLA1.json?expand=jobs.job&max-result=100&showEmpty=true&start-index=0","null","2023-07-27
2 [...]
+2,"{""connectionId"":1,""PlanKey"":""TEST-PLA2""}","{""id"":""TEST-PLA2-AJ"",""type"":""job"",""searchEntity"":{""id"":""TEST-PLA2-AJ"",""key"":""TEST-PLA2-AJ"",""projectName"":""test"",""planName"":""pla-2"",""branchName"":""main"",""stageName"":""Default
Stage"",""jobName"":""Another
Job"",""description"":"""",""type"":""job""}}","http://18.232.129.138:8085/rest/api/latest/search/jobs/TEST-PLA2.json?expand=jobs.job&max-result=100&showEmpty=true&start-index=0","null","2023-07-27
22:37:25.834"
+3,"{""connectionId"":1,""PlanKey"":""TEST-PLA2""}","{""id"":""TEST-PLA2-JOB1"",""type"":""job"",""searchEntity"":{""id"":""TEST-PLA2-JOB1"",""key"":""TEST-PLA2-JOB1"",""projectName"":""test"",""planName"":""pla-2"",""branchName"":""main"",""stageName"":""Default
Stage"",""jobName"":""Default
Job"",""description"":"""",""type"":""job""}}","http://18.232.129.138:8085/rest/api/latest/search/jobs/TEST-PLA2.json?expand=jobs.job&max-result=100&showEmpty=true&start-index=0","null","2023-07-27
2 [...]
+4,"{""connectionId"":1,""PlanKey"":""TEST-PLA3""}","{""id"":""TEST-PLA3-JOB1"",""type"":""job"",""searchEntity"":{""id"":""TEST-PLA3-JOB1"",""key"":""TEST-PLA3-JOB1"",""projectName"":""test"",""planName"":""pla-3"",""branchName"":""main"",""stageName"":""Default
Stage"",""jobName"":""Default
Job"",""description"":"""",""type"":""job""}}","http://18.232.129.138:8085/rest/api/latest/search/jobs/TEST-PLA3.json?expand=jobs.job&max-result=100&showEmpty=true&start-index=0","null","2023-07-27
2 [...]
diff --git
a/backend/plugins/bamboo/e2e/raw_tables/_raw_bamboo_api_job_build.csv
b/backend/plugins/bamboo/e2e/raw_tables/_raw_bamboo_api_job_build.csv
index c202e2d05..19c32e46f 100644
--- a/backend/plugins/bamboo/e2e/raw_tables/_raw_bamboo_api_job_build.csv
+++ b/backend/plugins/bamboo/e2e/raw_tables/_raw_bamboo_api_job_build.csv
@@ -1,10 +1,3 @@
-"id","params","data","url","input","created_at"
-122,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""expand"":""plan,artifacts,comments,labels,jiraIssues,variables"",""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/result/TEST1-TEST2-JOB1-3"",""rel"":""self""},""plan"":{""shortName"":""Default
Job"",""shortKey"":""TEST2-JOB1"",""type"":""job"",""enabled"":true,""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/plan/TEST1-TEST2-JOB1"",""rel"":""self""},""key"":""TEST1-TEST2-JOB1"",""name"":""test_project
- te [...]
-123,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""expand"":""plan,artifacts,comments,labels,jiraIssues,variables"",""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/result/TEST1-TEST2-JOB1-2"",""rel"":""self""},""plan"":{""shortName"":""Default
Job"",""shortKey"":""TEST2-JOB1"",""type"":""job"",""enabled"":true,""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/plan/TEST1-TEST2-JOB1"",""rel"":""self""},""key"":""TEST1-TEST2-JOB1"",""name"":""test_project
- te [...]
-137,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""expand"":""plan,artifacts,comments,labels,jiraIssues,variables"",""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/result/TEST1-TEST4-JOB1-3"",""rel"":""self""},""plan"":{""shortName"":""Default
Job"",""shortKey"":""TEST4-JOB1"",""type"":""job"",""enabled"":true,""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/plan/TEST1-TEST4-JOB1"",""rel"":""self""},""key"":""TEST1-TEST4-JOB1"",""name"":""test_project
- te [...]
-138,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""expand"":""plan,artifacts,comments,labels,jiraIssues,variables"",""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/result/TEST1-TEST4-JOB1-2"",""rel"":""self""},""plan"":{""shortName"":""Default
Job"",""shortKey"":""TEST4-JOB1"",""type"":""job"",""enabled"":true,""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/plan/TEST1-TEST4-JOB1"",""rel"":""self""},""key"":""TEST1-TEST4-JOB1"",""name"":""test_project
- te [...]
-139,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""expand"":""plan,artifacts,comments,labels,jiraIssues,variables"",""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/result/TEST1-TEST4-JOB1-1"",""rel"":""self""},""plan"":{""shortName"":""Default
Job"",""shortKey"":""TEST4-JOB1"",""type"":""job"",""enabled"":true,""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/plan/TEST1-TEST4-JOB1"",""rel"":""self""},""key"":""TEST1-TEST4-JOB1"",""name"":""test_project
- te [...]
-153,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""expand"":""plan,artifacts,comments,labels,jiraIssues,variables"",""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/result/TEST1-TEST3-JOB1-3"",""rel"":""self""},""plan"":{""shortName"":""Default
Job"",""shortKey"":""TEST3-JOB1"",""type"":""job"",""enabled"":true,""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/plan/TEST1-TEST3-JOB1"",""rel"":""self""},""key"":""TEST1-TEST3-JOB1"",""name"":""test_project
- te [...]
-154,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""expand"":""plan,artifacts,comments,labels,jiraIssues,variables"",""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/result/TEST1-TEST3-JOB1-2"",""rel"":""self""},""plan"":{""shortName"":""Default
Job"",""shortKey"":""TEST3-JOB1"",""type"":""job"",""enabled"":true,""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/plan/TEST1-TEST3-JOB1"",""rel"":""self""},""key"":""TEST1-TEST3-JOB1"",""name"":""test_project
- te [...]
-198,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""expand"":""plan,artifacts,comments,labels,jiraIssues,variables"",""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/result/TEST1-TEST1-JOB1-23"",""rel"":""self""},""plan"":{""shortName"":""Default
Job"",""shortKey"":""TEST1-JOB1"",""type"":""job"",""enabled"":true,""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/plan/TEST1-TEST1-JOB1"",""rel"":""self""},""key"":""TEST1-TEST1-JOB1"",""name"":""test_project
- t [...]
-199,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""expand"":""plan,artifacts,comments,labels,jiraIssues,variables"",""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/result/TEST1-TEST1-JOB1-22"",""rel"":""self""},""plan"":{""shortName"":""Default
Job"",""shortKey"":""TEST1-JOB1"",""type"":""job"",""enabled"":true,""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/plan/TEST1-TEST1-JOB1"",""rel"":""self""},""key"":""TEST1-TEST1-JOB1"",""name"":""test_project
- t [...]
+"id","params","data","url","input","created_at"
+1,"{""connectionId"":1,""PlanKey"":""TEST-PLA3""}","{""expand"":""plan,vcsRevisions,artifacts,comments,labels,jiraIssues,variables"",""link"":{""href"":""http://18.232.129.138:8085/rest/api/latest/result/TEST-PLA3-JOB1-2"",""rel"":""self""},""plan"":{""shortName"":""Default
Job"",""shortKey"":""PLA3-JOB1"",""type"":""job"",""enabled"":true,""link"":{""href"":""http://18.232.129.138:8085/rest/api/latest/plan/TEST-PLA3-JOB1"",""rel"":""self""},""key"":""TEST-PLA3-JOB1"",""name"":""test
- p [...]
+2,"{""connectionId"":1,""PlanKey"":""TEST-PLA3""}","{""expand"":""plan,vcsRevisions,artifacts,comments,labels,jiraIssues,variables"",""link"":{""href"":""http://18.232.129.138:8085/rest/api/latest/result/TEST-PLA3-JOB1-1"",""rel"":""self""},""plan"":{""shortName"":""Default
Job"",""shortKey"":""PLA3-JOB1"",""type"":""job"",""enabled"":true,""link"":{""href"":""http://18.232.129.138:8085/rest/api/latest/plan/TEST-PLA3-JOB1"",""rel"":""self""},""key"":""TEST-PLA3-JOB1"",""name"":""test
- p [...]
diff --git a/backend/plugins/bamboo/e2e/raw_tables/_raw_bamboo_api_plan.csv
b/backend/plugins/bamboo/e2e/raw_tables/_raw_bamboo_api_plan.csv
deleted file mode 100644
index 9b0dad34d..000000000
--- a/backend/plugins/bamboo/e2e/raw_tables/_raw_bamboo_api_plan.csv
+++ /dev/null
@@ -1,5 +0,0 @@
-"id","params","data","url","input","created_at"
-19,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""expand"":""actions,stages,branches"",""projectKey"":""TEST1"",""projectName"":""test_project"",""project"":{""key"":""TEST1"",""name"":""test_project"",""description"":""just
a test
project"",""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/project/TEST1"",""rel"":""self""}},""description"":""description
plan2"",""shortName"":""test2"",""buildName"":""test2"",""shortKey"":""TEST2"",""type"":""chain"",""enabled"":true,""l
[...]
-20,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""expand"":""actions,stages,branches"",""projectKey"":""TEST1"",""projectName"":""test_project"",""project"":{""key"":""TEST1"",""name"":""test_project"",""description"":""just
a test
project"",""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/project/TEST1"",""rel"":""self""}},""description"":""description
plan23"",""shortName"":""test3"",""buildName"":""test3"",""shortKey"":""TEST3"",""type"":""chain"",""enabled"":true,""
[...]
-21,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""expand"":""actions,stages,branches"",""projectKey"":""TEST1"",""projectName"":""test_project"",""project"":{""key"":""TEST1"",""name"":""test_project"",""description"":""just
a test
project"",""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/project/TEST1"",""rel"":""self""}},""description"":""description
plan4"",""shortName"":""test4"",""buildName"":""test4"",""shortKey"":""TEST4"",""type"":""chain"",""enabled"":true,""l
[...]
-22,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""expand"":""actions,stages,branches"",""projectKey"":""TEST1"",""projectName"":""test_project"",""project"":{""key"":""TEST1"",""name"":""test_project"",""description"":""just
a test
project"",""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/project/TEST1"",""rel"":""self""}},""description"":""just
a test
plan"",""shortName"":""test_plan"",""buildName"":""test_plan"",""shortKey"":""TEST1"",""type"":""chain"",""enabled"":t
[...]
diff --git
a/backend/plugins/bamboo/e2e/raw_tables/_raw_bamboo_api_plan_build.csv
b/backend/plugins/bamboo/e2e/raw_tables/_raw_bamboo_api_plan_build.csv
index 6976741ff..18d3986c4 100644
--- a/backend/plugins/bamboo/e2e/raw_tables/_raw_bamboo_api_plan_build.csv
+++ b/backend/plugins/bamboo/e2e/raw_tables/_raw_bamboo_api_plan_build.csv
@@ -1,10 +1,3 @@
-"id","params","data","url","input","created_at"
-232,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""expand"":""plan,artifacts,comments,labels,jiraIssues,variables,stages"",""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/result/TEST1-TEST2-3"",""rel"":""self""},""plan"":{""shortName"":""test2"",""shortKey"":""TEST2"",""type"":""chain"",""enabled"":true,""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/plan/TEST1-TEST2"",""rel"":""self""},""key"":""TEST1-TEST2"",""name"":""test_project
- test2"",""planKey"" [...]
-233,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""expand"":""plan,artifacts,comments,labels,jiraIssues,variables,stages"",""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/result/TEST1-TEST2-2"",""rel"":""self""},""plan"":{""shortName"":""test2"",""shortKey"":""TEST2"",""type"":""chain"",""enabled"":true,""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/plan/TEST1-TEST2"",""rel"":""self""},""key"":""TEST1-TEST2"",""name"":""test_project
- test2"",""planKey"" [...]
-234,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""expand"":""plan,artifacts,comments,labels,jiraIssues,variables,stages"",""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/result/TEST1-TEST2-1"",""rel"":""self""},""plan"":{""shortName"":""test2"",""shortKey"":""TEST2"",""type"":""chain"",""enabled"":true,""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/plan/TEST1-TEST2"",""rel"":""self""},""key"":""TEST1-TEST2"",""name"":""test_project
- test2"",""planKey"" [...]
-248,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""expand"":""plan,artifacts,comments,labels,jiraIssues,variables,stages"",""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/result/TEST1-TEST4-2"",""rel"":""self""},""plan"":{""shortName"":""test4"",""shortKey"":""TEST4"",""type"":""chain"",""enabled"":true,""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/plan/TEST1-TEST4"",""rel"":""self""},""key"":""TEST1-TEST4"",""name"":""test_project
- test4"",""planKey"" [...]
-249,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""expand"":""plan,artifacts,comments,labels,jiraIssues,variables,stages"",""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/result/TEST1-TEST4-1"",""rel"":""self""},""plan"":{""shortName"":""test4"",""shortKey"":""TEST4"",""type"":""chain"",""enabled"":true,""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/plan/TEST1-TEST4"",""rel"":""self""},""key"":""TEST1-TEST4"",""name"":""test_project
- test4"",""planKey"" [...]
-264,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""expand"":""plan,artifacts,comments,labels,jiraIssues,variables,stages"",""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/result/TEST1-TEST3-2"",""rel"":""self""},""plan"":{""shortName"":""test3"",""shortKey"":""TEST3"",""type"":""chain"",""enabled"":true,""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/plan/TEST1-TEST3"",""rel"":""self""},""key"":""TEST1-TEST3"",""name"":""test_project
- test3"",""planKey"" [...]
-265,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""expand"":""plan,artifacts,comments,labels,jiraIssues,variables,stages"",""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/result/TEST1-TEST3-1"",""rel"":""self""},""plan"":{""shortName"":""test3"",""shortKey"":""TEST3"",""type"":""chain"",""enabled"":true,""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/plan/TEST1-TEST3"",""rel"":""self""},""key"":""TEST1-TEST3"",""name"":""test_project
- test3"",""planKey"" [...]
-308,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""expand"":""plan,artifacts,comments,labels,jiraIssues,variables,stages"",""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/result/TEST1-TEST1-23"",""rel"":""self""},""plan"":{""shortName"":""test_plan"",""shortKey"":""TEST1"",""type"":""chain"",""enabled"":true,""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/plan/TEST1-TEST1"",""rel"":""self""},""key"":""TEST1-TEST1"",""name"":""test_project
- test_plan"","" [...]
-309,"{""connectionId"":3,""ProjectKey"":""TEST1""}","{""expand"":""plan,artifacts,comments,labels,jiraIssues,variables,stages"",""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/result/TEST1-TEST1-22"",""rel"":""self""},""plan"":{""shortName"":""test_plan"",""shortKey"":""TEST1"",""type"":""chain"",""enabled"":true,""link"":{""href"":""http://54.172.92.89:8085/rest/api/latest/plan/TEST1-TEST1"",""rel"":""self""},""key"":""TEST1-TEST1"",""name"":""test_project
- test_plan"","" [...]
+"id","params","data","url","input","created_at"
+1,"{""connectionId"":1,""PlanKey"":""TEST-PLA3""}","{""expand"":""plan,vcsRevisions,artifacts,comments,labels,jiraIssues,variables,stages"",""link"":{""href"":""http://18.232.129.138:8085/rest/api/latest/result/TEST-PLA3-2"",""rel"":""self""},""plan"":{""shortName"":""pla-3"",""shortKey"":""PLA3"",""type"":""chain"",""enabled"":true,""link"":{""href"":""http://18.232.129.138:8085/rest/api/latest/plan/TEST-PLA3"",""rel"":""self""},""key"":""TEST-PLA3"",""name"":""test
- pla-3"",""planKey" [...]
+2,"{""connectionId"":1,""PlanKey"":""TEST-PLA3""}","{""expand"":""plan,vcsRevisions,artifacts,comments,labels,jiraIssues,variables,stages"",""link"":{""href"":""http://18.232.129.138:8085/rest/api/latest/result/TEST-PLA3-1"",""rel"":""self""},""plan"":{""shortName"":""pla-3"",""shortKey"":""PLA3"",""type"":""chain"",""enabled"":true,""link"":{""href"":""http://18.232.129.138:8085/rest/api/latest/plan/TEST-PLA3"",""rel"":""self""},""key"":""TEST-PLA3"",""name"":""test
- pla-3"",""planKey" [...]
diff --git
a/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_deploy_build.csv
b/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_deploy_build.csv
index 838252d57..80cfa6463 100644
--- a/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_deploy_build.csv
+++ b/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_deploy_build.csv
@@ -1,10 +1,10 @@
connection_id,deploy_build_id,deployment_version_name,deployment_state,life_cycle_state,started_date,queued_date,executed_date,finished_date,reason_summary,plan_key,project_key,can_view,can_edit,can_delete,allowed_to_execute,can_execute,allowed_to_create_version,allowed_to_set_version_status,environment,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
-1,1769473,release-2,FAILED,FINISHED,2023-03-10T12:15:45.000+00:00,2023-03-10T12:15:45.000+00:00,2023-03-10T12:15:46.000+00:00,2023-03-10T12:15:46.000+00:00,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>",TEST1-TEST1,TEST1,1,1,1,1,1,0,0,PRODUCTION,"{""connectionId"":1,""ProjectKey"":""TEST1""}",_raw_bamboo_api_deploy_build,9,
-1,1769474,release-2,FAILED,FINISHED,2023-03-10T12:27:28.000+00:00,2023-03-10T12:27:28.000+00:00,2023-03-10T12:27:28.000+00:00,2023-03-10T12:27:28.000+00:00,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>",TEST1-TEST1,TEST1,1,1,1,1,1,0,0,PRODUCTION,"{""connectionId"":1,""ProjectKey"":""TEST1""}",_raw_bamboo_api_deploy_build,8,
-1,1769475,release-2,FAILED,FINISHED,2023-03-10T12:27:56.000+00:00,2023-03-10T12:27:56.000+00:00,2023-03-10T12:27:56.000+00:00,2023-03-10T12:27:56.000+00:00,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>",TEST1-TEST1,TEST1,1,1,1,1,1,0,0,PRODUCTION,"{""connectionId"":1,""ProjectKey"":""TEST1""}",_raw_bamboo_api_deploy_build,7,
-1,1769476,release-2,FAILED,FINISHED,2023-03-10T12:28:12.000+00:00,2023-03-10T12:28:12.000+00:00,2023-03-10T12:28:12.000+00:00,2023-03-10T12:28:12.000+00:00,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>",TEST1-TEST1,TEST1,1,1,1,1,1,0,0,PRODUCTION,"{""connectionId"":1,""ProjectKey"":""TEST1""}",_raw_bamboo_api_deploy_build,6,
-1,1769477,release-1,FAILED,FINISHED,2023-03-10T12:29:08.000+00:00,2023-03-10T12:29:09.000+00:00,2023-03-10T12:29:09.000+00:00,2023-03-10T12:29:09.000+00:00,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>",TEST1-TEST1,TEST1,1,1,1,1,1,0,0,PRODUCTION,"{""connectionId"":1,""ProjectKey"":""TEST1""}",_raw_bamboo_api_deploy_build,4,
-1,1769478,release-1,FAILED,FINISHED,2023-03-10T12:29:28.000+00:00,2023-03-10T12:29:28.000+00:00,2023-03-10T12:29:28.000+00:00,2023-03-10T12:29:28.000+00:00,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>",TEST1-TEST1,TEST1,1,1,1,1,1,0,0,PRODUCTION,"{""connectionId"":1,""ProjectKey"":""TEST1""}",_raw_bamboo_api_deploy_build,3,
-1,1769479,release-3,FAILED,FINISHED,2023-03-10T12:30:37.000+00:00,2023-03-10T12:30:37.000+00:00,2023-03-10T12:30:37.000+00:00,2023-03-10T12:30:37.000+00:00,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>",TEST1-TEST1,TEST1,1,1,1,1,1,0,0,PRODUCTION,"{""connectionId"":1,""ProjectKey"":""TEST1""}",_raw_bamboo_api_deploy_build,2,
-1,1769480,release-3,FAILED,FINISHED,2023-03-10T12:30:49.000+00:00,2023-03-10T12:30:49.000+00:00,2023-03-10T12:30:49.000+00:00,2023-03-10T12:30:49.000+00:00,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>",TEST1-TEST1,TEST1,1,1,1,1,1,0,0,PRODUCTION,"{""connectionId"":1,""ProjectKey"":""TEST1""}",_raw_bamboo_api_deploy_build,1,
-1,1769481,release-2,FAILED,FINISHED,2023-03-13T09:43:26.000+00:00,2023-03-13T09:43:26.000+00:00,2023-03-13T09:43:26.000+00:00,2023-03-13T09:43:26.000+00:00,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>",TEST1-TEST1,TEST1,1,1,1,1,1,0,0,PRODUCTION,"{""connectionId"":1,""ProjectKey"":""TEST1""}",_raw_bamboo_api_deploy_build,5,
+1,1769473,release-2,FAILED,FINISHED,2023-03-10T12:15:45.000+00:00,2023-03-10T12:15:45.000+00:00,2023-03-10T12:15:46.000+00:00,2023-03-10T12:15:46.000+00:00,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>",TEST1,"",1,1,1,1,1,0,0,PRODUCTION,"{""connectionId"":1,""PlanKey"":""TEST1""}",_raw_bamboo_api_deploy_build,9,
+1,1769474,release-2,FAILED,FINISHED,2023-03-10T12:27:28.000+00:00,2023-03-10T12:27:28.000+00:00,2023-03-10T12:27:28.000+00:00,2023-03-10T12:27:28.000+00:00,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>",TEST1,"",1,1,1,1,1,0,0,PRODUCTION,"{""connectionId"":1,""PlanKey"":""TEST1""}",_raw_bamboo_api_deploy_build,8,
+1,1769475,release-2,FAILED,FINISHED,2023-03-10T12:27:56.000+00:00,2023-03-10T12:27:56.000+00:00,2023-03-10T12:27:56.000+00:00,2023-03-10T12:27:56.000+00:00,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>",TEST1,"",1,1,1,1,1,0,0,PRODUCTION,"{""connectionId"":1,""PlanKey"":""TEST1""}",_raw_bamboo_api_deploy_build,7,
+1,1769476,release-2,FAILED,FINISHED,2023-03-10T12:28:12.000+00:00,2023-03-10T12:28:12.000+00:00,2023-03-10T12:28:12.000+00:00,2023-03-10T12:28:12.000+00:00,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>",TEST1,"",1,1,1,1,1,0,0,PRODUCTION,"{""connectionId"":1,""PlanKey"":""TEST1""}",_raw_bamboo_api_deploy_build,6,
+1,1769477,release-1,FAILED,FINISHED,2023-03-10T12:29:08.000+00:00,2023-03-10T12:29:09.000+00:00,2023-03-10T12:29:09.000+00:00,2023-03-10T12:29:09.000+00:00,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>",TEST1,"",1,1,1,1,1,0,0,PRODUCTION,"{""connectionId"":1,""PlanKey"":""TEST1""}",_raw_bamboo_api_deploy_build,4,
+1,1769478,release-1,FAILED,FINISHED,2023-03-10T12:29:28.000+00:00,2023-03-10T12:29:28.000+00:00,2023-03-10T12:29:28.000+00:00,2023-03-10T12:29:28.000+00:00,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>",TEST1,"",1,1,1,1,1,0,0,PRODUCTION,"{""connectionId"":1,""PlanKey"":""TEST1""}",_raw_bamboo_api_deploy_build,3,
+1,1769479,release-3,FAILED,FINISHED,2023-03-10T12:30:37.000+00:00,2023-03-10T12:30:37.000+00:00,2023-03-10T12:30:37.000+00:00,2023-03-10T12:30:37.000+00:00,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>",TEST1,"",1,1,1,1,1,0,0,PRODUCTION,"{""connectionId"":1,""PlanKey"":""TEST1""}",_raw_bamboo_api_deploy_build,2,
+1,1769480,release-3,FAILED,FINISHED,2023-03-10T12:30:49.000+00:00,2023-03-10T12:30:49.000+00:00,2023-03-10T12:30:49.000+00:00,2023-03-10T12:30:49.000+00:00,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>",TEST1,"",1,1,1,1,1,0,0,PRODUCTION,"{""connectionId"":1,""PlanKey"":""TEST1""}",_raw_bamboo_api_deploy_build,1,
+1,1769481,release-2,FAILED,FINISHED,2023-03-13T09:43:26.000+00:00,2023-03-13T09:43:26.000+00:00,2023-03-13T09:43:26.000+00:00,2023-03-13T09:43:26.000+00:00,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>",TEST1,"",1,1,1,1,1,0,0,PRODUCTION,"{""connectionId"":1,""PlanKey"":""TEST1""}",_raw_bamboo_api_deploy_build,5,
diff --git
a/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_deploy_environment.csv
b/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_deploy_environment.csv
index 4040b177f..89c9fdea8 100644
---
a/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_deploy_environment.csv
+++
b/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_deploy_environment.csv
@@ -1,7 +1,5 @@
connection_id,env_id,name,plan_key,description,position,configuration_state,can_view,can_edit,can_delete,allowed_to_execute,can_execute,allowed_to_create_version,allowed_to_set_version_status,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
-3,950273,test-env,TEST1-TEST1,a test
environment,0,DETAILED,1,1,1,1,1,0,0,"{""connectionId"":3,""ProjectKey"":""TEST1""}",_raw_bamboo_api_deploy,39,
-3,1310721,environment2,TEST1-TEST3,other test
environment,0,DETAILED,1,1,1,1,1,0,0,"{""connectionId"":3,""ProjectKey"":""TEST1""}",_raw_bamboo_api_deploy,41,
-3,1310722,lake,TEST1-TEST3,a test
environment,1,DETAILED,1,1,1,1,1,0,0,"{""connectionId"":3,""ProjectKey"":""TEST1""}",_raw_bamboo_api_deploy,41,
-3,1310723,environment2,TEST1-TEST1,the environment2 for
project,1,DETAILED,1,1,1,1,1,0,0,"{""connectionId"":3,""ProjectKey"":""TEST1""}",_raw_bamboo_api_deploy,39,
-3,1310724,test-env3,TEST1-TEST1,a test environment
num3,2,DETAILED,1,1,1,1,1,0,0,"{""connectionId"":3,""ProjectKey"":""TEST1""}",_raw_bamboo_api_deploy,39,
-3,1310725,test-env4,TEST1-TEST1,the 4th test
environment,3,DETAILED,1,1,1,1,1,0,0,"{""connectionId"":3,""ProjectKey"":""TEST1""}",_raw_bamboo_api_deploy,39,
+1,950273,test-env,TEST1,a test
environment,0,DETAILED,1,1,1,1,1,0,0,"{""connectionId"":1,""PlanKey"":""TEST1""}",_raw_bamboo_api_deploy,39,
+1,1310723,environment2,TEST1,the environment2 for
project,1,DETAILED,1,1,1,1,1,0,0,"{""connectionId"":1,""PlanKey"":""TEST1""}",_raw_bamboo_api_deploy,39,
+1,1310724,test-env3,TEST1,a test environment
num3,2,DETAILED,1,1,1,1,1,0,0,"{""connectionId"":1,""PlanKey"":""TEST1""}",_raw_bamboo_api_deploy,39,
+1,1310725,test-env4,TEST1,the 4th test
environment,3,DETAILED,1,1,1,1,1,0,0,"{""connectionId"":1,""PlanKey"":""TEST1""}",_raw_bamboo_api_deploy,39,
diff --git
a/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_job_builds.csv
b/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_job_builds.csv
index c60cf7e82..679f9d93d 100644
--- a/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_job_builds.csv
+++ b/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_job_builds.csv
@@ -1,10 +1,3 @@
connection_id,job_build_key,job_key,plan_build_key,expand,number,build_number,job_name,plan_name,plan_key,project_name,project_key,build_result_key,life_cycle_state,build_started_time,pretty_build_started_time,build_completed_time,build_completed_date,pretty_build_completed_time,build_duration_in_seconds,build_duration,build_duration_description,build_relative_time,vcs_revision_key,build_test_summary,successful_test_count,failed_test_count,quarantined_test_count,skipped_test_count,contin
[...]
-3,TEST1-TEST1-JOB1-22,TEST1-TEST1-JOB1,TEST1-TEST1-22,"plan,artifacts,comments,labels,jiraIssues,variables",22,22,Default
Job,test_plan,TEST1-TEST1,test_project,TEST1,TEST1-TEST1-JOB1-22,Finished,2023-02-22T08:31:51.580+00:00,"Wed,
22 Feb, 08:31
AM",2023-02-22T08:31:51.590+00:00,2023-02-22T08:31:51.590+00:00,"Wed, 22 Feb,
08:31 AM",0,10,< 1 second,1 hour ago,,No tests found,0,0,0,0,0,0,0,0,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>","Manual run
by [...]
-3,TEST1-TEST1-JOB1-23,TEST1-TEST1-JOB1,TEST1-TEST1-23,"plan,artifacts,comments,labels,jiraIssues,variables",23,23,Default
Job,test_plan,TEST1-TEST1,test_project,TEST1,TEST1-TEST1-JOB1-23,Finished,2023-02-22T08:31:54.768+00:00,"Wed,
22 Feb, 08:31
AM",2023-02-22T08:31:54.778+00:00,2023-02-22T08:31:54.778+00:00,"Wed, 22 Feb,
08:31 AM",0,10,< 1 second,1 hour ago,,No tests found,0,0,0,0,0,0,0,0,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>","Manual run
by [...]
-3,TEST1-TEST2-JOB1-2,TEST1-TEST2-JOB1,TEST1-TEST2-2,"plan,artifacts,comments,labels,jiraIssues,variables",2,2,Default
Job,test2,TEST1-TEST2,test_project,TEST1,TEST1-TEST2-JOB1-2,Finished,2023-02-22T08:57:02.876+00:00,"Wed,
22 Feb, 08:57
AM",2023-02-22T08:57:02.879+00:00,2023-02-22T08:57:02.879+00:00,"Wed, 22 Feb,
08:57 AM",0,3,< 1 second,1 hour ago,,No tests found,0,0,0,0,0,0,0,0,"Manual run
by <a href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>","Manual
run by <a href="" [...]
-3,TEST1-TEST2-JOB1-3,TEST1-TEST2-JOB1,TEST1-TEST2-3,"plan,artifacts,comments,labels,jiraIssues,variables",3,3,compile,test2,TEST1-TEST2,test_project,TEST1,TEST1-TEST2-JOB1-3,Finished,2023-02-22T08:57:06.722+00:00,"Wed,
22 Feb, 08:57
AM",2023-02-22T08:57:06.725+00:00,2023-02-22T08:57:06.725+00:00,"Wed, 22 Feb,
08:57 AM",0,3,< 1 second,1 hour ago,,No tests found,0,0,0,0,0,0,0,0,"Manual run
by <a href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>","Manual
run by <a href=""http [...]
-3,TEST1-TEST3-JOB1-2,TEST1-TEST3-JOB1,TEST1-TEST3-2,"plan,artifacts,comments,labels,jiraIssues,variables",2,2,Default
Job,test3,TEST1-TEST3,test_project,TEST1,TEST1-TEST3-JOB1-2,Finished,2023-02-22T08:55:21.897+00:00,"Wed,
22 Feb, 08:55
AM",2023-02-22T08:55:21.901+00:00,2023-02-22T08:55:21.901+00:00,"Wed, 22 Feb,
08:55 AM",0,4,< 1 second,1 hour ago,,No tests found,0,0,0,0,0,0,0,0,"Manual run
by <a href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>","Manual
run by <a href="" [...]
-3,TEST1-TEST3-JOB1-3,TEST1-TEST3-JOB1,TEST1-TEST3-3,"plan,artifacts,comments,labels,jiraIssues,variables",3,3,Default
Job,test3,TEST1-TEST3,test_project,TEST1,TEST1-TEST3-JOB1-3,Finished,2023-02-22T08:55:25.123+00:00,"Wed,
22 Feb, 08:55
AM",2023-02-22T08:55:25.126+00:00,2023-02-22T08:55:25.126+00:00,"Wed, 22 Feb,
08:55 AM",0,3,< 1 second,1 hour ago,,No tests found,0,0,0,0,0,0,0,0,"Manual run
by <a href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>","Manual
run by <a href="" [...]
-3,TEST1-TEST4-JOB1-1,TEST1-TEST4-JOB1,TEST1-TEST4-1,"plan,artifacts,comments,labels,jiraIssues,variables",1,1,Default
Job,test4,TEST1-TEST4,test_project,TEST1,TEST1-TEST4-JOB1-1,Finished,2023-02-22T08:56:25.943+00:00,"Wed,
22 Feb, 08:56
AM",2023-02-22T08:56:25.947+00:00,2023-02-22T08:56:25.947+00:00,"Wed, 22 Feb,
08:56 AM",0,4,< 1 second,1 hour ago,,No tests found,0,0,0,0,0,0,0,0,"Manual run
by <a href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>","Manual
run by <a href="" [...]
-3,TEST1-TEST4-JOB1-2,TEST1-TEST4-JOB1,TEST1-TEST4-2,"plan,artifacts,comments,labels,jiraIssues,variables",2,2,Default
Job,test4,TEST1-TEST4,test_project,TEST1,TEST1-TEST4-JOB1-2,Finished,2023-02-22T08:56:27.888+00:00,"Wed,
22 Feb, 08:56
AM",2023-02-22T08:56:27.891+00:00,2023-02-22T08:56:27.891+00:00,"Wed, 22 Feb,
08:56 AM",0,3,< 1 second,1 hour ago,,No tests found,0,0,0,0,0,0,0,0,"Manual run
by <a href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>","Manual
run by <a href="" [...]
-3,TEST1-TEST4-JOB1-3,TEST1-TEST4-JOB1,TEST1-TEST4-3,"plan,artifacts,comments,labels,jiraIssues,variables",3,3,compile,test4,TEST1-TEST4,test_project,TEST1,TEST1-TEST4-JOB1-3,Finished,2023-02-22T08:57:01.230+00:00,"Wed,
22 Feb, 08:57
AM",2023-02-22T08:57:01.234+00:00,2023-02-22T08:57:01.234+00:00,"Wed, 22 Feb,
08:57 AM",0,4,< 1 second,1 hour ago,,No tests found,0,0,0,0,0,0,0,0,"Manual run
by <a href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>","Manual
run by <a href=""http [...]
+1,TEST-PLA3-JOB1-1,TEST-PLA3-JOB1,TEST-PLA3-1,"plan,vcsRevisions,artifacts,comments,labels,jiraIssues,variables",1,1,Default
Job,pla-3,TEST-PLA3,test,,TEST-PLA3-JOB1-1,Finished,2023-07-27T03:47:13.626+00:00,"Thu,
27 Jul, 03:47
AM",2023-07-27T03:47:13.750+00:00,2023-07-27T03:47:13.750+00:00,"Thu, 27 Jul,
03:47 AM",0,124,< 1 second,10 hours
ago,4e53dfe616d640cec760234643b13a02339d1eaa,No tests
found,0,0,0,0,0,0,0,0,First build for this plan,First build for this
plan,Successful,Successful,T [...]
+1,TEST-PLA3-JOB1-2,TEST-PLA3-JOB1,TEST-PLA3-2,"plan,vcsRevisions,artifacts,comments,labels,jiraIssues,variables",2,2,Default
Job,pla-3,TEST-PLA3,test,,TEST-PLA3-JOB1-2,Finished,2023-07-27T03:56:15.783+00:00,"Thu,
27 Jul, 03:56
AM",2023-07-27T03:56:15.789+00:00,2023-07-27T03:56:15.789+00:00,"Thu, 27 Jul,
03:56 AM",0,6,< 1 second,10 hours
ago,79b062bd53af15c701193c90b543386557cb7a3a,No tests
found,0,0,0,0,0,0,0,0,Code changes detected,Code changes
detected,Successful,Successful,TEST-PLA3-J [...]
diff --git
a/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_job_builds_no_prod_env.csv
b/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_job_builds_no_prod_env.csv
index bb0a5c9c8..c6ac4c454 100644
---
a/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_job_builds_no_prod_env.csv
+++
b/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_job_builds_no_prod_env.csv
@@ -1,10 +1,3 @@
connection_id,job_build_key,environment,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
-3,TEST1-TEST1-JOB1-22,PRODUCTION,"{""connectionId"":3,""ProjectKey"":""TEST1""}",_raw_bamboo_api_job_build,199,
-3,TEST1-TEST1-JOB1-23,PRODUCTION,"{""connectionId"":3,""ProjectKey"":""TEST1""}",_raw_bamboo_api_job_build,198,
-3,TEST1-TEST2-JOB1-2,PRODUCTION,"{""connectionId"":3,""ProjectKey"":""TEST1""}",_raw_bamboo_api_job_build,123,
-3,TEST1-TEST2-JOB1-3,PRODUCTION,"{""connectionId"":3,""ProjectKey"":""TEST1""}",_raw_bamboo_api_job_build,122,
-3,TEST1-TEST3-JOB1-2,PRODUCTION,"{""connectionId"":3,""ProjectKey"":""TEST1""}",_raw_bamboo_api_job_build,154,
-3,TEST1-TEST3-JOB1-3,PRODUCTION,"{""connectionId"":3,""ProjectKey"":""TEST1""}",_raw_bamboo_api_job_build,153,
-3,TEST1-TEST4-JOB1-1,PRODUCTION,"{""connectionId"":3,""ProjectKey"":""TEST1""}",_raw_bamboo_api_job_build,139,
-3,TEST1-TEST4-JOB1-2,PRODUCTION,"{""connectionId"":3,""ProjectKey"":""TEST1""}",_raw_bamboo_api_job_build,138,
-3,TEST1-TEST4-JOB1-3,PRODUCTION,"{""connectionId"":3,""ProjectKey"":""TEST1""}",_raw_bamboo_api_job_build,137,
+1,TEST-PLA3-JOB1-1,PRODUCTION,"{""connectionId"":1,""PlanKey"":""TEST-PLA3""}",_raw_bamboo_api_job_build,2,
+1,TEST-PLA3-JOB1-2,PRODUCTION,"{""connectionId"":1,""PlanKey"":""TEST-PLA3""}",_raw_bamboo_api_job_build,1,
diff --git a/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_jobs.csv
b/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_jobs.csv
index a28b68c60..766268752 100644
--- a/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_jobs.csv
+++ b/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_jobs.csv
@@ -1,5 +1,2 @@
connection_id,job_key,id,name,plan_key,project_key,project_name,description,branch_name,stage_name,type,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
-3,TEST1-TEST1-JOB1,TEST1-TEST1-JOB1,Default
Job,TEST1-TEST1,TEST1,test_project,just a test
plan,Default,,job,"{""connectionId"":3,""ProjectKey"":""TEST1""}",_raw_bamboo_api_job,7,
-3,TEST1-TEST2-JOB1,TEST1-TEST2-JOB1,Default
Job,TEST1-TEST2,TEST1,test_project,description
plan2,Default,,job,"{""connectionId"":3,""ProjectKey"":""TEST1""}",_raw_bamboo_api_job,8,
-3,TEST1-TEST3-JOB1,TEST1-TEST3-JOB1,Default
Job,TEST1-TEST3,TEST1,test_project,description
plan23,Default,,job,"{""connectionId"":3,""ProjectKey"":""TEST1""}",_raw_bamboo_api_job,9,
-3,TEST1-TEST4-JOB1,TEST1-TEST4-JOB1,Default
Job,TEST1-TEST4,TEST1,test_project,description
plan4,Default,,job,"{""connectionId"":3,""ProjectKey"":""TEST1""}",_raw_bamboo_api_job,10,
+1,TEST-PLA1-JOB1,TEST-PLA1-JOB1,Default
Job,TEST-PLA1,,test,,main,,job,"{""connectionId"":1,""PlanKey"":""TEST-PLA1""}",_raw_bamboo_api_job,1,
diff --git
a/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_plan_build_commits.csv
b/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_plan_build_commits.csv
index 20d8b4b49..dc5984422 100644
---
a/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_plan_build_commits.csv
+++
b/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_plan_build_commits.csv
@@ -1,3 +1,3 @@
"connection_id","plan_build_key","repository_id","repository_name","vcs_revision_key","created_at","updated_at","_raw_data_params","_raw_data_table","_raw_data_id","_raw_data_remark"
-3,TEST1-TEST2-1,1736707,"devlake-website","207fc4666c4d356b474ed951ffe38cc2ad97499e","2023-04-12
09:19:52.190","2023-04-12
09:19:53.600","{""connectionId"":3,""ProjectKey"":""TEST2""}","_raw_bamboo_api_job_build",3,""
-3,TEST1-TEST2-1,1736708,devlake-test,"caab17b6dc3532b7f78f418a192c050320a30e46","2023-04-12
09:19:52.190","2023-04-12
09:19:52.190","{""connectionId"":3,""ProjectKey"":""TEST2""}","_raw_bamboo_api_plan_build",15,""
+1,TEST-PLA3-1,1736707,"devlake-website","207fc4666c4d356b474ed951ffe38cc2ad97499e","2023-04-12
09:19:52.190","2023-04-12
09:19:53.600","{""connectionId"":1,""PlanKey"":""TEST-PLA3""}","_raw_bamboo_api_job_build",3,""
+1,TEST-PLA3-2,1736708,devlake-test,"caab17b6dc3532b7f78f418a192c050320a30e46","2023-04-12
09:19:52.190","2023-04-12
09:19:52.190","{""connectionId"":1,""PlanKey"":""TEST-PLA3""}","_raw_bamboo_api_plan_build",15,""
diff --git
a/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_plan_builds.csv
b/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_plan_builds.csv
index ba4de5ef8..efe765d53 100644
--- a/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_plan_builds.csv
+++ b/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_plan_builds.csv
@@ -1,10 +1,3 @@
connection_id,plan_build_key,expand,number,build_number,plan_name,plan_key,project_name,project_key,build_result_key,life_cycle_state,build_started_time,pretty_build_started_time,build_completed_time,build_completed_date,pretty_build_completed_time,build_duration_in_seconds,build_duration,build_duration_description,build_relative_time,vcs_revision_key,build_test_summary,successful_test_count,failed_test_count,quarantined_test_count,skipped_test_count,continuable,once_off,restartable,not_
[...]
-3,TEST1-TEST1-22,"plan,artifacts,comments,labels,jiraIssues,variables,stages",22,22,test_plan,TEST1-TEST1,test_project,TEST1,TEST1-TEST1-22,Finished,2023-02-22T08:31:51.532+00:00,"Wed,
22 Feb, 08:31
AM",2023-02-22T08:31:51.624+00:00,2023-02-22T08:31:51.624+00:00,"Wed, 22 Feb,
08:31 AM",0,92,< 1 second,3 hours ago,,No tests found,0,0,0,0,0,0,0,0,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>","Manual run
by <a href=""http://54.172.92.89:8085/browse/user [...]
-3,TEST1-TEST1-23,"plan,artifacts,comments,labels,jiraIssues,variables,stages",23,23,test_plan,TEST1-TEST1,test_project,TEST1,TEST1-TEST1-23,Finished,2023-02-22T08:31:54.760+00:00,"Wed,
22 Feb, 08:31
AM",2023-02-22T08:31:54.811+00:00,2023-02-22T08:31:54.811+00:00,"Wed, 22 Feb,
08:31 AM",0,51,< 1 second,3 hours ago,,No tests found,0,0,0,0,0,0,0,0,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>","Manual run
by <a href=""http://54.172.92.89:8085/browse/user [...]
-3,TEST1-TEST2-1,"plan,artifacts,comments,labels,jiraIssues,variables,stages",1,1,test2,TEST1-TEST2,test_project,TEST1,TEST1-TEST2-1,Finished,2023-02-22T08:54:40.831+00:00,"Wed,
22 Feb, 08:54
AM",2023-02-22T08:54:40.884+00:00,2023-02-22T08:54:40.884+00:00,"Wed, 22 Feb,
08:54 AM",0,53,< 1 second,3 hours ago,,No tests found,0,0,0,0,0,0,1,0,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>","Manual run
by <a href=""http://54.172.92.89:8085/browse/user/bamboo" [...]
-3,TEST1-TEST2-2,"plan,artifacts,comments,labels,jiraIssues,variables,stages",2,2,test2,TEST1-TEST2,test_project,TEST1,TEST1-TEST2-2,Finished,2023-02-22T08:57:02.868+00:00,"Wed,
22 Feb, 08:57
AM",2023-02-22T08:57:02.903+00:00,2023-02-22T08:57:02.903+00:00,"Wed, 22 Feb,
08:57 AM",0,35,< 1 second,3 hours ago,,No tests found,0,0,0,0,0,0,1,0,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>","Manual run
by <a href=""http://54.172.92.89:8085/browse/user/bamboo" [...]
-3,TEST1-TEST2-3,"plan,artifacts,comments,labels,jiraIssues,variables,stages",3,3,test2,TEST1-TEST2,test_project,TEST1,TEST1-TEST2-3,Finished,2023-02-22T08:57:06.713+00:00,"Wed,
22 Feb, 08:57
AM",2023-02-22T08:57:06.770+00:00,2023-02-22T08:57:06.770+00:00,"Wed, 22 Feb,
08:57 AM",0,57,< 1 second,3 hours ago,,No tests found,0,0,0,0,0,0,1,0,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>","Manual run
by <a href=""http://54.172.92.89:8085/browse/user/bamboo" [...]
-3,TEST1-TEST3-1,"plan,artifacts,comments,labels,jiraIssues,variables,stages",1,1,test3,TEST1-TEST3,test_project,TEST1,TEST1-TEST3-1,Finished,2023-02-22T08:55:19.422+00:00,"Wed,
22 Feb, 08:55
AM",2023-02-22T08:55:19.500+00:00,2023-02-22T08:55:19.500+00:00,"Wed, 22 Feb,
08:55 AM",0,78,< 1 second,3 hours ago,,No tests found,0,0,0,0,0,0,1,0,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>","Manual run
by <a href=""http://54.172.92.89:8085/browse/user/bamboo" [...]
-3,TEST1-TEST3-2,"plan,artifacts,comments,labels,jiraIssues,variables,stages",2,2,compile,TEST1-TEST3,test_project,TEST1,TEST1-TEST3-2,Finished,2023-02-22T08:55:21.888+00:00,"Wed,
22 Feb, 08:55
AM",2023-02-22T08:55:21.930+00:00,2023-02-22T08:55:21.930+00:00,"Wed, 22 Feb,
08:55 AM",0,42,< 1 second,3 hours ago,,No tests found,0,0,0,0,0,0,1,0,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>","Manual run
by <a href=""http://54.172.92.89:8085/browse/user/bambo [...]
-3,TEST1-TEST4-1,"plan,artifacts,comments,labels,jiraIssues,variables,stages",1,1,test4,TEST1-TEST4,test_project,TEST1,TEST1-TEST4-1,Finished,2023-02-22T08:56:25.911+00:00,"Wed,
22 Feb, 08:56
AM",2023-02-22T08:56:25.972+00:00,2023-02-22T08:56:25.972+00:00,"Wed, 22 Feb,
08:56 AM",0,61,< 1 second,3 hours ago,,No tests found,0,0,0,0,0,0,1,0,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>","Manual run
by <a href=""http://54.172.92.89:8085/browse/user/bamboo" [...]
-3,TEST1-TEST4-2,"plan,artifacts,comments,labels,jiraIssues,variables,stages",2,2,compile,TEST1-TEST4,test_project,TEST1,TEST1-TEST4-2,Finished,2023-02-22T08:56:27.881+00:00,"Wed,
22 Feb, 08:56
AM",2023-02-22T08:56:27.917+00:00,2023-02-22T08:56:27.917+00:00,"Wed, 22 Feb,
08:56 AM",0,36,< 1 second,3 hours ago,,No tests found,0,0,0,0,0,0,1,0,"Manual
run by <a
href=""http://54.172.92.89:8085/browse/user/bamboo"">devlake</a>","Manual run
by <a href=""http://54.172.92.89:8085/browse/user/bambo [...]
+1,TEST-PLA3-1,"plan,vcsRevisions,artifacts,comments,labels,jiraIssues,variables,stages",1,1,pla-3,TEST-PLA3,test,,TEST-PLA3-1,Finished,2023-07-27T03:47:12.941+00:00,"Thu,
27 Jul, 03:47
AM",2023-07-27T03:47:14.079+00:00,2023-07-27T03:47:14.079+00:00,"Thu, 27 Jul,
03:47 AM",1,1138,1 second,10 hours
ago,4e53dfe616d640cec760234643b13a02339d1eaa,No tests
found,0,0,0,0,0,0,0,0,First build for this plan,First build for this
plan,Successful,Successful,TEST-PLA3-1,,,"{""connectionId"":1,""PlanKey [...]
+1,TEST-PLA3-2,"plan,vcsRevisions,artifacts,comments,labels,jiraIssues,variables,stages",2,2,pla-3,TEST-PLA3,test,,TEST-PLA3-2,Finished,2023-07-27T03:56:14.902+00:00,"Thu,
27 Jul, 03:56
AM",2023-07-27T03:56:15.865+00:00,2023-07-27T03:56:15.865+00:00,"Thu, 27 Jul,
03:56 AM",0,963,< 1 second,10 hours
ago,79b062bd53af15c701193c90b543386557cb7a3a,No tests
found,0,0,0,0,0,0,0,0,Code changes detected,Code changes
detected,Successful,Successful,TEST-PLA3-2,,,"{""connectionId"":1,""PlanKey"":""TE
[...]
diff --git a/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_plans.csv
b/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_plans.csv
index eb2f4e06a..327f99da9 100644
--- a/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_plans.csv
+++ b/backend/plugins/bamboo/e2e/snapshot_tables/_tool_bamboo_plans.csv
@@ -1,5 +1,2 @@
connection_id,plan_key,name,expand,project_key,project_name,description,short_name,build_name,short_key,type,enabled,href,rel,is_favourite,is_active,is_building,average_build_time_in_seconds,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
-3,TEST1-TEST1,test_project -
test_plan,"actions,stages,branches",TEST1,test_project,just a test
plan,test_plan,test_plan,TEST1,chain,1,http://54.172.92.89:8085/rest/api/latest/plan/TEST1-TEST1,self,0,0,0,0,"{""connectionId"":3,""ProjectKey"":""TEST1""}",_raw_bamboo_api_plan,22,
-3,TEST1-TEST2,test_project -
test2,"actions,stages,branches",TEST1,test_project,description
plan2,test2,test2,TEST2,chain,1,http://54.172.92.89:8085/rest/api/latest/plan/TEST1-TEST2,self,0,0,0,0,"{""connectionId"":3,""ProjectKey"":""TEST1""}",_raw_bamboo_api_plan,19,
-3,TEST1-TEST3,test_project -
test3,"actions,stages,branches",TEST1,test_project,description
plan23,test3,test3,TEST3,chain,1,http://54.172.92.89:8085/rest/api/latest/plan/TEST1-TEST3,self,0,0,0,0,"{""connectionId"":3,""ProjectKey"":""TEST1""}",_raw_bamboo_api_plan,20,
-3,TEST1-TEST4,test_project -
test4,"actions,stages,branches",TEST1,test_project,description
plan4,test4,test4,TEST4,chain,1,http://54.172.92.89:8085/rest/api/latest/plan/TEST1-TEST4,self,0,0,0,0,"{""connectionId"":3,""ProjectKey"":""TEST1""}",_raw_bamboo_api_plan,21,
+3,TEST1,test_project -
test_plan,"actions,stages,branches",TEST1,test_project,just a test
plan,test_plan,test_plan,TEST1,chain,1,http://54.172.92.89:8085/rest/api/latest/plan/TEST1-TEST1,self,0,0,0,0,"{""connectionId"":3,""ProjectKey"":""TEST1""}",_raw_bamboo_api_plan,22,
diff --git
a/backend/plugins/bamboo/e2e/snapshot_tables/cicd_pipeline_commits.csv
b/backend/plugins/bamboo/e2e/snapshot_tables/cicd_pipeline_commits.csv
index fbdeddfd9..a5c89af34 100644
--- a/backend/plugins/bamboo/e2e/snapshot_tables/cicd_pipeline_commits.csv
+++ b/backend/plugins/bamboo/e2e/snapshot_tables/cicd_pipeline_commits.csv
@@ -1,3 +1,3 @@
pipeline_id,commit_sha,branch,repo_id,repo_url,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
-bamboo:BambooPlanBuild:3:TEST1-TEST2-1,207fc4666c4d356b474ed951ffe38cc2ad97499e,,,devlake-website,"{""connectionId"":3,""ProjectKey"":""TEST2""}",_raw_bamboo_api_job_build,3,
-bamboo:BambooPlanBuild:3:TEST1-TEST2-1,caab17b6dc3532b7f78f418a192c050320a30e46,,,devlake-test,"{""connectionId"":3,""ProjectKey"":""TEST2""}",_raw_bamboo_api_plan_build,15,
+bamboo:BambooPlanBuild:1:TEST-PLA3-1,207fc4666c4d356b474ed951ffe38cc2ad97499e,,,devlake-website,"{""connectionId"":1,""PlanKey"":""TEST-PLA3""}",_raw_bamboo_api_job_build,3,
+bamboo:BambooPlanBuild:1:TEST-PLA3-2,caab17b6dc3532b7f78f418a192c050320a30e46,,,devlake-test,"{""connectionId"":1,""PlanKey"":""TEST-PLA3""}",_raw_bamboo_api_plan_build,15,
diff --git a/backend/plugins/bamboo/e2e/snapshot_tables/cicd_pipelines.csv
b/backend/plugins/bamboo/e2e/snapshot_tables/cicd_pipelines.csv
index 097ed7883..a3be8ea46 100644
--- a/backend/plugins/bamboo/e2e/snapshot_tables/cicd_pipelines.csv
+++ b/backend/plugins/bamboo/e2e/snapshot_tables/cicd_pipelines.csv
@@ -1,10 +1,3 @@
id,name,result,status,type,duration_sec,environment,created_date,finished_date,cicd_scope_id
-bamboo:BambooPlanBuild:3:TEST1-TEST1-22,test_plan,SUCCESS,DONE,,0,,2023-02-22T08:31:51.532+00:00,2023-02-22T08:31:51.624+00:00,bamboo:BambooProject:3:TEST1
-bamboo:BambooPlanBuild:3:TEST1-TEST1-23,test_plan,SUCCESS,DONE,,0,,2023-02-22T08:31:54.760+00:00,2023-02-22T08:31:54.811+00:00,bamboo:BambooProject:3:TEST1
-bamboo:BambooPlanBuild:3:TEST1-TEST2-1,test2,FAILURE,DONE,,0,,2023-02-22T08:54:40.831+00:00,2023-02-22T08:54:40.884+00:00,bamboo:BambooProject:3:TEST1
-bamboo:BambooPlanBuild:3:TEST1-TEST2-2,test2,FAILURE,DONE,,0,,2023-02-22T08:57:02.868+00:00,2023-02-22T08:57:02.903+00:00,bamboo:BambooProject:3:TEST1
-bamboo:BambooPlanBuild:3:TEST1-TEST2-3,test2,FAILURE,DONE,,0,,2023-02-22T08:57:06.713+00:00,2023-02-22T08:57:06.770+00:00,bamboo:BambooProject:3:TEST1
-bamboo:BambooPlanBuild:3:TEST1-TEST3-1,test3,FAILURE,DONE,,0,,2023-02-22T08:55:19.422+00:00,2023-02-22T08:55:19.500+00:00,bamboo:BambooProject:3:TEST1
-bamboo:BambooPlanBuild:3:TEST1-TEST3-2,compile,FAILURE,DONE,DEPLOYMENT,0,PRODUCTION,2023-02-22T08:55:21.888+00:00,2023-02-22T08:55:21.930+00:00,bamboo:BambooProject:3:TEST1
-bamboo:BambooPlanBuild:3:TEST1-TEST4-1,test4,FAILURE,DONE,,0,,2023-02-22T08:56:25.911+00:00,2023-02-22T08:56:25.972+00:00,bamboo:BambooProject:3:TEST1
-bamboo:BambooPlanBuild:3:TEST1-TEST4-2,compile,FAILURE,DONE,DEPLOYMENT,0,PRODUCTION,2023-02-22T08:56:27.881+00:00,2023-02-22T08:56:27.917+00:00,bamboo:BambooProject:3:TEST1
+bamboo:BambooPlanBuild:1:TEST-PLA3-1,pla-3,SUCCESS,DONE,,1,,2023-07-27T03:47:12.941+00:00,2023-07-27T03:47:14.079+00:00,bamboo:BambooPlan:1:TEST-PLA3
+bamboo:BambooPlanBuild:1:TEST-PLA3-2,pla-3,SUCCESS,DONE,,0,,2023-07-27T03:56:14.902+00:00,2023-07-27T03:56:15.865+00:00,bamboo:BambooPlan:1:TEST-PLA3
diff --git a/backend/plugins/bamboo/e2e/snapshot_tables/cicd_scopes.csv
b/backend/plugins/bamboo/e2e/snapshot_tables/cicd_scopes.csv
new file mode 100644
index 000000000..e8174b15f
--- /dev/null
+++ b/backend/plugins/bamboo/e2e/snapshot_tables/cicd_scopes.csv
@@ -0,0 +1,2 @@
+id,name,description,url,created_date,updated_date
+bamboo:BambooPlan:3:TEST1,test_project - test_plan,just a test
plan,http://54.172.92.89:8085/rest/api/latest/plan/TEST1-TEST1,,
diff --git a/backend/plugins/bamboo/e2e/snapshot_tables/cicd_tasks.csv
b/backend/plugins/bamboo/e2e/snapshot_tables/cicd_tasks.csv
index 4dd1dff7d..5ca91429b 100644
--- a/backend/plugins/bamboo/e2e/snapshot_tables/cicd_tasks.csv
+++ b/backend/plugins/bamboo/e2e/snapshot_tables/cicd_tasks.csv
@@ -1,10 +1,3 @@
id,name,pipeline_id,result,status,type,environment,duration_sec,started_date,finished_date,cicd_scope_id
-bamboo:BambooJobBuild:3:TEST1-TEST1-JOB1-22,Default
Job,bamboo:BambooPlanBuild:3:TEST1-TEST1-22,SUCCESS,DONE,,,0,2023-02-22T08:31:51.580+00:00,2023-02-22T08:31:51.590+00:00,bamboo:BambooProject:3:TEST1
-bamboo:BambooJobBuild:3:TEST1-TEST1-JOB1-23,Default
Job,bamboo:BambooPlanBuild:3:TEST1-TEST1-23,SUCCESS,DONE,,,0,2023-02-22T08:31:54.768+00:00,2023-02-22T08:31:54.778+00:00,bamboo:BambooProject:3:TEST1
-bamboo:BambooJobBuild:3:TEST1-TEST2-JOB1-2,Default
Job,bamboo:BambooPlanBuild:3:TEST1-TEST2-2,FAILURE,DONE,,,0,2023-02-22T08:57:02.876+00:00,2023-02-22T08:57:02.879+00:00,bamboo:BambooProject:3:TEST1
-bamboo:BambooJobBuild:3:TEST1-TEST2-JOB1-3,compile,bamboo:BambooPlanBuild:3:TEST1-TEST2-3,FAILURE,DONE,DEPLOYMENT,PRODUCTION,0,2023-02-22T08:57:06.722+00:00,2023-02-22T08:57:06.725+00:00,bamboo:BambooProject:3:TEST1
-bamboo:BambooJobBuild:3:TEST1-TEST3-JOB1-2,Default
Job,bamboo:BambooPlanBuild:3:TEST1-TEST3-2,FAILURE,DONE,,,0,2023-02-22T08:55:21.897+00:00,2023-02-22T08:55:21.901+00:00,bamboo:BambooProject:3:TEST1
-bamboo:BambooJobBuild:3:TEST1-TEST3-JOB1-3,Default
Job,bamboo:BambooPlanBuild:3:TEST1-TEST3-3,FAILURE,DONE,,,0,2023-02-22T08:55:25.123+00:00,2023-02-22T08:55:25.126+00:00,bamboo:BambooProject:3:TEST1
-bamboo:BambooJobBuild:3:TEST1-TEST4-JOB1-1,Default
Job,bamboo:BambooPlanBuild:3:TEST1-TEST4-1,FAILURE,DONE,,,0,2023-02-22T08:56:25.943+00:00,2023-02-22T08:56:25.947+00:00,bamboo:BambooProject:3:TEST1
-bamboo:BambooJobBuild:3:TEST1-TEST4-JOB1-2,Default
Job,bamboo:BambooPlanBuild:3:TEST1-TEST4-2,FAILURE,DONE,,,0,2023-02-22T08:56:27.888+00:00,2023-02-22T08:56:27.891+00:00,bamboo:BambooProject:3:TEST1
-bamboo:BambooJobBuild:3:TEST1-TEST4-JOB1-3,compile,bamboo:BambooPlanBuild:3:TEST1-TEST4-3,FAILURE,DONE,DEPLOYMENT,PRODUCTION,0,2023-02-22T08:57:01.230+00:00,2023-02-22T08:57:01.234+00:00,bamboo:BambooProject:3:TEST1
+bamboo:BambooJobBuild:1:TEST-PLA3-JOB1-1,Default
Job,bamboo:BambooPlanBuild:1:TEST-PLA3-1,SUCCESS,DONE,,,0,2023-07-27T03:47:13.626+00:00,2023-07-27T03:47:13.750+00:00,bamboo:BambooPlan:1:TEST-PLA3
+bamboo:BambooJobBuild:1:TEST-PLA3-JOB1-2,Default
Job,bamboo:BambooPlanBuild:1:TEST-PLA3-2,SUCCESS,DONE,,,0,2023-07-27T03:56:15.783+00:00,2023-07-27T03:56:15.789+00:00,bamboo:BambooPlan:1:TEST-PLA3
diff --git a/backend/plugins/bamboo/e2e/snapshot_tables/cicd_tasks_deploy.csv
b/backend/plugins/bamboo/e2e/snapshot_tables/cicd_tasks_deploy.csv
index 5ba0f3921..69500534a 100644
--- a/backend/plugins/bamboo/e2e/snapshot_tables/cicd_tasks_deploy.csv
+++ b/backend/plugins/bamboo/e2e/snapshot_tables/cicd_tasks_deploy.csv
@@ -1,10 +1,10 @@
id,name,pipeline_id,result,status,type,environment,duration_sec,started_date,finished_date,cicd_scope_id
-bamboo:BambooDeployBuild:1:1769473,release-2,bamboo:BambooPlanBuild:1:TEST1-TEST1,,IN_PROGRESS,DEPLOYMENT,PRODUCTION,0,2023-03-10T12:15:45.000+00:00,2023-03-10T12:15:46.000+00:00,bamboo:BambooProject:1:TEST1
-bamboo:BambooDeployBuild:1:1769474,release-2,bamboo:BambooPlanBuild:1:TEST1-TEST1,,IN_PROGRESS,DEPLOYMENT,PRODUCTION,0,2023-03-10T12:27:28.000+00:00,2023-03-10T12:27:28.000+00:00,bamboo:BambooProject:1:TEST1
-bamboo:BambooDeployBuild:1:1769475,release-2,bamboo:BambooPlanBuild:1:TEST1-TEST1,,IN_PROGRESS,DEPLOYMENT,PRODUCTION,0,2023-03-10T12:27:56.000+00:00,2023-03-10T12:27:56.000+00:00,bamboo:BambooProject:1:TEST1
-bamboo:BambooDeployBuild:1:1769476,release-2,bamboo:BambooPlanBuild:1:TEST1-TEST1,,IN_PROGRESS,DEPLOYMENT,PRODUCTION,0,2023-03-10T12:28:12.000+00:00,2023-03-10T12:28:12.000+00:00,bamboo:BambooProject:1:TEST1
-bamboo:BambooDeployBuild:1:1769477,release-1,bamboo:BambooPlanBuild:1:TEST1-TEST1,,IN_PROGRESS,DEPLOYMENT,PRODUCTION,0,2023-03-10T12:29:08.000+00:00,2023-03-10T12:29:09.000+00:00,bamboo:BambooProject:1:TEST1
-bamboo:BambooDeployBuild:1:1769478,release-1,bamboo:BambooPlanBuild:1:TEST1-TEST1,,IN_PROGRESS,DEPLOYMENT,PRODUCTION,0,2023-03-10T12:29:28.000+00:00,2023-03-10T12:29:28.000+00:00,bamboo:BambooProject:1:TEST1
-bamboo:BambooDeployBuild:1:1769479,release-3,bamboo:BambooPlanBuild:1:TEST1-TEST1,,IN_PROGRESS,DEPLOYMENT,PRODUCTION,0,2023-03-10T12:30:37.000+00:00,2023-03-10T12:30:37.000+00:00,bamboo:BambooProject:1:TEST1
-bamboo:BambooDeployBuild:1:1769480,release-3,bamboo:BambooPlanBuild:1:TEST1-TEST1,,IN_PROGRESS,DEPLOYMENT,PRODUCTION,0,2023-03-10T12:30:49.000+00:00,2023-03-10T12:30:49.000+00:00,bamboo:BambooProject:1:TEST1
-bamboo:BambooDeployBuild:1:1769481,release-2,bamboo:BambooPlanBuild:1:TEST1-TEST1,,IN_PROGRESS,DEPLOYMENT,PRODUCTION,0,2023-03-13T09:43:26.000+00:00,2023-03-13T09:43:26.000+00:00,bamboo:BambooProject:1:TEST1
+bamboo:BambooDeployBuild:1:1769473,release-2,bamboo:BambooPlanBuild:1:TEST1,,IN_PROGRESS,DEPLOYMENT,PRODUCTION,0,2023-03-10T12:15:45.000+00:00,2023-03-10T12:15:46.000+00:00,bamboo:BambooPlan:1:TEST1
+bamboo:BambooDeployBuild:1:1769474,release-2,bamboo:BambooPlanBuild:1:TEST1,,IN_PROGRESS,DEPLOYMENT,PRODUCTION,0,2023-03-10T12:27:28.000+00:00,2023-03-10T12:27:28.000+00:00,bamboo:BambooPlan:1:TEST1
+bamboo:BambooDeployBuild:1:1769475,release-2,bamboo:BambooPlanBuild:1:TEST1,,IN_PROGRESS,DEPLOYMENT,PRODUCTION,0,2023-03-10T12:27:56.000+00:00,2023-03-10T12:27:56.000+00:00,bamboo:BambooPlan:1:TEST1
+bamboo:BambooDeployBuild:1:1769476,release-2,bamboo:BambooPlanBuild:1:TEST1,,IN_PROGRESS,DEPLOYMENT,PRODUCTION,0,2023-03-10T12:28:12.000+00:00,2023-03-10T12:28:12.000+00:00,bamboo:BambooPlan:1:TEST1
+bamboo:BambooDeployBuild:1:1769477,release-1,bamboo:BambooPlanBuild:1:TEST1,,IN_PROGRESS,DEPLOYMENT,PRODUCTION,0,2023-03-10T12:29:08.000+00:00,2023-03-10T12:29:09.000+00:00,bamboo:BambooPlan:1:TEST1
+bamboo:BambooDeployBuild:1:1769478,release-1,bamboo:BambooPlanBuild:1:TEST1,,IN_PROGRESS,DEPLOYMENT,PRODUCTION,0,2023-03-10T12:29:28.000+00:00,2023-03-10T12:29:28.000+00:00,bamboo:BambooPlan:1:TEST1
+bamboo:BambooDeployBuild:1:1769479,release-3,bamboo:BambooPlanBuild:1:TEST1,,IN_PROGRESS,DEPLOYMENT,PRODUCTION,0,2023-03-10T12:30:37.000+00:00,2023-03-10T12:30:37.000+00:00,bamboo:BambooPlan:1:TEST1
+bamboo:BambooDeployBuild:1:1769480,release-3,bamboo:BambooPlanBuild:1:TEST1,,IN_PROGRESS,DEPLOYMENT,PRODUCTION,0,2023-03-10T12:30:49.000+00:00,2023-03-10T12:30:49.000+00:00,bamboo:BambooPlan:1:TEST1
+bamboo:BambooDeployBuild:1:1769481,release-2,bamboo:BambooPlanBuild:1:TEST1,,IN_PROGRESS,DEPLOYMENT,PRODUCTION,0,2023-03-13T09:43:26.000+00:00,2023-03-13T09:43:26.000+00:00,bamboo:BambooPlan:1:TEST1
diff --git a/backend/plugins/bamboo/impl/impl.go
b/backend/plugins/bamboo/impl/impl.go
index 1b9484263..120c36294 100644
--- a/backend/plugins/bamboo/impl/impl.go
+++ b/backend/plugins/bamboo/impl/impl.go
@@ -57,7 +57,7 @@ func (p Bamboo) Connection() dal.Tabler {
}
func (p Bamboo) Scope() plugin.ToolLayerScope {
- return &models.BambooProject{}
+ return &models.BambooPlan{}
}
func (p Bamboo) ScopeConfig() dal.Tabler {
@@ -71,7 +71,6 @@ func (p Bamboo) MakeDataSourcePipelinePlanV200(connectionId
uint64, scopes []*pl
func (p Bamboo) GetTablesInfo() []dal.Tabler {
return []dal.Tabler{
&models.BambooConnection{},
- &models.BambooProject{},
&models.BambooPlan{},
&models.BambooJob{},
&models.BambooPlanBuild{},
@@ -94,23 +93,26 @@ func (p Bamboo) Name() string {
func (p Bamboo) SubTaskMetas() []plugin.SubTaskMeta {
// TODO add your sub task here
return []plugin.SubTaskMeta{
- tasks.CollectPlanMeta,
- tasks.ExtractPlanMeta,
+ tasks.ConvertPlansMeta,
+
tasks.CollectJobMeta,
tasks.ExtractJobMeta,
+
tasks.CollectPlanBuildMeta,
tasks.ExtractPlanBuildMeta,
+
tasks.CollectJobBuildMeta,
tasks.ExtractJobBuildMeta,
+
tasks.CollectDeployMeta,
tasks.ExtractDeployMeta,
+
tasks.CollectDeployBuildMeta,
tasks.ExtractDeployBuildMeta,
tasks.ConvertJobBuildsMeta,
tasks.ConvertPlanBuildsMeta,
tasks.ConvertPlanVcsMeta,
- tasks.ConvertProjectsMeta,
tasks.ConvertDeployBuildsMeta,
}
}
@@ -138,29 +140,19 @@ func (p Bamboo) PrepareTaskData(taskCtx
plugin.TaskContext, options map[string]i
if err != nil {
return nil, errors.Default.Wrap(err, "unable to get Bamboo API
client instance")
}
-
- if op.ProjectKey != "" {
- var scope *models.BambooProject
+ if op.PlanKey != "" {
+ var scope *models.BambooPlan
// support v100 & advance mode
// If we still cannot find the record in db, we have to request
from remote server and save it to db
db := taskCtx.GetDal()
- err = db.First(&scope, dal.Where("connection_id = ? AND
project_key = ?", op.ConnectionId, op.ProjectKey))
- if err != nil && db.IsErrorNotFound(err) {
- apiProject, err := api.GetApiProject(op.ProjectKey,
apiClient)
- if err != nil {
- return nil, err
- }
- logger.Debug(fmt.Sprintf("Current project: %s",
apiProject.Key))
- scope =
apiProject.ConvertApiScope().(*models.BambooProject)
- scope.ConnectionId = op.ConnectionId
- err = taskCtx.GetDal().CreateIfNotExist(&scope)
- if err != nil {
- return nil, err
- }
+ err = db.First(&scope, dal.Where("connection_id = ? AND
plan_key = ?", op.ConnectionId, op.PlanKey))
+ if err != nil {
+ return nil, err
}
+
op.ScopeConfigId = scope.ScopeConfigId
if err != nil {
- return nil, errors.Default.Wrap(err, fmt.Sprintf("fail
to find project: %s", op.ProjectKey))
+ return nil, errors.Default.Wrap(err, fmt.Sprintf("fail
to find plan: %s", op.PlanKey))
}
}
diff --git a/backend/plugins/bamboo/models/deploy_build.go
b/backend/plugins/bamboo/models/deploy_build.go
index a6b0164d1..41885d63e 100644
--- a/backend/plugins/bamboo/models/deploy_build.go
+++ b/backend/plugins/bamboo/models/deploy_build.go
@@ -65,7 +65,7 @@ type ApiBambooDeployBuild struct {
func (api *ApiBambooDeployBuild) Convert(op *BambooOptions) *BambooDeployBuild
{
return &BambooDeployBuild{
ConnectionId: op.ConnectionId,
- ProjectKey: op.ProjectKey,
+ PlanKey: op.PlanKey,
DeploymentVersionName: api.DeploymentVersionName,
DeployBuildId: api.Id,
DeploymentState: api.DeploymentState,
diff --git a/backend/plugins/bamboo/models/migrationscripts/register.go
b/backend/plugins/bamboo/models/migrationscripts/20230725_add_scopeConfigId_to_plan.go
similarity index 56%
copy from backend/plugins/bamboo/models/migrationscripts/register.go
copy to
backend/plugins/bamboo/models/migrationscripts/20230725_add_scopeConfigId_to_plan.go
index b526b2ce6..85aad16c5 100644
--- a/backend/plugins/bamboo/models/migrationscripts/register.go
+++
b/backend/plugins/bamboo/models/migrationscripts/20230725_add_scopeConfigId_to_plan.go
@@ -18,16 +18,31 @@ limitations under the License.
package migrationscripts
import (
+ "github.com/apache/incubator-devlake/core/context"
+ "github.com/apache/incubator-devlake/core/errors"
"github.com/apache/incubator-devlake/core/plugin"
)
-// All return all the migration scripts
-func All() []plugin.MigrationScript {
- return []plugin.MigrationScript{
- new(addInitTables),
- new(addConnectionIdToTransformationRule),
- new(addTypeAndEnvironment),
- new(renameTr2ScopeConfig),
- new(addRawParamTableForScope),
- }
+var _ plugin.MigrationScript = (*addRawParamTableForScope)(nil)
+
+type plan20230725 struct {
+ ScopeConfigId uint64 `json:"scopeConfigId"`
+}
+
+func (plan20230725) TableName() string {
+ return "_tool_bamboo_plans"
+}
+
+type addScopeConfigId struct{}
+
+func (script *addScopeConfigId) Up(basicRes context.BasicRes) errors.Error {
+ return basicRes.GetDal().AutoMigrate(&plan20230725{})
+}
+
+func (*addScopeConfigId) Version() uint64 {
+ return 20230725093602
+}
+
+func (script *addScopeConfigId) Name() string {
+ return "add scope_config_id to _tool_bamboo_plans"
}
diff --git a/backend/plugins/bamboo/models/migrationscripts/register.go
b/backend/plugins/bamboo/models/migrationscripts/register.go
index b526b2ce6..fc50db127 100644
--- a/backend/plugins/bamboo/models/migrationscripts/register.go
+++ b/backend/plugins/bamboo/models/migrationscripts/register.go
@@ -29,5 +29,6 @@ func All() []plugin.MigrationScript {
new(addTypeAndEnvironment),
new(renameTr2ScopeConfig),
new(addRawParamTableForScope),
+ new(addScopeConfigId),
}
}
diff --git a/backend/plugins/bamboo/models/plan.go
b/backend/plugins/bamboo/models/plan.go
index be877fe97..db29f5e23 100644
--- a/backend/plugins/bamboo/models/plan.go
+++ b/backend/plugins/bamboo/models/plan.go
@@ -19,71 +19,113 @@ package models
import (
"github.com/apache/incubator-devlake/core/models/common"
+ "github.com/apache/incubator-devlake/core/plugin"
)
+var _ plugin.ToolLayerScope = (*BambooPlan)(nil)
+var _ plugin.ApiScope = (*ApiBambooPlan)(nil)
+
type BambooPlan struct {
- ConnectionId uint64 `gorm:"primaryKey"`
- PlanKey string `json:"planKey" gorm:"primaryKey"`
- Name string `json:"name"`
- Expand string `json:"expand"`
- ProjectKey string `json:"projectKey" gorm:"index"`
- ProjectName string `json:"projectName"`
- Description string `json:"description"`
- ShortName string `json:"shortName"`
- BuildName string `json:"buildName"`
- ShortKey string `json:"shortKey"`
- Type string `json:"type"`
- Enabled bool `json:"enabled"`
- Href string `json:"href"`
- Rel string `json:"rel"`
- IsFavourite bool `json:"isFavourite"`
- IsActive bool `json:"isActive"`
- IsBuilding bool `json:"isBuilding"`
- AverageBuildTimeInSeconds float64 `json:"averageBuildTimeInSeconds"`
- common.NoPKModel
+ ConnectionId uint64 `json:"connectionId"
mapstructure:"connectionId" gorm:"primaryKey"`
+ PlanKey string `json:"planKey"
mapstructure:"planKey" gorm:"primaryKey"`
+ Name string `json:"name" mapstructure:"name"`
+ Expand string `json:"expand" mapstructure:"expand"`
+ ProjectKey string `json:"projectKey"
mapstructure:"projectKey" gorm:"index"`
+ ProjectName string `json:"projectName"
mapstructure:"projectName"`
+ Description string `json:"description"
mapstructure:"description"`
+ ShortName string `json:"shortName"
mapstructure:"shortName"`
+ BuildName string `json:"buildName"
mapstructure:"buildName"`
+ ShortKey string `json:"shortKey"
mapstructure:"shortKey"`
+ Type string `json:"type" mapstructure:"type"`
+ Enabled bool `json:"enabled"
mapstructure:"enabled"`
+ Href string `json:"href" mapstructure:"href"`
+ Rel string `json:"rel" mapstructure:"rel"`
+ IsFavourite bool `json:"isFavourite"
mapstructure:"isFavourite"`
+ IsActive bool `json:"isActive"
mapstructure:"isActive"`
+ IsBuilding bool `json:"isBuilding"
mapstructure:"isBuilding"`
+ AverageBuildTimeInSeconds float64 `json:"averageBuildTimeInSeconds"
mapstructure:"averageBuildTimeInSeconds"`
+ ScopeConfigId uint64 `json:"scopeConfigId"
mapstructure:"scopeConfigId"`
+ common.NoPKModel `json:"-" mapstructure:"-"`
}
-func (apiRes *ApiBambooPlan) Convert() *BambooPlan {
- return &BambooPlan{
- PlanKey: apiRes.Key,
- Name: apiRes.Name,
- Expand: apiRes.Expand,
- ProjectKey: apiRes.ProjectKey,
- ProjectName: apiRes.ProjectName,
- Description: apiRes.Description,
- ShortName: apiRes.ShortName,
- BuildName: apiRes.BuildName,
- ShortKey: apiRes.ShortKey,
- Type: apiRes.Type,
- Enabled: apiRes.Enabled,
- Href: apiRes.Href,
- Rel: apiRes.Rel,
- IsFavourite: apiRes.IsFavourite,
- IsActive: apiRes.IsActive,
- IsBuilding: apiRes.IsBuilding,
- AverageBuildTimeInSeconds: apiRes.AverageBuildTimeInSeconds,
+func (p BambooPlan) ScopeId() string {
+ return p.PlanKey
+}
+
+func (p BambooPlan) ScopeName() string {
+ return p.Name
+}
+
+func (p BambooPlan) ScopeFullName() string {
+ return p.Name
+}
+
+func (p BambooPlan) ScopeParams() interface{} {
+ return &BambooApiParams{
+ ConnectionId: p.ConnectionId,
+ PlanKey: p.PlanKey,
}
}
-func (BambooPlan) TableName() string {
+func (p BambooPlan) TableName() string {
return "_tool_bamboo_plans"
}
type ApiBambooPlan struct {
- Expand string `json:"expand"`
- Description string `json:"description"`
- ShortName string `json:"shortName"`
- BuildName string `json:"buildName"`
- ShortKey string `json:"shortKey"`
- Type string `json:"type"`
- Enabled bool `json:"enabled"`
- ProjectKey string `json:"projectKey"`
- ProjectName string `json:"projectName"`
- ApiBambooLink `json:"link"`
- IsFavourite bool `json:"isFavourite"`
- IsActive bool `json:"isActive"`
- IsBuilding bool `json:"isBuilding"`
- AverageBuildTimeInSeconds float64 `json:"averageBuildTimeInSeconds"`
- Key string `json:"key"`
- Name string `json:"name"`
+ ShortName string `json:"shortName"`
+ ShortKey string `json:"shortKey"`
+ Type string `json:"type"`
+ Enabled bool `json:"enabled"`
+ Link struct {
+ Href string `json:"href"`
+ Rel string `json:"rel"`
+ } `json:"link"`
+ Key string `json:"key"`
+ Name string `json:"name"`
+ PlanKey struct {
+ Key string `json:"key"`
+ } `json:"planKey"`
+}
+
+//type ApiBambooPlan struct {
+// Expand string `json:"expand"`
+// Description string `json:"description"`
+// ShortName string `json:"shortName"`
+// BuildName string `json:"buildName"`
+// ShortKey string `json:"shortKey"`
+// Type string `json:"type"`
+// Enabled bool `json:"enabled"`
+// ProjectKey string `json:"projectKey"`
+// ProjectName string `json:"projectName"`
+// ApiBambooLink `json:"link"`
+// IsFavourite bool `json:"isFavourite"`
+// IsActive bool `json:"isActive"`
+// IsBuilding bool `json:"isBuilding"`
+// AverageBuildTimeInSeconds float64 `json:"averageBuildTimeInSeconds"`
+// Key string `json:"key"`
+// Name string `json:"name"`
+//}
+
+func (p ApiBambooPlan) ConvertApiScope() plugin.ToolLayerScope {
+ return &BambooPlan{
+ PlanKey: p.Key,
+ Name: p.Name,
+ ShortName: p.ShortName,
+ ShortKey: p.ShortKey,
+ Type: p.Type,
+ Enabled: p.Enabled,
+ Href: p.Link.Href,
+ Rel: p.Link.Rel,
+ }
+}
+
+type ApiSearchResult struct {
+ Id string `json:"id"`
+ EntityType string `json:"entityType"`
+ Entity ApiBambooPlan `json:"entity"`
+}
+
+type ApiBambooSearchPlanResponse struct {
+ ApiBambooSizeData `json:"squash"`
+ SearchResults []ApiSearchResult `json:"searchResults"`
}
diff --git a/backend/plugins/bamboo/models/project.go
b/backend/plugins/bamboo/models/project.go
deleted file mode 100644
index 2e8cca041..000000000
--- a/backend/plugins/bamboo/models/project.go
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
-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 models
-
-import (
- "encoding/json"
-
- "github.com/apache/incubator-devlake/core/models/common"
- "github.com/apache/incubator-devlake/core/plugin"
- "github.com/apache/incubator-devlake/helpers/pluginhelper/api"
-)
-
-var _ plugin.ToolLayerScope = (*BambooProject)(nil)
-var _ plugin.ApiGroup = (*api.NoRemoteGroupResponse)(nil)
-var _ plugin.ApiScope = (*ApiBambooProject)(nil)
-
-type BambooProject struct {
- ConnectionId uint64 `json:"connectionId"
mapstructure:"connectionId" validate:"required" gorm:"primaryKey"`
- ProjectKey string `json:"projectKey"
gorm:"primaryKey;type:varchar(256)" validate:"required"`
- ScopeConfigId uint64 `json:"scopeConfigId,omitempty"
mapstructure:"scopeConfigId"`
- Name string `json:"name" gorm:"index;type:varchar(256)"`
- Description string `json:"description"`
- Href string `json:"link"`
- Rel string `json:"rel" gorm:"type:varchar(100)"`
- common.NoPKModel `json:"-" mapstructure:"-"`
-}
-
-func (p BambooProject) ScopeId() string {
- return p.ProjectKey
-}
-
-func (p BambooProject) ScopeName() string {
- return p.Name
-}
-
-func (p BambooProject) ScopeFullName() string {
- return p.Name
-}
-
-func (p BambooProject) ScopeParams() interface{} {
- return &BambooApiParams{
- ConnectionId: p.ConnectionId,
- ProjectKey: p.ProjectKey,
- }
-}
-
-func (BambooProject) TableName() string {
- return "_tool_bamboo_projects"
-}
-
-type ApiBambooPlans struct {
- ApiBambooSizeData `json:"squash"`
- Plan []json.RawMessage `json:"plan"`
-}
-
-type ApiBambooProject struct {
- Key string `json:"key"`
- Expand string `json:"expand"`
- Name string `json:"name"`
- Description string `json:"description"`
- Link ApiBambooLink `json:"link"`
- Plans ApiBambooPlans `json:"plans"`
-}
-
-type ApiBambooProjects struct {
- ApiBambooSizeData `json:"squash"`
- Expand string `json:"expand"`
- Link ApiBambooLink `json:"link"`
- Projects []ApiBambooProject `json:"project"`
-}
-
-type ApiBambooProjectResponse struct {
- Expand string `json:"expand"`
- Link ApiBambooLink `json:"link"`
- Projects ApiBambooProjects `json:"projects"`
-}
-
-type ApiSearchEntityProject struct {
- Id string `json:"id"`
- Key string `json:"key"`
- ProjectName string `json:"projectName"`
- Description string `json:"description"`
-}
-
-type ApiSearchResultProjects struct {
- Id string `json:"id"`
- Type string `json:"type"`
- SearchEntity ApiSearchEntityProject `json:"searchResults"`
-}
-
-type ApiBambooSearchProjectResponse struct {
- ApiBambooSizeData `json:"squash"`
- SearchResults []ApiSearchResultProjects `json:"searchResults"`
-}
-
-func (apiProject ApiBambooProject) ConvertApiScope() plugin.ToolLayerScope {
- b := &BambooProject{}
- b.ProjectKey = apiProject.Key
- b.Name = apiProject.Name
- b.Description = apiProject.Description
- b.Href = apiProject.Link.Href
- return b
-}
diff --git a/backend/plugins/bamboo/models/task.go
b/backend/plugins/bamboo/models/task.go
index 84dc69648..a3578cf80 100644
--- a/backend/plugins/bamboo/models/task.go
+++ b/backend/plugins/bamboo/models/task.go
@@ -19,7 +19,7 @@ package models
type BambooApiParams struct {
ConnectionId uint64 `json:"connectionId"`
- ProjectKey string
+ PlanKey string
}
type BambooOptions struct {
@@ -28,7 +28,7 @@ type BambooOptions struct {
// Such As How many rows do your want
// You can use it in sub tasks and you need pass it in main.go and
pipelines.
ConnectionId uint64 `json:"connectionId"`
- ProjectKey string `json:"projectKey"`
+ PlanKey string `json:"planKey"`
Tasks []string `json:"tasks,omitempty"`
ScopeConfigId uint64 `mapstructure:"scopeConfigId"
json:"scopeConfigId"`
*BambooScopeConfig `mapstructure:"scopeConfig" json:"scopeConfig"`
diff --git a/backend/plugins/bamboo/tasks/deploy_build_collector.go
b/backend/plugins/bamboo/tasks/deploy_build_collector.go
index 53a4d2bb5..6d3fbf2c6 100644
--- a/backend/plugins/bamboo/tasks/deploy_build_collector.go
+++ b/backend/plugins/bamboo/tasks/deploy_build_collector.go
@@ -36,17 +36,16 @@ const RAW_DEPLOY_BUILD_TABLE = "bamboo_api_deploy_build"
var _ plugin.SubTaskEntryPoint = CollectDeployBuild
type InputForEnv struct {
- EnvId uint64 `json:"env_id"`
- PlanKey string `json:"plan_key"`
+ EnvId uint64 `json:"env_id"`
}
func CollectDeployBuild(taskCtx plugin.SubTaskContext) errors.Error {
rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx,
RAW_DEPLOY_BUILD_TABLE)
db := taskCtx.GetDal()
clauses := []dal.Clause{
- dal.Select("env_id,plan_key"),
+ dal.Select("env_id"),
dal.From(models.BambooDeployEnvironment{}.TableName()),
- dal.Where("project_key = ? and connection_id=?",
data.Options.ProjectKey, data.Options.ConnectionId),
+ dal.Where("plan_key = ? and connection_id=?",
data.Options.PlanKey, data.Options.ConnectionId),
}
cursor, err := db.Cursor(
clauses...,
diff --git a/backend/plugins/bamboo/tasks/deploy_build_convertor.go
b/backend/plugins/bamboo/tasks/deploy_build_convertor.go
index 92ac75a5e..930d67cc3 100644
--- a/backend/plugins/bamboo/tasks/deploy_build_convertor.go
+++ b/backend/plugins/bamboo/tasks/deploy_build_convertor.go
@@ -50,7 +50,7 @@ func ConvertDeployBuilds(taskCtx plugin.SubTaskContext)
errors.Error {
}
cursor, err := db.Cursor(
dal.From(&models.BambooDeployBuild{}),
- dal.Where("connection_id = ? and project_key = ?",
data.Options.ConnectionId, data.Options.ProjectKey))
+ dal.Where("connection_id = ? and plan_key = ?",
data.Options.ConnectionId, data.Options.PlanKey))
if err != nil {
return err
}
@@ -58,7 +58,7 @@ func ConvertDeployBuilds(taskCtx plugin.SubTaskContext)
errors.Error {
deployBuildIdGen :=
didgen.NewDomainIdGenerator(&models.BambooDeployBuild{})
planBuildIdGen := didgen.NewDomainIdGenerator(&models.BambooPlanBuild{})
- projectIdGen := didgen.NewDomainIdGenerator(&models.BambooProject{})
+ planIdGen := didgen.NewDomainIdGenerator(&models.BambooPlan{})
converter, err := api.NewDataConverter(api.DataConverterArgs{
InputRowType: reflect.TypeOf(models.BambooDeployBuild{}),
@@ -71,7 +71,7 @@ func ConvertDeployBuilds(taskCtx plugin.SubTaskContext)
errors.Error {
Id:
deployBuildIdGen.Generate(data.Options.ConnectionId, deployBuild.DeployBuildId),
},
PipelineId:
planBuildIdGen.Generate(data.Options.ConnectionId, deployBuild.PlanKey),
- CicdScopeId:
projectIdGen.Generate(data.Options.ConnectionId, deployBuild.ProjectKey),
+ CicdScopeId:
planIdGen.Generate(data.Options.ConnectionId, data.Options.PlanKey),
Name: deployBuild.DeploymentVersionName,
diff --git a/backend/plugins/bamboo/tasks/deploy_build_extractor.go
b/backend/plugins/bamboo/tasks/deploy_build_extractor.go
index 01022c312..e7a4ba9ba 100644
--- a/backend/plugins/bamboo/tasks/deploy_build_extractor.go
+++ b/backend/plugins/bamboo/tasks/deploy_build_extractor.go
@@ -48,7 +48,7 @@ func ExtractDeployBuild(taskCtx plugin.SubTaskContext)
errors.Error {
}
build := res.Convert(data.Options)
- build.PlanKey = input.PlanKey
+ build.PlanKey = data.Options.PlanKey
build.Environment =
data.RegexEnricher.ReturnNameIfMatched(devops.PRODUCTION,
build.DeploymentVersionName)
return []interface{}{
diff --git a/backend/plugins/bamboo/tasks/deploy_extractor.go
b/backend/plugins/bamboo/tasks/deploy_extractor.go
index f02e51726..e375fc709 100644
--- a/backend/plugins/bamboo/tasks/deploy_extractor.go
+++ b/backend/plugins/bamboo/tasks/deploy_extractor.go
@@ -20,7 +20,6 @@ package tasks
import (
"encoding/json"
- "github.com/apache/incubator-devlake/core/dal"
"github.com/apache/incubator-devlake/core/errors"
"github.com/apache/incubator-devlake/core/plugin"
helper "github.com/apache/incubator-devlake/helpers/pluginhelper/api"
@@ -32,31 +31,6 @@ var _ plugin.SubTaskEntryPoint = ExtractDeploy
func ExtractDeploy(taskCtx plugin.SubTaskContext) errors.Error {
rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx,
RAW_DEPLOY_TABLE)
- db := taskCtx.GetDal()
- clauses := []dal.Clause{
- dal.Select("plan_key"),
- dal.From(models.BambooPlan{}.TableName()),
- dal.Where("project_key = ? and connection_id=?",
data.Options.ProjectKey, data.Options.ConnectionId),
- }
- cursor, err := db.Cursor(
- clauses...,
- )
- if err != nil {
- return err
- }
- defer cursor.Close()
-
- Plans := make(map[string]bool)
-
- for cursor.Next() {
- Plan := &models.BambooPlan{}
- err = db.Fetch(cursor, Plan)
- if err != nil {
- return err
- }
- Plans[Plan.PlanKey] = true
- }
-
extractor, err := helper.NewApiExtractor(helper.ApiExtractorArgs{
RawDataSubTaskArgs: *rawDataSubTaskArgs,
Extract: func(resData *helper.RawData) ([]interface{},
errors.Error) {
@@ -65,28 +39,17 @@ func ExtractDeploy(taskCtx plugin.SubTaskContext)
errors.Error {
if err != nil {
return nil, err
}
- plan := &SimplePlan{}
- err = errors.Convert(json.Unmarshal(resData.Input,
plan))
- if err != nil {
- return nil, err
- }
-
- results := make([]interface{}, 0, len(res.Environments))
-
- if Plans[res.PlanKey.Key] {
- for _, env := range res.Environments {
- body :=
&models.BambooDeployEnvironment{}
-
- body.Convert(&env)
- body.ConnectionId =
data.Options.ConnectionId
- body.ProjectKey =
data.Options.ProjectKey
- body.PlanKey = res.PlanKey.Key
-
- results = append(results, body)
+ var results []interface{}
+ if res.PlanKey.Key == data.Options.PlanKey {
+ for _, apiEnv := range res.Environments {
+ env :=
new(models.BambooDeployEnvironment)
+ env.Convert(&apiEnv)
+ env.ConnectionId =
data.Options.ConnectionId
+ env.PlanKey = res.PlanKey.Key
+ results = append(results, env)
}
}
-
return results, nil
},
})
diff --git a/backend/plugins/bamboo/tasks/job_build_collector.go
b/backend/plugins/bamboo/tasks/job_build_collector.go
index 2a467f07f..256feafff 100644
--- a/backend/plugins/bamboo/tasks/job_build_collector.go
+++ b/backend/plugins/bamboo/tasks/job_build_collector.go
@@ -43,7 +43,7 @@ func CollectJobBuild(taskCtx plugin.SubTaskContext)
errors.Error {
clauses := []dal.Clause{
dal.Select("job_key, plan_name, plan_key"),
dal.From(models.BambooJob{}.TableName()),
- dal.Where("project_key = ? and connection_id=?",
data.Options.ProjectKey, data.Options.ConnectionId),
+ dal.Where("plan_key = ? and connection_id=?",
data.Options.PlanKey, data.Options.ConnectionId),
}
cursor, err := db.Cursor(
clauses...,
diff --git a/backend/plugins/bamboo/tasks/job_build_convertor.go
b/backend/plugins/bamboo/tasks/job_build_convertor.go
index 8ef924b6d..88933d843 100644
--- a/backend/plugins/bamboo/tasks/job_build_convertor.go
+++ b/backend/plugins/bamboo/tasks/job_build_convertor.go
@@ -43,7 +43,7 @@ func ConvertJobBuilds(taskCtx plugin.SubTaskContext)
errors.Error {
rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx,
RAW_JOB_BUILD_TABLE)
cursor, err := db.Cursor(
dal.From(&models.BambooJobBuild{}),
- dal.Where("connection_id = ? and project_key = ?",
data.Options.ConnectionId, data.Options.ProjectKey))
+ dal.Where("connection_id = ? and plan_key = ?",
data.Options.ConnectionId, data.Options.PlanKey))
if err != nil {
return err
}
@@ -51,7 +51,7 @@ func ConvertJobBuilds(taskCtx plugin.SubTaskContext)
errors.Error {
jobBuildIdGen := didgen.NewDomainIdGenerator(&models.BambooJobBuild{})
planBuildIdGen := didgen.NewDomainIdGenerator(&models.BambooPlanBuild{})
- projectIdGen := didgen.NewDomainIdGenerator(&models.BambooProject{})
+ planIdGen := didgen.NewDomainIdGenerator(&models.BambooPlan{})
converter, err := api.NewDataConverter(api.DataConverterArgs{
InputRowType: reflect.TypeOf(models.BambooJobBuild{}),
@@ -59,13 +59,16 @@ func ConvertJobBuilds(taskCtx plugin.SubTaskContext)
errors.Error {
RawDataSubTaskArgs: *rawDataSubTaskArgs,
Convert: func(inputRow interface{}) ([]interface{},
errors.Error) {
line := inputRow.(*models.BambooJobBuild)
+ if line.BuildStartedTime == nil {
+ return nil, nil
+ }
domainJobBuild := &devops.CICDTask{
DomainEntity: domainlayer.DomainEntity{Id:
jobBuildIdGen.Generate(data.Options.ConnectionId, line.JobBuildKey)},
Name: line.JobName,
StartedDate: *line.BuildStartedTime,
FinishedDate: line.BuildCompletedDate,
PipelineId:
planBuildIdGen.Generate(data.Options.ConnectionId, line.PlanBuildKey),
- CicdScopeId:
projectIdGen.Generate(data.Options.ConnectionId, line.ProjectKey),
+ CicdScopeId:
planIdGen.Generate(data.Options.ConnectionId, data.Options.PlanKey),
Result: devops.GetResult(&devops.ResultRule{
Failed: []string{"Failed"},
diff --git a/backend/plugins/bamboo/tasks/job_build_extractor.go
b/backend/plugins/bamboo/tasks/job_build_extractor.go
index 2cca09dc9..e4de12eec 100644
--- a/backend/plugins/bamboo/tasks/job_build_extractor.go
+++ b/backend/plugins/bamboo/tasks/job_build_extractor.go
@@ -48,9 +48,8 @@ func ExtractJobBuild(taskCtx plugin.SubTaskContext)
errors.Error {
}
body := res.Convert()
body.ConnectionId = data.Options.ConnectionId
- body.ProjectKey = data.Options.ProjectKey
body.JobKey = plan.JobKey
- body.PlanKey = plan.PlanKey
+ body.PlanKey = data.Options.PlanKey
body.PlanName = plan.PlanName
body.PlanBuildKey = fmt.Sprintf("%s-%v", plan.PlanKey,
body.Number)
body.Type =
data.RegexEnricher.ReturnNameIfMatched(devops.DEPLOYMENT, body.JobName)
diff --git a/backend/plugins/bamboo/tasks/job_collector.go
b/backend/plugins/bamboo/tasks/job_collector.go
index d173c4db0..3425d93ae 100644
--- a/backend/plugins/bamboo/tasks/job_collector.go
+++ b/backend/plugins/bamboo/tasks/job_collector.go
@@ -20,15 +20,12 @@ package tasks
import (
"encoding/json"
"fmt"
- "net/http"
- "net/url"
- "reflect"
-
- "github.com/apache/incubator-devlake/core/dal"
"github.com/apache/incubator-devlake/core/errors"
"github.com/apache/incubator-devlake/core/plugin"
helper "github.com/apache/incubator-devlake/helpers/pluginhelper/api"
"github.com/apache/incubator-devlake/plugins/bamboo/models"
+ "net/http"
+ "net/url"
)
const RAW_JOB_TABLE = "bamboo_api_job"
@@ -41,29 +38,11 @@ type SimplePlan struct {
func CollectJob(taskCtx plugin.SubTaskContext) errors.Error {
rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx,
RAW_JOB_TABLE)
- db := taskCtx.GetDal()
- clauses := []dal.Clause{
- dal.Select("plan_key"),
- dal.From(models.BambooPlan{}.TableName()),
- dal.Where("project_key = ? and connection_id=?",
data.Options.ProjectKey, data.Options.ConnectionId),
- }
- cursor, err := db.Cursor(
- clauses...,
- )
- if err != nil {
- return err
- }
- iterator, err := helper.NewDalCursorIterator(db, cursor,
reflect.TypeOf(SimplePlan{}))
- if err != nil {
- return err
- }
-
collector, err := helper.NewApiCollector(helper.ApiCollectorArgs{
RawDataSubTaskArgs: *rawDataSubTaskArgs,
ApiClient: data.ApiClient,
PageSize: 100,
- Input: iterator,
- UrlTemplate: "search/jobs/{{ .Input.PlanKey }}.json",
+ UrlTemplate: fmt.Sprintf("search/jobs/%s.json",
data.Options.PlanKey),
Query: func(reqData *helper.RequestData) (url.Values,
errors.Error) {
query := url.Values{}
query.Set("showEmpty", fmt.Sprintf("%v", true))
@@ -74,7 +53,7 @@ func CollectJob(taskCtx plugin.SubTaskContext) errors.Error {
},
GetTotalPages: func(res *http.Response, args
*helper.ApiCollectorArgs) (int, errors.Error) {
body := models.ApiBambooSizeData{}
- err = helper.UnmarshalResponse(res, &body)
+ err := helper.UnmarshalResponse(res, &body)
if err != nil {
return 0, err
}
@@ -85,7 +64,7 @@ func CollectJob(taskCtx plugin.SubTaskContext) errors.Error {
var results struct {
SearchResults []json.RawMessage
`json:"searchResults"`
}
- err = helper.UnmarshalResponse(res, &results)
+ err := helper.UnmarshalResponse(res, &results)
if err != nil {
return nil, err
}
diff --git a/backend/plugins/bamboo/tasks/job_extractor.go
b/backend/plugins/bamboo/tasks/job_extractor.go
index 8bfeb9f89..35929b967 100644
--- a/backend/plugins/bamboo/tasks/job_extractor.go
+++ b/backend/plugins/bamboo/tasks/job_extractor.go
@@ -40,15 +40,9 @@ func ExtractJob(taskCtx plugin.SubTaskContext) errors.Error {
if err != nil {
return nil, err
}
- plan := &SimplePlan{}
- err = errors.Convert(json.Unmarshal(resData.Input,
plan))
- if err != nil {
- return nil, err
- }
body := res.Convert()
body.ConnectionId = data.Options.ConnectionId
- body.ProjectKey = data.Options.ProjectKey
- body.PlanKey = plan.PlanKey
+ body.PlanKey = data.Options.PlanKey
return []interface{}{body}, nil
},
})
diff --git a/backend/plugins/bamboo/tasks/plan_build_collector.go
b/backend/plugins/bamboo/tasks/plan_build_collector.go
index bcfd5f968..7443279d5 100644
--- a/backend/plugins/bamboo/tasks/plan_build_collector.go
+++ b/backend/plugins/bamboo/tasks/plan_build_collector.go
@@ -18,13 +18,11 @@ limitations under the License.
package tasks
import (
- "reflect"
+ "fmt"
- "github.com/apache/incubator-devlake/core/dal"
"github.com/apache/incubator-devlake/core/errors"
"github.com/apache/incubator-devlake/core/plugin"
helper "github.com/apache/incubator-devlake/helpers/pluginhelper/api"
- "github.com/apache/incubator-devlake/plugins/bamboo/models"
)
const RAW_PLAN_BUILD_TABLE = "bamboo_api_plan_build"
@@ -33,33 +31,14 @@ var _ plugin.SubTaskEntryPoint = CollectPlanBuild
func CollectPlanBuild(taskCtx plugin.SubTaskContext) errors.Error {
rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx,
RAW_PLAN_BUILD_TABLE)
- db := taskCtx.GetDal()
- clauses := []dal.Clause{
- dal.Select("plan_key"),
- dal.From(models.BambooPlan{}.TableName()),
- dal.Where("project_key = ? and connection_id=?",
data.Options.ProjectKey, data.Options.ConnectionId),
- }
- cursor, err := db.Cursor(
- clauses...,
- )
- if err != nil {
- return err
- }
- iterator, err := helper.NewDalCursorIterator(db, cursor,
reflect.TypeOf(SimplePlan{}))
- if err != nil {
- return err
- }
-
collector, err := helper.NewApiCollector(helper.ApiCollectorArgs{
RawDataSubTaskArgs: *rawDataSubTaskArgs,
ApiClient: data.ApiClient,
PageSize: 100,
- Input: iterator,
- UrlTemplate: "result/{{ .Input.PlanKey }}.json",
-
- Query: QueryForResult,
- GetTotalPages: GetTotalPagesFromResult,
- ResponseParser: GetResultsResult,
+ UrlTemplate: fmt.Sprintf("result/%s.json",
data.Options.PlanKey),
+ Query: QueryForResult,
+ GetTotalPages: GetTotalPagesFromResult,
+ ResponseParser: GetResultsResult,
})
if err != nil {
return err
diff --git a/backend/plugins/bamboo/tasks/plan_build_convertor.go
b/backend/plugins/bamboo/tasks/plan_build_convertor.go
index 25818b7e8..cda96e519 100644
--- a/backend/plugins/bamboo/tasks/plan_build_convertor.go
+++ b/backend/plugins/bamboo/tasks/plan_build_convertor.go
@@ -50,14 +50,14 @@ func ConvertPlanBuilds(taskCtx plugin.SubTaskContext)
errors.Error {
}
cursor, err := db.Cursor(
dal.From(&models.BambooPlanBuild{}),
- dal.Where("connection_id = ? and project_key = ?",
data.Options.ConnectionId, data.Options.ProjectKey))
+ dal.Where("connection_id = ? and plan_key = ?",
data.Options.ConnectionId, data.Options.PlanKey))
if err != nil {
return err
}
defer cursor.Close()
planBuildIdGen := didgen.NewDomainIdGenerator(&models.BambooPlanBuild{})
- projectIdGen := didgen.NewDomainIdGenerator(&models.BambooProject{})
+ planIdGen := didgen.NewDomainIdGenerator(&models.BambooPlan{})
converter, err := api.NewDataConverter(api.DataConverterArgs{
InputRowType: reflect.TypeOf(models.BambooPlanBuild{}),
@@ -65,13 +65,16 @@ func ConvertPlanBuilds(taskCtx plugin.SubTaskContext)
errors.Error {
RawDataSubTaskArgs: *rawDataSubTaskArgs,
Convert: func(inputRow interface{}) ([]interface{},
errors.Error) {
line := inputRow.(*models.BambooPlanBuild)
+ if line.BuildStartedTime == nil {
+ return nil, nil
+ }
domainPlanBuild := &devops.CICDPipeline{
DomainEntity: domainlayer.DomainEntity{Id:
planBuildIdGen.Generate(data.Options.ConnectionId, line.PlanBuildKey)},
Name: line.PlanName,
DurationSec:
uint64(line.BuildDurationInSeconds),
CreatedDate: *line.BuildStartedTime,
FinishedDate: line.BuildCompletedDate,
- CicdScopeId:
projectIdGen.Generate(data.Options.ConnectionId, line.ProjectKey),
+ CicdScopeId:
planIdGen.Generate(data.Options.ConnectionId, data.Options.PlanKey),
Result: devops.GetResult(&devops.ResultRule{
Failed: []string{"Failed"},
diff --git a/backend/plugins/bamboo/tasks/plan_build_extractor.go
b/backend/plugins/bamboo/tasks/plan_build_extractor.go
index 34cd30b86..6e4d3d314 100644
--- a/backend/plugins/bamboo/tasks/plan_build_extractor.go
+++ b/backend/plugins/bamboo/tasks/plan_build_extractor.go
@@ -41,15 +41,9 @@ func ExtractPlanBuild(taskCtx plugin.SubTaskContext)
errors.Error {
if err != nil {
return nil, err
}
- plan := &SimplePlan{}
- err = errors.Convert(json.Unmarshal(resData.Input,
plan))
- if err != nil {
- return nil, err
- }
body := res.Convert()
body.ConnectionId = data.Options.ConnectionId
- body.ProjectKey = data.Options.ProjectKey
- body.PlanKey = plan.PlanKey
+ body.PlanKey = data.Options.PlanKey
body.Type =
data.RegexEnricher.ReturnNameIfMatched(devops.DEPLOYMENT, body.PlanName)
body.Environment =
data.RegexEnricher.ReturnNameIfMatched(devops.PRODUCTION, body.PlanName)
diff --git a/backend/plugins/bamboo/tasks/plan_collector.go
b/backend/plugins/bamboo/tasks/plan_collector.go
deleted file mode 100644
index 287e4c2a5..000000000
--- a/backend/plugins/bamboo/tasks/plan_collector.go
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package tasks
-
-import (
- "encoding/json"
- "fmt"
- "net/http"
- "net/url"
-
- "github.com/apache/incubator-devlake/core/errors"
- "github.com/apache/incubator-devlake/core/plugin"
- helper "github.com/apache/incubator-devlake/helpers/pluginhelper/api"
- "github.com/apache/incubator-devlake/plugins/bamboo/models"
-)
-
-const RAW_PLAN_TABLE = "bamboo_api_plan"
-
-var _ plugin.SubTaskEntryPoint = CollectPlan
-
-func CollectPlan(taskCtx plugin.SubTaskContext) errors.Error {
- rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx,
RAW_PLAN_TABLE)
- collector, err := helper.NewApiCollector(helper.ApiCollectorArgs{
- RawDataSubTaskArgs: *rawDataSubTaskArgs,
- ApiClient: data.ApiClient,
- PageSize: 100,
- UrlTemplate: "project/{{ .Params.ProjectKey }}.json",
- Query: func(reqData *helper.RequestData) (url.Values,
errors.Error) {
- query := url.Values{}
- query.Set("showEmpty", fmt.Sprintf("%v", true))
- query.Set("expand", "plans.plan")
- query.Set("max-result", fmt.Sprintf("%v",
reqData.Pager.Size))
- query.Set("start-index", fmt.Sprintf("%v",
reqData.Pager.Skip))
- return query, nil
- },
- GetTotalPages: func(res *http.Response, args
*helper.ApiCollectorArgs) (int, errors.Error) {
- var body struct {
- SizeInfo models.ApiBambooSizeData `json:"plans"`
- }
- err := helper.UnmarshalResponse(res, &body)
- if err != nil {
- return 0, err
- }
- return GetTotalPagesFromSizeInfo(&body.SizeInfo, args)
- },
-
- ResponseParser: func(res *http.Response) ([]json.RawMessage,
errors.Error) {
- body := &models.ApiBambooProject{}
- err := helper.UnmarshalResponse(res, body)
- if err != nil {
- return nil, err
- }
- return body.Plans.Plan, nil
- },
- })
- if err != nil {
- return err
- }
- return collector.Execute()
-}
-
-var CollectPlanMeta = plugin.SubTaskMeta{
- Name: "CollectPlan",
- EntryPoint: CollectPlan,
- EnabledByDefault: true,
- Description: "Collect Plan data from Bamboo api",
- DomainTypes: []string{plugin.DOMAIN_TYPE_CICD},
-}
diff --git a/backend/plugins/bamboo/tasks/plan_commit_convertor.go
b/backend/plugins/bamboo/tasks/plan_commit_convertor.go
index aed4c95eb..2232ed1b3 100644
--- a/backend/plugins/bamboo/tasks/plan_commit_convertor.go
+++ b/backend/plugins/bamboo/tasks/plan_commit_convertor.go
@@ -50,7 +50,7 @@ func ConvertPlanVcs(taskCtx plugin.SubTaskContext)
errors.Error {
cursor, err := db.Cursor(
dal.From(&models.BambooPlanBuildVcsRevision{}),
dal.Join(`left join _tool_bamboo_plan_builds on
_tool_bamboo_plan_builds.plan_build_key =
_tool_bamboo_plan_build_commits.plan_build_key`),
- dal.Where("_tool_bamboo_plan_build_commits.connection_id = ?
and _tool_bamboo_plan_builds.project_key = ?", data.Options.ConnectionId,
data.Options.ProjectKey))
+ dal.Where("_tool_bamboo_plan_build_commits.connection_id = ?
and _tool_bamboo_plan_builds.plan_key = ?", data.Options.ConnectionId,
data.Options.PlanKey))
if err != nil {
return err
}
diff --git a/backend/plugins/bamboo/tasks/project_convertor.go
b/backend/plugins/bamboo/tasks/plan_convertor.go
similarity index 64%
rename from backend/plugins/bamboo/tasks/project_convertor.go
rename to backend/plugins/bamboo/tasks/plan_convertor.go
index 36a575b85..9e5a2051b 100644
--- a/backend/plugins/bamboo/tasks/project_convertor.go
+++ b/backend/plugins/bamboo/tasks/plan_convertor.go
@@ -20,52 +20,51 @@ package tasks
import (
"reflect"
- "github.com/apache/incubator-devlake/core/models/domainlayer/devops"
-
"github.com/apache/incubator-devlake/core/dal"
"github.com/apache/incubator-devlake/core/errors"
"github.com/apache/incubator-devlake/core/models/domainlayer"
+ "github.com/apache/incubator-devlake/core/models/domainlayer/devops"
"github.com/apache/incubator-devlake/core/models/domainlayer/didgen"
"github.com/apache/incubator-devlake/core/plugin"
"github.com/apache/incubator-devlake/helpers/pluginhelper/api"
bambooModels "github.com/apache/incubator-devlake/plugins/bamboo/models"
)
-const RAW_PROJECT_TABLE = "bamboo_project"
+const RAW_PLAN_TABLE = "bamboo_plan"
-var ConvertProjectsMeta = plugin.SubTaskMeta{
- Name: "convertProjects",
- EntryPoint: ConvertProjects,
+var ConvertPlansMeta = plugin.SubTaskMeta{
+ Name: "convertplans",
+ EntryPoint: ConvertPlans,
EnabledByDefault: true,
- Description: "Convert tool layer table bamboo_projects into
domain layer table projects",
+ Description: "Convert tool layer table bamboo_plans into domain
layer table plans",
DomainTypes: []string{plugin.DOMAIN_TYPE_CICD},
}
-func ConvertProjects(taskCtx plugin.SubTaskContext) errors.Error {
+func ConvertPlans(taskCtx plugin.SubTaskContext) errors.Error {
db := taskCtx.GetDal()
- rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx,
RAW_PROJECT_TABLE)
- cursor, err := db.Cursor(dal.From(bambooModels.BambooProject{}),
- dal.Where("connection_id = ? and project_key = ?",
data.Options.ConnectionId, data.Options.ProjectKey))
+ rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx,
RAW_PLAN_TABLE)
+ cursor, err := db.Cursor(dal.From(bambooModels.BambooPlan{}),
+ dal.Where("connection_id = ? and plan_key = ?",
data.Options.ConnectionId, data.Options.PlanKey))
if err != nil {
return err
}
defer cursor.Close()
- projectIdGen :=
didgen.NewDomainIdGenerator(&bambooModels.BambooProject{})
+ planIdGen := didgen.NewDomainIdGenerator(&bambooModels.BambooPlan{})
converter, err := api.NewDataConverter(api.DataConverterArgs{
- InputRowType:
reflect.TypeOf(bambooModels.BambooProject{}),
+ InputRowType: reflect.TypeOf(bambooModels.BambooPlan{}),
Input: cursor,
RawDataSubTaskArgs: *rawDataSubTaskArgs,
Convert: func(inputRow interface{}) ([]interface{},
errors.Error) {
- bambooProject := inputRow.(*bambooModels.BambooProject)
- domainProject := &devops.CicdScope{
- DomainEntity: domainlayer.DomainEntity{Id:
projectIdGen.Generate(data.Options.ConnectionId, bambooProject.ProjectKey)},
- Name: bambooProject.Name,
- Description: bambooProject.Description,
- Url: bambooProject.Href,
+ bambooPlan := inputRow.(*bambooModels.BambooPlan)
+ domainPlan := &devops.CicdScope{
+ DomainEntity: domainlayer.DomainEntity{Id:
planIdGen.Generate(data.Options.ConnectionId, bambooPlan.PlanKey)},
+ Name: bambooPlan.Name,
+ Description: bambooPlan.Description,
+ Url: bambooPlan.Href,
}
return []interface{}{
- domainProject,
+ domainPlan,
}, nil
},
})
diff --git a/backend/plugins/bamboo/tasks/plan_extractor.go
b/backend/plugins/bamboo/tasks/plan_extractor.go
deleted file mode 100644
index b04288378..000000000
--- a/backend/plugins/bamboo/tasks/plan_extractor.go
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package tasks
-
-import (
- "encoding/json"
-
- "github.com/apache/incubator-devlake/core/errors"
- "github.com/apache/incubator-devlake/core/plugin"
- helper "github.com/apache/incubator-devlake/helpers/pluginhelper/api"
- "github.com/apache/incubator-devlake/plugins/bamboo/models"
-)
-
-var _ plugin.SubTaskEntryPoint = ExtractPlan
-
-func ExtractPlan(taskCtx plugin.SubTaskContext) errors.Error {
- rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx,
RAW_PLAN_TABLE)
-
- extractor, err := helper.NewApiExtractor(helper.ApiExtractorArgs{
- RawDataSubTaskArgs: *rawDataSubTaskArgs,
-
- Extract: func(resData *helper.RawData) ([]interface{},
errors.Error) {
- res := &models.ApiBambooPlan{}
- err := errors.Convert(json.Unmarshal(resData.Data, res))
- if err != nil {
- return nil, err
- }
- body := res.Convert()
- body.ConnectionId = data.Options.ConnectionId
- return []interface{}{body}, nil
- },
- })
- if err != nil {
- return err
- }
-
- return extractor.Execute()
-}
-
-var ExtractPlanMeta = plugin.SubTaskMeta{
- Name: "ExtractPlan",
- EntryPoint: ExtractPlan,
- EnabledByDefault: true,
- Description: "Extract raw data into tool layer table bamboo_plan",
- DomainTypes: []string{plugin.DOMAIN_TYPE_CICD},
-}
diff --git a/backend/plugins/bamboo/tasks/shared.go
b/backend/plugins/bamboo/tasks/shared.go
index 0f3a72346..96efc1660 100644
--- a/backend/plugins/bamboo/tasks/shared.go
+++ b/backend/plugins/bamboo/tasks/shared.go
@@ -37,7 +37,7 @@ func CreateRawDataSubTaskArgs(taskCtx plugin.SubTaskContext,
rawTable string) (*
*filteredData.Options = *data.Options
var params = models.BambooApiParams{
ConnectionId: data.Options.ConnectionId,
- ProjectKey: data.Options.ProjectKey,
+ PlanKey: data.Options.PlanKey,
}
rawDataSubTaskArgs := &api.RawDataSubTaskArgs{
Ctx: taskCtx,