Import Bamboo plans / builds / distributions

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"
    }
  ]
}
1 Like