In the eazyBI version 4.4.0, we improved custom JavaScript processing, and now the import should also work for larger datasets.
Plan and Build information import
{
"application_type": "rest_api",
"application_params": {
"source_params": {
"url": "BAMBOO_HOME_URL/rest/api/latest/project?expand=projects.project.plans.plan",
"skip_ssl_verification": "0",
"pagination": "none",
"authentication_type": "basic",
"username": "admin",
"password": null,
"content_type": "json",
"json_data_path": "$.projects.project",
"custom_javascript_code": "var results = [];\n\nfunction processBuilds(doc, plan, builds) {\n _.each(builds, function(build) {\n keys = '';\n _.each(build.jiraIssues.issue, function(issue) {\n keys = keys + issue.key + ','\n });\n results.push({\n project_name: doc.name,\n project_key: doc.key,\n plan_name: plan.name,\n plan_key: plan.key,\n build_key: build.key,\n build_state: build.state,\n build_number: build.number,\n build_duration: build.buildDurationInSeconds,\n build_time: build.buildStartedTime,\n build_started: build.buildStartedTime,\n build_completed: build.buildCompletedTime,\n build_issue_keys: keys,\n finished_build_count: build.finished ? 1 : 0,\n in_progress_build_count: build.finished ? 0 : 1\n })\n });\n}\n\nfunction getResult(doc, plan, offset) {\n getDocument(\"/rest/api/latest/result/\" + plan.key + \"?expand=results.result,results.result.jiraIssues&start-index=\" + offset, \n function(res) {\n processBuilds(doc, plan, res.results.result);\n if (res.results.size == 25) {\n getResult(doc, plan, offset + 25);\n }\n }\n );\n}\n_.map(doc.plans.plan, function(plan) {\n getResult(doc, plan, 0);\n});\n\nreturn results;"
},
"columns_options": {
"default_names": false
},
"extra_options": {
"regular_import_frequency": 0,
"regular_import_at": "",
"time_zone": "Helsinki"
}
},
"source_cube_name": "Builds",
"columns": [
{
"name": "project_name",
"data_type": "string",
"dimension": "Project",
"name_column": true,
"dimension_level": "Project"
},
{
"name": "project_key",
"data_type": "string",
"dimension": "Project",
"key_column": true,
"dimension_level": "Project"
},
{
"name": "plan_name",
"data_type": "string",
"dimension": "Project",
"dimension_level": "Plan",
"name_column": true
},
{
"name": "plan_key",
"data_type": "string",
"dimension": "Project",
"dimension_level": "Plan",
"key_column": true
},
{
"name": "build_key",
"data_type": "string",
"dimension": "Build",
"key_column": true
},
{
"name": "build_state",
"data_type": "string",
"dimension": "Build status"
},
{
"name": "build_number",
"data_type": "integer",
"dimension": "Build",
"property": "Build number"
},
{
"name": "build_duration",
"data_type": "integer",
"dimension": "Measures",
"dimension_member": "Build duration"
},
{
"name": "build_time",
"data_type": "datetime",
"dimension": "Time"
},
{
"name": "build_started",
"data_type": "datetime",
"dimension": "Build",
"property": "Build start time",
"date_count_measure": "Builds started",
"date_count_dimension": "Time"
},
{
"name": "build_completed",
"data_type": "datetime",
"dimension": "Build",
"property": "Build completed time",
"date_count_measure": "Builds completed",
"date_count_dimension": "Time"
},
{
"name": "build_issue_keys",
"data_type": "string",
"dimension": "Build",
"property": "Issues"
},
{
"name": "finished_build_count",
"data_type": "integer",
"dimension": "Measures",
"dimension_member": "Finished build count"
},
{
"name": "in_progress_build_count",
"data_type": "integer",
"dimension": "Measures",
"dimension_member": "In progress build count"
}
]
}
Deployment information import
{
"application_type": "rest_api",
"application_params": {
"source_params": {
"url": "BAMBOO_HOME_URL/rest/api/latest/deploy/project/all",
"skip_ssl_verification": "0",
"pagination": "none",
"authentication_type": "basic",
"username": "admin",
"password": null,
"content_type": "json",
"custom_javascript_code": "var results = [];\n\nfunction timestampToDate(ts) {\n var d = new Date(ts);\n return d.toISOString();\n};\n\nfunction processDeployments(doc, environment, deployments) {\n _.each(deployments, function(deploy) {\n result = {\n deploy_project_name: doc.name,\n project_id: doc.id,\n environment_project_name: doc.name,\n environment_id: environment.id,\n environment_name: environment.name,\n version_project_name: doc.name,\n deploy_id: deploy.id,\n deploy_start_time: timestampToDate(deploy.startedDate),\n deploy_end_time: timestampToDate(deploy.finishedDate),\n deployment_state: deploy.deploymentState,\n lifecycle_state: deploy.lifeCycleState,\n deploy_time: timestampToDate(deploy.startedDate),\n };\n \n if (doc.planKey) {\n result.plan_key = doc.planKey.key;\n } else {\n result.plan_key = '(none)';\n }\n version = deploy.deploymentVersion;\n if (version) {\n result.version_id = version.id;\n result.version_name = version.name;\n result.version_date = timestampToDate(version.creationDate);\n result.version_creator_key = version.creatorUserName;\n result.version_creator_name = version.creatorDisplayName;\n result.version_branch = version.planBranchName;\n } else {\n result.version_name = '(none)';\n result.version_id = -1;\n }\n results.push(result)\n });\n}\n\nfunction getResult(doc, environment, offset) {\n getDocument(\"/rest/api/latest/deploy/environment/\" + environment.id + \"/results?max-results=25&start-index=\" + offset, \n function(res) {\n processDeployments(doc, environment, res.results);\n if (res.results.size == 25) {\n getResult(doc, environment, offset + 25);\n }\n }\n );\n}\n\n_.map(doc.environments, function(environment) {\n getResult(doc, environment, 0);\n});\n\nreturn results;\n"
},
"columns_options": {
"default_names": false
},
"extra_options": {
"regular_import_frequency": 0,
"regular_import_at": "",
"time_zone": "Helsinki"
}
},
"source_cube_name": "Builds",
"columns": [
{
"name": "deploy_project_name",
"data_type": "string",
"dimension": "Deploy Project",
"dimension_level": "Deploy Project"
},
{
"name": "project_id",
"data_type": "integer",
"dimension": "Deploy Project",
"id_column": true,
"dimension_level": "Deploy Project"
},
{
"name": "environment_project_name",
"data_type": "string",
"dimension": "Environment",
"dimension_level": "Deploy Project",
"name_column": true
},
{
"name": "environment_id",
"data_type": "integer",
"dimension": "Environment",
"id_column": true,
"dimension_level": "Environment"
},
{
"name": "environment_name",
"data_type": "string",
"dimension": "Environment",
"dimension_level": "Environment",
"name_column": true
},
{
"name": "version_project_name",
"data_type": "string",
"dimension": "Version",
"dimension_level": "Deploy Project",
"name_column": true
},
{
"name": "deploy_id",
"data_type": "integer",
"dimension": "Deployment",
"key_column": true
},
{
"name": "deploy_start_time",
"data_type": "datetime",
"dimension": "Deployment",
"property": "Start time",
"date_count_measure": "Deployments started",
"date_count_dimension": "Time"
},
{
"name": "deploy_end_time",
"data_type": "datetime",
"dimension": "Deployment",
"property": "End time",
"date_count_measure": "Deployments ended",
"date_count_dimension": "Time"
},
{
"name": "deployment_state",
"data_type": "string",
"dimension": "Deployment Status"
},
{
"name": "lifecycle_state",
"data_type": "string",
"dimension": "Lifecycle State"
},
{
"name": "deploy_time",
"data_type": "datetime",
"dimension": "Time"
},
{
"name": "plan_key",
"data_type": "string",
"dimension": "Project",
"dimension_level": "Plan",
"key_column": true
},
{
"name": "version_id",
"data_type": "integer",
"dimension": "Version",
"id_column": true,
"dimension_level": "Version"
},
{
"name": "version_name",
"data_type": "string",
"dimension": "Version",
"dimension_level": "Version",
"name_column": true
},
{
"name": "version_date",
"data_type": "datetime",
"dimension": "Version",
"dimension_level": "Version",
"property": "Creation date"
},
{
"name": "version_creator_key",
"data_type": "string",
"dimension": "Version Creator",
"dimension_level": "Creator",
"key_column": true
},
{
"name": "version_creator_name",
"data_type": "string",
"dimension": "Version Creator",
"dimension_level": "Creator",
"name_column": true
},
{
"name": "version_branch",
"data_type": "string",
"dimension": "Branch"
}
]
}