Add Deploys data to services

This sample step-by-step configuration is to expand your services data in configure8 with Deployments information, which will be pushed via API in your CI/CD pipelines.

Create the schema

Logged in with an Admin user, go to the schemas page and "+ Add Schema".

Form JSON Schema

This is where you're defining the fields of your schema. You can customize this data to your organizations needs, by changing, adding or removing fields.

We are adding number fields for Start and Stop timestamps on deployments. We will display those fields as Date/Time as you will see in the next section. You can also change for time strings or other format but need to adjust the rest of the sample accordingly.

{
  "properties": {
    "Description": {
      "type": "string"
    },
    "Status": {
      "type": "string",
      "enum": [
        "Success",
        "Failed",
        "In Progress",
        "Rollback"
      ]
    },
    "Start": {
      "type": "number"
    },
    "Stop": {
      "type": "number"
    },
    "Duration": {
      "type": "number"
    },
    "Environment": {
      "type": "string"
    },
    "Branch": {
      "type": "string"
    },
    "Author": {
      "type": "string"
    }
  }
}

Data Model JSON

This is where you define which and how the table columns will be showed in the Deploys catalog menu.

Full info on how to format columns display here.

[
  {
    "hidden": false,
    "name": "Description",
    "columnName": "Description",
    "calc": "details.Description"
  },
  {
    "hidden": false,
    "name": "Status",
    "columnName": "Status",
    "calc": "details.Status"
  },
  {
    "hidden": false,
    "name": "Start",
    "columnName": "Start",
    "calc": "details.Start",
    "format": {
      "displayValue": {
        "type": "timestamp",
        "format": "DD MMM YYYY - hh:mm:ss A"
      }
    }
  },
  {
    "hidden": false,
    "name": "Stop",
    "columnName": "Stop",
    "calc": "details.Stop",
    "format": {
      "displayValue": {
        "type": "timestamp",
        "format": "DD MMM YYYY - hh:mm:ss A"
      }
    }
  },
  {
    "hidden": false,
    "name": "Duration",
    "columnName": "Duration(s)",
    "calc": "details.Duration"
  },
  {
    "hidden": false,
    "name": "Environment",
    "columnName": "Environment",
    "calc": "details.Environment"
  },
  {
    "hidden": false,
    "name": "Branch",
    "columnName": "Branch",
    "calc": "details.Branch"
  },
  {
    "hidden": false,
    "name": "Author",
    "columnName": "Author",
    "calc": "details.Author"
  }
]

Relations

Next step is to create relations with the other schemas in 3. Relations -> + Add Relation.

After saving the schema a new menu will be shown in our catalog menu, under the link that is composed with the Schema identifier field. In this case https://app.configure8.io/dnr-deploys .

Pushing data

You can manual insert data in the menu page by + Add New Entity, or push data via configure8 public API. You can find a sample for pushing Deploys and Incidents with the relation binding here.

DORA Metrics

DORA metrics are used by DevOps teams to measure their performance and find out whether they are “low performers” to “elite performers”. DORA recommends an approach to measuring software delivery and operations using 4 metrics.

Throughput - measures the health of you development pipeline:

  • Deployment Frequency: Refers to the frequency of successful software releases to production.

  • Lead Time for Changes: Captures the time between a code change commit and its deployable state.

Stability - helps you understand your software quality:

  • Mean Time to Recovery: Measures the time between an interruption due to deployment or system failure and full recovery.

  • Change Failure Rate: Indicates how often a team’s changes or hotfixes lead to failures after the code has been deployed.

With the Deploys and Incidents schema data and right relations with Services we can enable calculation of Dora Metrics natively in configure8.

There are the following options to calculate and display this info in configure8:

Services table Dora metrics columns

You can extended your services system schema in the schemas page -> + Add Schema -> Type: service and add custom columns to your services table which will do live calculation of the metrics and display there for all services.

In the Data Model JSON field, add the following:

The below "value": {"context": "startDate"} is used to connect the calculation in the column with the Services table Date picker selector. So it will do calculations of deployments on the fly for the selected period.

[
  {
    "hidden": false,
    "name": "DORADF",
    "columnName": "DORA Deploys ",
    "calc": {
      "type": "FUNCTION",
      "aggregation": "COUNT",
      "path": "ServiceDeploys.id",
      "filter": [
        {
          "type": "compare",
          "field": "ServiceDeploys.details.Stop",
          "compare": "gte",
          "value": {
            "context": "startDate"
          }
        },
        {
          "type": "compare",
          "field": "ServiceDeploys.details.Stop",
          "compare": "lte",
          "value": {
            "context": "endDate"
          }
        }
      ]
    }
  },
  {
    "hidden": false,
    "columnName": "DORA CFR%",
    "name": "DORACFR",
    "calc": {
      "type": "MATH",
      "condition": "*",
      "values": [
        {
          "type": "MATH",
          "condition": "/",
          "values": [
            {
              "type": "FUNCTION",
              "aggregation": "COUNT",
              "path": "ServiceIncidents.id"
            },
            {
              "type": "FUNCTION",
              "aggregation": "COUNT",
              "path": "ServiceDeploys.id"
            }
          ]
        },
        {
          "type": "NUMBER",
          "value": 100
        }
      ]
    }
  },
  {
    "hidden": false,
    "columnName": "DORA LTC(s)",
    "name": "DORALTC",
    "calc": {
      "type": "FUNCTION",
      "aggregation": "AVG",
      "path": "ServiceDeploys.details.Duration"
    }
  },
  {
    "hidden": false,
    "columnName": "DORA MTTR(s)",
    "name": "DORAMTTR",
    "calc": {
      "type": "FUNCTION",
      "aggregation": "AVG",
      "path": "ServiceIncidents.details.Duration"
    }
  }
]

Scorecard checks Dora metrics

Check the samples inside our custom scorecard checks documentation here.

Widgets Dora metrics

Check the full samples here.

Last updated

Copyright © 2023 configure8, Inc. All rights reserved.