diff --git a/github_pipeline_observability/.gitignore b/github_pipeline_observability/.gitignore new file mode 100644 index 0000000..711531a --- /dev/null +++ b/github_pipeline_observability/.gitignore @@ -0,0 +1,3 @@ +environment_variables.txt +manifest_local.yaml +manifest_khd45734.yaml \ No newline at end of file diff --git a/github_pipeline_observability/README.md b/github_pipeline_observability/README.md new file mode 100644 index 0000000..9157630 --- /dev/null +++ b/github_pipeline_observability/README.md @@ -0,0 +1,179 @@ +# Observe your GitHub Pull Requests and Workflows with Dashboards and normalized SDLC events through OpenPipeline + +Enable Platform Engineering teams to grasp and analyze the efficiency of GitHub workflows and processes bound to GitHub pull requests to drive improvements and optimize the Internal Development Platform (IDP). By better understanding the integration of GitHub into your development routines or delivery processes, you can set actions in the following directions: + +* *Streamlining CI/CD Pipelines*: Observing workflow executions allows you to identify bottlenecks and inefficiencies in your CI/CD pipelines. This helps in optimizing build and deployment processes, leading to faster and more reliable releases. + +* *Improving Developer Productivity*: Automated workflows reduce the manual effort required for repetitive tasks, such as running tests and checking coding standards. This allows developers to focus more on writing code and less on administrative tasks. + +* *Data-Driven Insights*: Analyzing telemetry data from pull requests and workflows provides valuable insights into the development process. This data can be used to make informed decisions and continuously improve the development flows. + +## Target audience + +This article is intended for Platform Engineers managing the internal Development Platform (IDP), including GitHub for an entire organization. + +While GitHub provides you *Insights* into [Actions Usage/Performance Metrics](https://docs.github.com/en/actions/administering-github-actions/viewing-github-actions-metrics) for workflow executions on the organization and repository level, the presented data can't be adjusted according to your development processes. Consequently, you would miss functionality to derive tailored insights specific to your internal development platform and directly relevant to your team's development environment. + +In this tutorial, you will learn how to forward GitHub webhook events to Dynatrace, normalize the ingested event data, and use ready-made dashboards to analyze the data and derive improvements. + +> **Security Disclaimer**: This tutorial involves the use of a Dynatrace access token in GitHub webhook configuration, which could be misused if accessed by unauthorized individuals. To mitigate this risk, please adhere to the following security best practices: +> * **Minimal Permissions**: Assign the least set of permissions necessary for the access token, as outlined in this tutorial. +> * **Access Control**: Limit the ability to configure webhooks in GitHub to a small group of authorized personnel. +> * **Token Security**: Never commit the access token to a Git repository. + +## Prerequisites + +1. [Install Dynatrace Configuration as Code via Monaco](https://docs.dynatrace.com/docs/deliver/configuration-as-code/monaco/installation) + +2. [Create an OAuth client](https://docs.dynatrace.com/docs/deliver/configuration-as-code/monaco/guides/create-oauth-client) with the following permissions. + * Run apps: `app-engine:apps:run` + * View OpenPipeline configurations: `openpipeline:configurations:read` + * Edit OpenPipeline configurations: `openpipeline:configurations:write` + * Create and edit documents: `document:documents:write` + * View documents: `document:documents:read` + +3. Store the retrieved client ID, secret, and token endpoint as an environment variable. + +``` +$env:OAUTH_CLIENT_ID='' +$env:OAUTH_CLIENT_SECRET='' +$env:OAUTH_TOKEN_ENDPOINT='https://sso.dynatrace.com/sso/oauth2/token' +``` + +``` +export OAUTH_CLIENT_ID='' +export OAUTH_CLIENT_SECRET='' +export OAUTH_TOKEN_ENDPOINT='https://sso.dynatrace.com/sso/oauth2/token' +``` + +4. Clone the [Dynatrace configuration as code sample](https://github.com/Dynatrace/dynatrace-configuration-as-code-samples) repository and go to `github_pipeline_observability`. +``` +git clone https://github.com/Dynatrace/dynatrace-configuration-as-code-samples.git +cd github_pipeline_observability +``` + +5. Edit the `manifest.yaml` by exchanging the `` placeholder with your Dynatrace environment ID. +``` +manifestVersion: 1.0 +projects: + - name: pipeline_observability +environmentGroups: + - name: group + environments: + - name: + url: + type: value + value: https://.apps.dynatrace.com + auth: + oAuth: + clientId: + name: OAUTH_CLIENT_ID + clientSecret: + name: OAUTH_CLIENT_SECRET + tokenEndpoint: + type: environment + value: OAUTH_TOKEN_ENDPOINT +``` + +## Steps + +### 1. Configure Dynatrace using Monaco + +In this section, you will upload two Dashboards and configure the ingest endpoint for GitHub Webhooks in Dynatrace. Before you continue, please check your OpenPipeline configuration for *Software development lifecycle events*. + +1. In Dynatrace, navigate to **OpenPipeline**. +2. Expand **Events** and click **Software development lifecycle**. +3. Open **Ingest source** and check if another ingest source exists except the built-in *Endpoint for Software Development*. +4. Open **Dynamic routing** and check if another route exists excpet the *Default route*. +5. Open **Pipelines** and check if another pipeline exists except the built-in *events.sdlc*. +6. If you have the default and built-in configuration, you can run Monaco to deploy the provided configuration; otherwise, you must merge the configuration file before updating it. + +#### Run Monaco deploy + +Run the following command to apply the provided configuration. + +``` +monaco deploy manifest.yaml +``` + +#### Merge configuration before running Monaco deploy + +1. Download your OpenPipeline configuration. +``` +monaco download +``` + +2. Merge the content of `download__\project\openpipline\events.sdlc.json` into the file `events.sdlc.github.json`. + +3. Run the following command to apply the provided configuration. +``` +monaco deploy manifest.yaml +``` + +### 2. Configure GitHub to send Webhook events to Dynatrace + +#### Create Dynatrace Access Token + +An access token with *openpipeline scopes* is needed for Dynatrace to receive GitHub webhook events processed by OpenPipeline. + +1. In Dynatrace, navigate to **Access Tokens**. +2. Click **Generate new token**. +3. Provide a descriptive name for your token. +4. Select the following scopes: + - `openpipeline.events_sdlc.custom` + - `openpipeline.events_sdlc` +5. Click **Generate token** +6. Save the generated token securely for subsequent steps. It will be referred as ``. +​ +#### Configure GitHub Webhook + +You can configure webhooks at either the organization level (affecting all repositories) or the repository level. + +1. In GitHub, select your organization or repository. +2. Go to **Settings** > **Webhooks**. +3. Click **Add webhook**. +4. Configure the following settings: + - **Payload URL**: Please exchange the placeholders `` and `` with your Dynatrace environment ID and access token, respectively. + ``` + https://.live.dynatrace.com/platform/ingest/custom/events.sdlc/github?api-token= + ``` + - **Content Type**: `application/json` + - **Which events would you like to trigger this webhook?**: Select *Let me select individual events* and enable: + - Pull requests + - Workflow runs + - Workflow jobs + - (disable "Pushes") +5. Select **Active** to receive event details when the hook is triggered. +6. Click **Add webhook** to save the webhook. + +### 3. Work with GitHub and observe organization-wide activities in Dashboards + +1. In GitHub, let your developers create pull requests and execute workflows. Each interaction will be sent to Dynatrace. +2. In Dynatrace, navigate to **Dashboards**. +3. Open the **GitHub Pull Request** Dashboard to observe real-time activities of pull requests in your organization or seleced repositories. +4. Open the **GitHub Workflow** Dashboard to observe and analyze workflow execution details, job insights, and step durations for all GitHub workflows in your organization or selected repositories. + +## Call to action + +We highly value your insights on GitHub pipeline observability. Your feedback is crucial in helping us enhance our tools and services. Please visit the Dynatrace Community page to share your experiences, suggestions, and ideas. Your contributions are instrumental in shaping the future of our platform. Join the discussion today and make a difference! + +## Further reading + +**Pipeline Observability** +* [Observability throughout the software development lifecycle increases delivery performance](https://www.dynatrace.com/news/blog/observability-throughout-the-software-development-lifecycle/) (blog post) +* [Concepts](https://docs.dynatrace.com/docs/deliver/pipeline-observability-sdlc-events/pipeline-observability-concepts) (docs) + +**Software Development Lifecycle Events** +* [Ingest SDLC events](https://docs.dynatrace.com/docs/deliver/pipeline-observability-sdlc-events/sdlc-events) (docs) +* [SDLC event specification]() (docs) + +## FAQ + +* What are Software Development Lifecycle (SDLC) events? + * SDLC events are events with a separate event kind in Dynatrace that follow a well-defined semantic for capturing data points from a software component's software development lifecycle. The [SDLC event specification]() defines the semantics of those events and will be extended based on the covered use cases. + +* Why have GitHub webhook events been changed into SDLC events? + * The main benefit is data normalization and the ability to become tool agnostic. As a result, Dynatrace Dashboards, Apps, and Automation can build on SDLC events with well-defined properties rather than tool-specific details. + +* Why going with GitHub webhooks instead of REST API? + * Using webhooks has the following advantages over using the API: (1) Webhooks require less effort and less resources than polling an API. (2) Webhooks scale better than API calls. (3) Webhooks allow near real-time updates, since webhooks are triggered when an event happens. See [Choosing webhooks or the REST API](https://docs.github.com/en/webhooks/about-webhooks#choosing-webhooks-or-the-rest-api) for more details. \ No newline at end of file diff --git a/github_pipeline_observability/manifest.yaml b/github_pipeline_observability/manifest.yaml new file mode 100644 index 0000000..b811a71 --- /dev/null +++ b/github_pipeline_observability/manifest.yaml @@ -0,0 +1,20 @@ +manifestVersion: 1.0 +projects: + - name: pipeline_observability +environmentGroups: + - name: group + environments: + - name: + url: + type: value + value: https://.apps.dynatrace.com + auth: + oAuth: + clientId: + name: OAUTH_CLIENT_ID + clientSecret: + name: OAUTH_CLIENT_SECRET + tokenEndpoint: + type: environment + value: OAUTH_TOKEN_ENDPOINT + \ No newline at end of file diff --git a/github_pipeline_observability/pipeline_observability/document-dashboard/config.yaml b/github_pipeline_observability/pipeline_observability/document-dashboard/config.yaml new file mode 100644 index 0000000..f8b8909 --- /dev/null +++ b/github_pipeline_observability/pipeline_observability/document-dashboard/config.yaml @@ -0,0 +1,26 @@ +configs: +- id: 0a635714-5545-4413-95e1-023333e8edac + config: + name: GitHub Workflow v.0.3.0 + parameters: + extractedIDs: + type: value + value: + id_3420b2ac_f1cf_4b24_b62d_61ba1ba8ed05: 3420b2ac-f1cf-4b24-b62d-61ba1ba8ed05 + template: github.workflow.json + skip: false + originObjectId: 0a635714-5545-4413-95e1-023333e8edac + type: + document: + kind: dashboard + private: true +- id: f9847607-0c63-4f8a-99bd-92e7cf7d86db + config: + name: GitHub Pull Request v.0.3.0 + template: github.pull_request.json + skip: false + originObjectId: f9847607-0c63-4f8a-99bd-92e7cf7d86db + type: + document: + kind: dashboard + private: true \ No newline at end of file diff --git a/github_pipeline_observability/pipeline_observability/document-dashboard/github.pull_request.json b/github_pipeline_observability/pipeline_observability/document-dashboard/github.pull_request.json new file mode 100644 index 0000000..73485d8 --- /dev/null +++ b/github_pipeline_observability/pipeline_observability/document-dashboard/github.pull_request.json @@ -0,0 +1,1452 @@ +{ + "importedWithCode": false, + "layouts": { + "0": { + "h": 3, + "w": 4, + "x": 0, + "y": 4 + }, + "1": { + "h": 3, + "w": 4, + "x": 4, + "y": 4 + }, + "10": { + "h": 3, + "w": 4, + "x": 0, + "y": 7 + }, + "11": { + "h": 2, + "w": 24, + "x": 0, + "y": 0 + }, + "12": { + "h": 2, + "w": 24, + "x": 0, + "y": 15 + }, + "13": { + "h": 2, + "w": 24, + "x": 0, + "y": 2 + }, + "15": { + "h": 6, + "w": 24, + "x": 0, + "y": 29 + }, + "16": { + "h": 1, + "w": 24, + "x": 0, + "y": 28 + }, + "17": { + "h": 6, + "w": 8, + "x": 16, + "y": 17 + }, + "18": { + "h": 6, + "w": 8, + "x": 16, + "y": 4 + }, + "19": { + "h": 3, + "w": 4, + "x": 4, + "y": 7 + }, + "2": { + "h": 5, + "w": 24, + "x": 0, + "y": 10 + }, + "3": { + "h": 3, + "w": 4, + "x": 0, + "y": 17 + }, + "4": { + "h": 3, + "w": 4, + "x": 4, + "y": 20 + }, + "5": { + "h": 3, + "w": 4, + "x": 4, + "y": 17 + }, + "6": { + "h": 5, + "w": 24, + "x": 0, + "y": 23 + }, + "7": { + "h": 6, + "w": 8, + "x": 8, + "y": 4 + }, + "8": { + "h": 6, + "w": 8, + "x": 8, + "y": 17 + } + }, + "settings": {}, + "tiles": { + "0": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"task\" \n| filter event.type == \"change\" \n| filter event.provider == \"github.com\"\n| sort timestamp desc\n| summarize { statuses = collectArray(event.status) }, by: { task.id, task.name, start_time, number, vcs.repository.name, vcs.ref.base.name, vcs.ref.base.revision, vcs.ref.head.name, vcs.ref.head.revision, ext.vcs.change.pull_request.url } \n| filter not in(statuses[0],array(\"merged\",\"closed\")) \n| filter in(vcs.repository.name, $Repository) \n| filter in(vcs.ref.base.name, $Branch)\n| summarize count()", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "title": "Open PRs", + "type": "data", + "visualization": "singleValue", + "visualizationSettings": { + "autoSelectVisualization": false, + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "count()" + ], + "categoryAxisLabel": "count()", + "tooltipVariant": "single", + "valueAxis": [ + "count()" + ], + "valueAxisLabel": "count()" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "relative" + }, + "curve": "linear", + "gapPolicy": "connect", + "legend": { + "hidden": true + }, + "pointsDisplay": "auto", + "truncationMode": "middle", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "dimension": "count()", + "displayedFields": [], + "longitude": "count()", + "value": "count()" + }, + "histogram": { + "dataMappings": [ + { + "rangeAxis": "", + "valueAxis": "count()" + } + ], + "displayedFields": [], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": {}, + "displayedFields": [], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "count()", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "label": "Open PRs", + "prefixIcon": "", + "recordField": "count()", + "showLabel": false, + "trend": { + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [], + "tooltip": { + "showCustomFields": false + }, + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "1": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"task\" \n| filter event.type == \"change\" \n| filter event.provider == \"github.com\"\n| filter in(vcs.repository.name, $Repository) \n| filter in(vcs.ref.base.name, $Branch)\n| sort timestamp desc\n| summarize { statuses = collectArray(event.status) }, by: { task.id, task.name, start_time,number, vcs.ref.base.name, vcs.ref.base.revision, vcs.ref.head.name, vcs.ref.head.revision, ext.vcs.change.pull_request.url } \n| filter not in(statuses[0],array(\"merged\",\"closed\")) \n| fieldsAdd OpenedPrDuration = toTimestamp(now()) - toTimestamp(start_time) \n| summarize max(OpenedPrDuration)", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "title": "Oldest Open PR", + "type": "data", + "visualization": "singleValue", + "visualizationSettings": { + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "max(OpenedPrDuration)" + ], + "categoryAxisLabel": "max(OpenedPrDuration)", + "tooltipVariant": "single", + "valueAxis": [ + "max(OpenedPrDuration)" + ], + "valueAxisLabel": "max(OpenedPrDuration)" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "relative" + }, + "curve": "linear", + "gapPolicy": "connect", + "legend": { + "hidden": true + }, + "pointsDisplay": "auto", + "truncationMode": "middle", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "displayedFields": [ + "count()" + ], + "longitude": "max(OpenedPrDuration)", + "value": "count()" + }, + "histogram": { + "dataMappings": [ + { + "rangeAxis": "", + "valueAxis": "max(OpenedPrDuration)" + } + ], + "displayedFields": [], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": {}, + "displayedFields": [], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "count()", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "isIconVisible": false, + "label": "max(OpenedPrDuration)", + "prefixIcon": "", + "recordField": "max(OpenedPrDuration)", + "showLabel": false, + "sparklineSettings": { + "isVisible": true + }, + "trend": { + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [], + "tooltip": { + "showCustomFields": false + }, + "unitsOverrides": [ + { + "added": 1727701272906, + "baseUnit": "nanosecond", + "decimals": 1, + "delimiter": true, + "displayUnit": null, + "identifier": "max(OpenedPrDuration)", + "suffix": "", + "unitCategory": "time" + } + ], + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "10": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"task\" \n| filter event.type == \"change\" \n| filter event.provider == \"github.com\"\n| sort timestamp desc\n| summarize { statuses = collectArray(event.status), actions = collectArray(vcs.change.state) }, by: { task.id, task.name, start_time,number, vcs.repository.name, vcs.ref.base.name, vcs.ref.base.revision, vcs.ref.head.name, vcs.ref.head.revision, ext.vcs.change.pull_request.url } \n| filter not in(statuses[0],array(\"merged\", \"closed\")) \n| filter contains(toString(actions),\"reopened\")\n| filter in(vcs.repository.name, $Repository) \n| filter in(vcs.ref.base.name, $Branch)\n| summarize count()", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "title": "Re-opened PRs", + "type": "data", + "visualization": "singleValue", + "visualizationSettings": { + "autoSelectVisualization": false, + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "count()" + ], + "categoryAxisLabel": "count()", + "tooltipVariant": "single", + "valueAxis": [ + "count()" + ], + "valueAxisLabel": "count()" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "relative" + }, + "curve": "linear", + "gapPolicy": "connect", + "hiddenLegendFields": [ + "task" + ], + "legend": { + "hidden": true + }, + "pointsDisplay": "auto", + "truncationMode": "middle", + "valueRepresentation": "absolute", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "dimension": "count()", + "displayedFields": [], + "longitude": "count()", + "value": "count()" + }, + "histogram": { + "dataMappings": [ + { + "rangeAxis": "", + "valueAxis": "count()" + } + ], + "displayedFields": [], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": {}, + "displayedFields": [], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "count()", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "label": "Open PRs", + "prefixIcon": "", + "recordField": "count()", + "showLabel": false, + "trend": { + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": { + "[\"statuses\"]": 259.734375 + }, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [], + "tooltip": { + "showCustomFields": false + }, + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "11": { + "content": "### GitHub Pull Request Pulse: Open \u0026 Merged Insights\nThis dashboard provides a comprehensive overview of the status of pull requests (PRs) in your GitHub repositories. Track open and merged PRs in real-time, analyze trends, and gain insights into your team's development workflow. [Data ingest](https://dt-rnd.atlassian.net/wiki/x/WwLNLg) ", + "title": "", + "type": "markdown" + }, + "12": { + "content": "### Merged Pull Requests\n\nThis section provides a clear and detailed view of the merged pull requests, helping you to understand the efficiency and effectiveness of your code integration process.\n\n-----", + "title": "", + "type": "markdown" + }, + "13": { + "content": "### Open Pull Requests\n\nThis section provides a clear and detailed view of the current state of open pull requests, enabling you to manage and prioritize them effectively. \n\n-----", + "title": "", + "type": "markdown" + }, + "15": { + "content": "#### Additional resources\n**Pipeline Observability**\n* [Observability throughout the software development lifecycle increases delivery performance](https://www.dynatrace.com/news/blog/observability-throughout-the-software-development-lifecycle/) (blog post)\n* [Concepts](https://docs.dynatrace.com/docs/deliver/pipeline-observability-sdlc-events/pipeline-observability-concepts) (docs)\n\n**Software Development Lifecycle Events**\n* [Ingest SDLC events](https://docs.dynatrace.com/docs/deliver/pipeline-observability-sdlc-events/sdlc-events) (docs)\n* [SDLC event specification]() (docs)\n#\n---\n\n#### About this dashboard\n\nRelease v0.3.0, [Origin](https://github.com/Dynatrace/dynatrace-configuration-as-code-samples)", + "title": "", + "type": "markdown" + }, + "16": { + "content": " ", + "title": "", + "type": "markdown" + }, + "17": { + "content": "Merged PRs by Author", + "title": "", + "type": "markdown" + }, + "18": { + "content": "Open PRs by Author", + "title": "", + "type": "markdown" + }, + "19": { + "content": "Average Time Open", + "title": "", + "type": "markdown" + }, + "2": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"task\" \n| filter event.type == \"change\" \n| filter event.provider == \"github.com\"\n| filter in(vcs.repository.name, $Repository) \n| filter in(vcs.ref.base.name, $Branch)\n| sort timestamp desc\n| summarize { statuses = collectArray(event.status) }, by: { task.id, task.name, start_time, ext.vcs.change.pull_request.number, vcs.ref.base.name, vcs.ref.base.revision, vcs.ref.head.name, vcs.ref.head.revision, ext.vcs.change.pull_request.url, vcs.change.id } \n| filter not in(statuses[0],array(\"merged\",\"closed\")) \n| fields \nIn_open_status = toTimestamp(now()) - toTimestamp(start_time),\nPR = ext.vcs.change.pull_request.number, \nTitle = task.name,\nURL = ext.vcs.change.pull_request.url,\nHeadName = vcs.ref.head.name, \nHeadRevision = vcs.ref.head.revision, \nBaseName = vcs.ref.base.name, \nBaseRevision = vcs.ref.base.revision,\nCreatedAt = start_time, \nGlobalId = vcs.change.id \n| sort In_open_status desc", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "title": "Open PRs Details", + "type": "data", + "visualization": "table", + "visualizationSettings": { + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxisLabel": "PR_title,Source_repo,Source_ref,Target_repo,Target_ref", + "tooltipVariant": "single", + "valueAxisLabel": "In_open_status,GlobalId" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "relative" + }, + "curve": "linear", + "gapPolicy": "connect", + "hiddenLegendFields": [ + "In_open_status", + "PR_number", + "GlobalId" + ], + "leftYAxisSettings": {}, + "pointsDisplay": "auto", + "truncationMode": "middle", + "valueRepresentation": "absolute", + "xAxisIsLabelVisible": false, + "xAxisLabel": "Created_at", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "displayedFields": [], + "value": "PR_number" + }, + "histogram": { + "dataMappings": [], + "displayedFields": [], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": {}, + "displayedFields": [], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "PR_number", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "label": "max(Duration)", + "prefixIcon": "", + "recordField": "max(Duration)", + "showLabel": false, + "sparklineSettings": { + "isVisible": true + }, + "trend": { + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "colorThresholdTarget": "value", + "columnTypeOverrides": [ + { + "fields": [], + "id": 36911602, + "value": "date" + } + ], + "columnWidths": { + "[\"OpenFrom\"]": 138, + "[\"PR_number\"]": 146.4600830078125, + "[\"PR_title\"]": 404.0850830078125, + "[\"PR_url\"]": 423.39935302734375, + "[\"SourceRepository\"]": 233.796875, + "[\"Source_ref\"]": 279.58856201171875, + "[\"Source_repo\"]": 266.47222900390625, + "[\"Target_repo\"]": 244.47222900390625 + }, + "enableSparklines": false, + "enableThresholdInRow": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": true, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "default" + }, + "thresholds": [], + "tooltip": { + "showCustomFields": false + }, + "unitsOverrides": [ + { + "added": 1727701272906, + "baseUnit": "nanosecond", + "decimals": 2, + "delimiter": true, + "displayUnit": null, + "identifier": "max(Duration)", + "suffix": "", + "unitCategory": "time" + } + ], + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "3": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"task\" \n| filter event.type == \"change\" \n| filter event.status == \"merged\" \n| filter event.provider == \"github.com\"\n| filter in(vcs.repository.name, $Repository) \n| filter in(vcs.ref.base.name, $Branch)\n| dedup task.id\n| summarize count()", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "title": "Merged PRs", + "type": "data", + "visualization": "singleValue", + "visualizationSettings": { + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "count()" + ], + "categoryAxisLabel": "count()", + "tooltipVariant": "single", + "valueAxis": [ + "count()" + ], + "valueAxisLabel": "count()" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "relative" + }, + "curve": "linear", + "gapPolicy": "connect", + "legend": { + "hidden": true + }, + "pointsDisplay": "auto", + "truncationMode": "middle", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "dimension": "count()", + "displayedFields": [ + "Count", + "Median", + "Avg" + ], + "longitude": "count()", + "value": "Count" + }, + "histogram": { + "dataMappings": [ + { + "rangeAxis": "", + "valueAxis": "count()" + } + ], + "displayedFields": [], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": {}, + "displayedFields": [], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "Count", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "label": "Merged PRs", + "prefixIcon": "", + "recordField": "count()", + "showLabel": false, + "sparklineSettings": {}, + "trend": { + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [], + "tooltip": { + "showCustomFields": false + }, + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "4": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"task\" \n| filter event.type == \"change\" \n| filter event.status == \"merged\" \n| filter event.provider == \"github.com\"\n| filter in(vcs.ref.base.name, $Repository) \n| filter in(vcs.ref.base.revision, $Branch)\n| dedup task.id\n| summarize percentile(duration, 50)", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "title": "Merge Time (p50)", + "type": "data", + "visualization": "singleValue", + "visualizationSettings": { + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "percentile(duration, 50)" + ], + "categoryAxisLabel": "percentile(duration, 50)", + "tooltipVariant": "single", + "valueAxis": [ + "percentile(duration, 50)" + ], + "valueAxisLabel": "percentile(duration, 50)" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "relative" + }, + "curve": "linear", + "gapPolicy": "connect", + "legend": { + "hidden": true + }, + "pointsDisplay": "auto", + "truncationMode": "middle", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "displayedFields": [ + "Count", + "Median", + "Avg" + ], + "value": "Count" + }, + "histogram": { + "dataMappings": [], + "displayedFields": [], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": {}, + "displayedFields": [], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "Count", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "label": "Median", + "prefixIcon": "", + "recordField": "percentile(duration, 50)", + "showLabel": false, + "sparklineSettings": {}, + "trend": { + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [], + "tooltip": { + "showCustomFields": false + }, + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "5": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "description": "Shows the average time taken to merge pull requests, providing insights into the efficiency of the review and merge process.", + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"task\" \n| filter event.type == \"change\" \n| filter event.status == \"merged\" \n| filter event.provider == \"github.com\"\n| filter in(vcs.repository.name, $Repository) \n| filter in(vcs.ref.base.name, $Branch)\n| dedup task.id\n| summarize avg(duration)", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "title": "Average Merge Time", + "type": "data", + "visualization": "singleValue", + "visualizationSettings": { + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "avg(duration)" + ], + "categoryAxisLabel": "avg(duration)", + "tooltipVariant": "single", + "valueAxis": [ + "avg(duration)" + ], + "valueAxisLabel": "avg(duration)" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "relative" + }, + "curve": "linear", + "gapPolicy": "connect", + "legend": { + "hidden": true + }, + "pointsDisplay": "auto", + "truncationMode": "middle", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "dimension": "avg(duration)", + "displayedFields": [ + "Count", + "Median", + "Avg" + ], + "longitude": "avg(duration)", + "value": "Count" + }, + "histogram": { + "dataMappings": [ + { + "rangeAxis": "", + "valueAxis": "avg(duration)" + } + ], + "displayedFields": [], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": {}, + "displayedFields": [], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "Count", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "label": "Avg", + "prefixIcon": "", + "recordField": "avg(duration)", + "showLabel": false, + "sparklineSettings": {}, + "trend": { + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [], + "tooltip": { + "showCustomFields": false + }, + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "6": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"task\" \n| filter event.type == \"change\" \n| filter event.status == \"merged\" \n| filter event.provider ==\"github.com\" \n| sort timestamp asc\n| filter in(vcs.repository.name, $Repository) \n| filter in(vcs.ref.base.name, $Branch)\n| dedup task.id\n| fields \nMergedAt = end_time,\nDuration = duration, \nPR = ext.vcs.change.pull_request.number, \nTitle = task.name,\nURL = ext.vcs.change.pull_request.url,\nHeadName = vcs.ref.head.name, \nHeadRevision = vcs.ref.head.revision, \nBaseName = vcs.ref.base.name, \nBaseRevision = vcs.ref.base.revision, \nCreatedAt = start_time, \nGlobalId = vcs.change.id \n| sort Duration desc", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "title": "Merged PRs Details", + "type": "data", + "visualization": "table", + "visualizationSettings": { + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "Title", + "HeadName", + "HeadRevision", + "BaseName", + "BaseRevision", + "URL" + ], + "categoryAxisLabel": "Title,HeadName,HeadRevision,BaseName,BaseRevision,URL", + "tooltipVariant": "single", + "valueAxis": [ + "Duration", + "GlobalId", + "PR" + ], + "valueAxisLabel": "Duration,GlobalId,PR" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "relative" + }, + "curve": "linear", + "fieldMapping": { + "leftAxisValues": [ + "Duration" + ], + "timestamp": "MergedAt" + }, + "gapPolicy": "connect", + "hiddenLegendFields": [ + "Duration", + "Number", + "GlobalId", + "PR" + ], + "leftYAxisSettings": {}, + "pointsDisplay": "auto", + "truncationMode": "middle", + "valueRepresentation": "absolute", + "xAxisIsLabelVisible": false, + "xAxisLabel": "MergedAt", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "dimension": "MergedAt", + "displayedFields": [ + "Duration", + "Number", + "Title", + "Url", + "SourceRepository", + "SourceRef", + "TargetRepository", + "TargetRef", + "CreatedAt", + "MergetAt", + "GlobalId" + ], + "latitude": "GlobalId", + "longitude": "Duration", + "value": "Number" + }, + "histogram": { + "dataMappings": [ + { + "rangeAxis": "", + "valueAxis": "Duration" + }, + { + "rangeAxis": "", + "valueAxis": "GlobalId" + }, + { + "rangeAxis": "", + "valueAxis": "PR" + } + ], + "displayedFields": [ + "Title" + ], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": { + "value": "Duration" + }, + "displayedFields": [ + "Title", + "HeadName", + "HeadRevision", + "BaseName", + "BaseRevision", + "URL" + ], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "Number", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "label": "Median duration ( from open to merge )", + "prefixIcon": "", + "recordField": "Avg", + "showLabel": true, + "trend": { + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "default", + "sortBy": { + "columnId": "[\"duration\"]", + "direction": "descending" + } + }, + "thresholds": [], + "tooltip": { + "showCustomFields": false + }, + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "7": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"task\" \n| filter event.type == \"change\" \n| filter event.provider == \"github.com\"\n| filter in(vcs.repository.name, $Repository) \n| filter in(vcs.ref.base.name, $Branch)\n| sort timestamp desc\n| summarize { statuses = collectArray(event.status) }, by:{ task.id, task.name, start_time, number, vcs.ref.base.name, vcs.ref.base.revision, vcs.ref.head.name, vcs.ref.head.revision, ext.vcs.change.pull_request.url } \n| filter not in(statuses[0],array(\"merged\", \"closed\")) \n| summarize count(), by:{vcs.ref.base.name}", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "title": " Open PRs by Repository", + "type": "data", + "visualization": "pieChart", + "visualizationSettings": { + "autoSelectVisualization": false, + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "vcs.ref.base.name" + ], + "categoryAxisLabel": "vcs.ref.base.name", + "tooltipVariant": "single", + "valueAxis": [ + "count()" + ], + "valueAxisLabel": "count()" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "absolute" + }, + "colorPalette": "swamps", + "curve": "linear", + "gapPolicy": "connect", + "legend": { + "hidden": true + }, + "pointsDisplay": "auto", + "truncationMode": "middle", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "displayedFields": [], + "value": "count()" + }, + "histogram": { + "dataMappings": [], + "displayedFields": [], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue-moss", + "dataMappings": { + "value": "count()" + }, + "displayedFields": [ + "vcs.ref.base.name" + ], + "legend": { + "hidden": false, + "position": "auto" + }, + "max": null, + "min": null, + "shape": "circle" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "count()", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "label": "Open PRs", + "prefixIcon": "", + "recordField": "count()", + "showLabel": true, + "trend": { + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [], + "tooltip": { + "showCustomFields": false + }, + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "8": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"task\" \n| filter event.type == \"change\" \n| filter event.status == \"merged\" \n| filter event.provider == \"github.com\"\n| filter in(vcs.repository.name, $Repository) \n| filter in(vcs.ref.base.name, $Branch)\n| dedup task.id\n| sort timestamp asc\n| dedup task.id\n| summarize count = count(), by:{vcs.repository.name}", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "title": "Merged PRs by Repository", + "type": "data", + "visualization": "pieChart", + "visualizationSettings": { + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "vcs.repository.name" + ], + "categoryAxisLabel": "vcs.repository.name", + "tooltipVariant": "single", + "valueAxis": [ + "count" + ], + "valueAxisLabel": "count" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "absolute" + }, + "colorPalette": "blue-steel", + "curve": "linear", + "gapPolicy": "connect", + "legend": { + "hidden": true + }, + "pointsDisplay": "auto", + "truncationMode": "middle", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "dimension": "vcs.repository.name", + "displayedFields": [ + "vcs.repository.name", + "Count" + ], + "longitude": "count", + "value": "Count" + }, + "histogram": { + "dataMappings": [ + { + "rangeAxis": "", + "valueAxis": "count" + } + ], + "displayedFields": [ + "vcs.repository.name" + ], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": { + "value": "count" + }, + "displayedFields": [ + "vcs.repository.name" + ], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "Count", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "label": "Avg", + "prefixIcon": "", + "recordField": "Avg", + "showLabel": false, + "trend": { + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [], + "tooltip": { + "showCustomFields": false + }, + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + } + }, + "variables": [ + { + "input": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"task\" \n| filter event.type == \"change\" \n| filter event.provider == \"github.com\" \n| summarize distinctRepositories = collectDistinct(vcs.repository.name)\n| expand distinctRepositories\n| sort distinctRepositories", + "key": "Repository", + "multiple": false, + "type": "query", + "visible": true + }, + { + "defaultValue": [ + "main" + ], + "input": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"task\" \n| filter event.type == \"change\" \n| filter event.provider == \"github.com\"\n| summarize distinctBase = collectDistinct(vcs.ref.base.name)\n| expand distinctBase\n| sort distinctBase", + "key": "Branch", + "multiple": true, + "type": "query", + "visible": true + } + ], + "version": 17 +} \ No newline at end of file diff --git a/github_pipeline_observability/pipeline_observability/document-dashboard/github.workflow.json b/github_pipeline_observability/pipeline_observability/document-dashboard/github.workflow.json new file mode 100644 index 0000000..40a5749 --- /dev/null +++ b/github_pipeline_observability/pipeline_observability/document-dashboard/github.workflow.json @@ -0,0 +1,3267 @@ +{ + "importedWithCode": false, + "layouts": { + "0": { + "h": 6, + "w": 8, + "x": 8, + "y": 4 + }, + "1": { + "h": 4, + "w": 4, + "x": 0, + "y": 4 + }, + "10": { + "h": 3, + "w": 4, + "x": 0, + "y": 13 + }, + "11": { + "h": 6, + "w": 4, + "x": 20, + "y": 4 + }, + "12": { + "h": 2, + "w": 4, + "x": 0, + "y": 8 + }, + "14": { + "h": 6, + "w": 8, + "x": 16, + "y": 40 + }, + "15": { + "h": 6, + "w": 16, + "x": 0, + "y": 40 + }, + "17": { + "h": 2, + "w": 24, + "x": 0, + "y": 38 + }, + "18": { + "h": 6, + "w": 8, + "x": 0, + "y": 27 + }, + "19": { + "h": 5, + "w": 24, + "x": 0, + "y": 33 + }, + "2": { + "h": 3, + "w": 4, + "x": 0, + "y": 10 + }, + "20": { + "h": 2, + "w": 24, + "x": 0, + "y": 0 + }, + "24": { + "h": 2, + "w": 24, + "x": 0, + "y": 2 + }, + "25": { + "h": 2, + "w": 24, + "x": 0, + "y": 22 + }, + "27": { + "h": 3, + "w": 4, + "x": 4, + "y": 24 + }, + "28": { + "h": 3, + "w": 4, + "x": 8, + "y": 24 + }, + "3": { + "h": 6, + "w": 16, + "x": 8, + "y": 27 + }, + "30": { + "h": 3, + "w": 4, + "x": 12, + "y": 24 + }, + "32": { + "h": 1, + "w": 24, + "x": 0, + "y": 46 + }, + "33": { + "h": 6, + "w": 24, + "x": 0, + "y": 47 + }, + "34": { + "h": 3, + "w": 4, + "x": 0, + "y": 24 + }, + "35": { + "h": 2, + "w": 4, + "x": 16, + "y": 4 + }, + "36": { + "h": 2, + "w": 4, + "x": 16, + "y": 6 + }, + "37": { + "h": 2, + "w": 4, + "x": 16, + "y": 8 + }, + "4": { + "h": 6, + "w": 4, + "x": 4, + "y": 4 + }, + "5": { + "h": 6, + "w": 12, + "x": 4, + "y": 10 + }, + "6": { + "h": 6, + "w": 8, + "x": 16, + "y": 10 + }, + "7": { + "h": 3, + "w": 8, + "x": 16, + "y": 24 + }, + "8": { + "h": 6, + "w": 24, + "x": 0, + "y": 16 + } + }, + "settings": {}, + "tiles": { + "0": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"pipeline\" \n| filter event.type == \"run\" \n| filter event.status == \"finished\" \n| filter event.provider == \"github.com\" \n| filter in(vcs.repository.name, $Repository) \n| filter in(cicd.pipeline.name, $Workflow) \n| filter in(cicd.pipeline.run.trigger, $Trigger)\n| summarize count(), by: {cicd.pipeline.run.outcome}", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "timeframe": { + "tileTimeframe": { + "from": "now()-7d", + "to": "now()" + }, + "tileTimeframeEnabled": false + }, + "title": "Workflow Completion Status", + "type": "data", + "visualization": "pieChart", + "visualizationSettings": { + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "cicd.pipeline.run.outcome" + ], + "categoryAxisLabel": "cicd.pipeline.run.outcome", + "tooltipVariant": "single", + "valueAxis": [ + "count()" + ], + "valueAxisLabel": "count()" + }, + "categoryOverrides": { + "": { + "added": 1726836121804, + "color": "#805100" + }, + "failure": { + "added": 1726836109108, + "color": { + "Default": "var(--dt-colors-charts-categorical-themed-fireplace-color-01-default, #ae132d)" + } + }, + "success": { + "added": 1726836111136, + "color": "#2F6863" + } + }, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "relative" + }, + "curve": "linear", + "gapPolicy": "connect", + "legend": { + "hidden": true + }, + "pointsDisplay": "auto", + "truncationMode": "middle", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "dimension": "cicd.pipeline.run.outcome", + "displayedFields": [ + "cicd.pipeline.run.outcome", + "count()" + ], + "longitude": "count()", + "value": "count()" + }, + "histogram": { + "dataMappings": [ + { + "rangeAxis": "", + "valueAxis": "count()" + } + ], + "displayedFields": [ + "cicd.pipeline.run.outcome" + ], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": { + "value": "count()" + }, + "displayedFields": [ + "cicd.pipeline.run.outcome" + ], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "count()", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "label": "cicd.pipeline.run.outcome", + "prefixIcon": "", + "recordField": "cicd.pipeline.run.outcome", + "showLabel": true, + "trend": { + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [], + "tooltip": { + "showCustomFields": false + }, + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "1": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"pipeline\" \n| filter event.type == \"run\" \n| filter event.status == \"finished\" \n| filter event.provider == \"github.com\" \n| fields vcs.repository.name, cicd.pipeline.name, cicd.pipeline.run.trigger\n| filter in(vcs.repository.name, $Repository) \n| filter in(cicd.pipeline.name, $Workflow) \n| filter in(cicd.pipeline.run.trigger, $Trigger)\n| summarize count()", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "timeframe": { + "tileTimeframe": { + "from": "now()-7d", + "to": "now()" + }, + "tileTimeframeEnabled": false + }, + "title": "Total Workflow Executions", + "type": "data", + "visualization": "singleValue", + "visualizationSettings": { + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "count()" + ], + "categoryAxisLabel": "count()", + "tooltipVariant": "single", + "valueAxis": [ + "count()" + ], + "valueAxisLabel": "count()" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "relative" + }, + "curve": "linear", + "gapPolicy": "connect", + "legend": { + "hidden": true + }, + "pointsDisplay": "auto", + "truncationMode": "middle", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "dimension": "count()", + "displayedFields": [ + "count()" + ], + "longitude": "count()", + "value": "count()" + }, + "histogram": { + "dataMappings": [ + { + "rangeAxis": "", + "valueAxis": "count()" + } + ], + "displayedFields": [], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": {}, + "displayedFields": [], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "count()", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "label": "Count", + "prefixIcon": "", + "recordField": "count()", + "showLabel": false, + "sparklineSettings": { + "isVisible": true + }, + "trend": { + "isLabelVisible": false, + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [], + "tooltip": { + "showCustomFields": false + }, + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "10": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"pipeline\" \n| filter event.type == \"run\" \n| filter event.status == \"finished\" \n| filter event.provider == \"github.com\" \n| fields vcs.repository.name, cicd.pipeline.name, cicd.pipeline.run.trigger, duration\n| filter in(vcs.repository.name, $Repository) \n| filter in(cicd.pipeline.name, $Workflow) \n| filter in(cicd.pipeline.run.trigger, $Trigger)\n| summarize median(duration)", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "timeframe": { + "tileTimeframe": { + "from": "now()-7d", + "to": "now()" + }, + "tileTimeframeEnabled": false + }, + "title": "Median Execution Time", + "type": "data", + "visualization": "singleValue", + "visualizationSettings": { + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "median(duration)" + ], + "categoryAxisLabel": "median(duration)", + "tooltipVariant": "single", + "valueAxis": [ + "median(duration)" + ], + "valueAxisLabel": "median(duration)" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "relative" + }, + "curve": "linear", + "gapPolicy": "connect", + "legend": { + "hidden": true + }, + "pointsDisplay": "auto", + "truncationMode": "middle", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "dimension": "median(duration)", + "displayedFields": [ + "avg(duration)" + ], + "longitude": "median(duration)", + "value": "avg(duration)" + }, + "histogram": { + "dataMappings": [ + { + "rangeAxis": "", + "valueAxis": "median(duration)" + } + ], + "displayedFields": [], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": {}, + "displayedFields": [], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "avg(duration)", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "label": "avg(duration)", + "prefixIcon": "", + "recordField": "median(duration)", + "showLabel": false, + "sparklineSettings": {}, + "trend": { + "isLabelVisible": false, + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [], + "tooltip": { + "showCustomFields": false + }, + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "11": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"pipeline\" \n| filter event.type == \"run\" \n| filter event.status == \"finished\" \n| filter event.provider == \"github.com\" \n| filter in(vcs.repository.name, $Repository) \n| filter in(cicd.pipeline.name, $Workflow) \n| filter in(cicd.pipeline.run.trigger, $Trigger)\n| summarize count(), by: {cicd.pipeline.run.trigger}", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "timeframe": { + "tileTimeframe": { + "from": "now()-7d", + "to": "now()" + }, + "tileTimeframeEnabled": false + }, + "title": "Pipeline triggers", + "type": "data", + "visualization": "pieChart", + "visualizationSettings": { + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "cicd.pipeline.run.trigger" + ], + "categoryAxisLabel": "cicd.pipeline.run.trigger", + "tooltipVariant": "single", + "valueAxis": [ + "count()" + ], + "valueAxisLabel": "count()" + }, + "categoryOverrides": { + "": { + "added": 1726836121804, + "color": { + "Default": "var(--dt-colors-charts-categorical-color-11-default, #627cfe)" + } + }, + "failure": { + "added": 1726836109108, + "color": { + "Default": "var(--dt-colors-charts-categorical-themed-fireplace-color-01-default, #ae132d)" + } + }, + "success": { + "added": 1726836111136, + "color": { + "Default": "var(--dt-colors-charts-categorical-color-09-default, #649438)" + } + } + }, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "relative" + }, + "curve": "linear", + "gapPolicy": "connect", + "legend": { + "hidden": false, + "position": "auto" + }, + "pointsDisplay": "auto", + "truncationMode": "middle", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "dimension": "cicd.pipeline.run.trigger", + "displayedFields": [ + "cicd.pipeline.run.trigger", + "count()" + ], + "longitude": "count()", + "value": "count()" + }, + "histogram": { + "dataMappings": [ + { + "rangeAxis": "", + "valueAxis": "count()" + } + ], + "displayedFields": [ + "cicd.pipeline.run.trigger" + ], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": { + "value": "count()" + }, + "displayedFields": [ + "cicd.pipeline.run.trigger" + ], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "count()", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "label": "cicd.pipeline.run.outcome", + "prefixIcon": "", + "recordField": "cicd.pipeline.run.outcome", + "showLabel": true, + "trend": { + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [], + "tooltip": { + "showCustomFields": false + }, + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "12": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"pipeline\" \n| filter event.type == \"run\" \n| filter event.status == \"finished\" \n| filter event.provider == \"github.com\" \n| filter cicd.pipeline.run.attempt \u003e 1 \n| fields vcs.repository.name, cicd.pipeline.name, cicd.pipeline.run.trigger\n| filter in(vcs.repository.name, $Repository) \n| filter in(cicd.pipeline.name, $Workflow) \n| filter in(cicd.pipeline.run.trigger, $Trigger)\n| summarize count() ", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "timeframe": { + "tileTimeframe": { + "from": "now()-7d", + "to": "now()" + }, + "tileTimeframeEnabled": false + }, + "title": "Re-triggered Workflows", + "type": "data", + "visualization": "singleValue", + "visualizationSettings": { + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "count()" + ], + "categoryAxisLabel": "count()", + "tooltipVariant": "single", + "valueAxis": [ + "count()" + ], + "valueAxisLabel": "count()" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "relative" + }, + "curve": "linear", + "gapPolicy": "connect", + "legend": { + "hidden": true + }, + "pointsDisplay": "auto", + "truncationMode": "middle", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "dimension": "count()", + "displayedFields": [ + "count()" + ], + "longitude": "count()", + "value": "count()" + }, + "histogram": { + "dataMappings": [ + { + "rangeAxis": "", + "valueAxis": "count()" + } + ], + "displayedFields": [], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": {}, + "displayedFields": [], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "count()", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "isIconVisible": false, + "label": "count()", + "prefixIcon": "", + "recordField": "count()", + "showLabel": false, + "sparklineSettings": { + "isVisible": true + }, + "trend": { + "isLabelVisible": false, + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [ + { + "field": "failureRate", + "id": 1, + "isEnabled": true, + "rules": [ + { + "color": { + "Default": "var(--dt-colors-charts-status-ideal-default, #2f6863)" + }, + "comparator": "≤", + "id": 0, + "label": "", + "value": 0 + }, + { + "color": { + "Default": "var(--dt-colors-charts-status-warning-default, #eca440)" + }, + "comparator": "≥", + "id": 1, + "label": "" + }, + { + "color": { + "Default": "var(--dt-colors-charts-status-critical-default, #c4233b)" + }, + "comparator": "≥", + "id": 2, + "label": "", + "value": 0 + } + ], + "title": "" + } + ], + "tooltip": { + "showCustomFields": false + }, + "unitsOverrides": [ + { + "added": 1727678780356, + "baseUnit": "percent", + "decimals": 0, + "delimiter": true, + "displayUnit": null, + "identifier": "failureRate", + "suffix": "", + "unitCategory": "percentage" + } + ], + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "14": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"task\" \n| filter event.type== \"build\" \n| filter event.status == \"finished\" \n| filter event.provider == \"github.com\" \n| fieldsAdd steps_array = toArray(task.steps) \n| expand steps_array \n| parse steps_array,\"JSON:steps_data\" \n| join [\n fetch events \n | filter event.kind == \"SDLC_EVENT\" \n | filter event.category == \"pipeline\" \n | filter event.type == \"run\" \n | filter event.status == \"finished\" \n | fields cicd.pipeline.run.id, cicd.pipeline.name, vcs.repository.name, cicd.pipeline.run.trigger \n | filter in(vcs.repository.name, $Repository) \n | filter in(cicd.pipeline.name, $Workflow) \n | filter in(cicd.pipeline.run.trigger, $Trigger) ], \n on:{cicd.pipeline.run.id}\n| fieldsAdd step.duration = toTimestamp(steps_data[completed_at]) - toTimestamp(steps_data[started_at]), \nstep.name = steps_data[name], \nstep.conclusion = steps_data[conclusion], \nstep.task.name = task.name\n| summarize failureRate=if(count() == 0, 0, else: toDouble(countIf(step.conclusion==\"failure\")) / toDouble(count())*100), by: {step.name, step.task.name} \n| filter failureRate \u003e 0 \n| sort failureRate desc \n| limit 5", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "title": "Error-prone Steps | Top 5", + "type": "data", + "visualization": "pieChart", + "visualizationSettings": { + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxisLabel": "step.name,step.task.name", + "colorPaletteMode": "multi-color", + "groupMode": "grouped", + "layout": "horizontal", + "tooltipVariant": "grouped", + "valueAxisLabel": "failureRate" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "relative" + }, + "curve": "linear", + "gapPolicy": "connect", + "hiddenLegendFields": [], + "pointsDisplay": "auto", + "truncationMode": "middle", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "displayedFields": [] + }, + "histogram": { + "dataMappings": [], + "displayedFields": [], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": {}, + "displayedFields": [], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "label": "error", + "prefixIcon": "", + "recordField": "error", + "showLabel": true, + "trend": { + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [], + "tooltip": { + "showCustomFields": false + }, + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "15": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"task\" \n| filter event.type== \"build\"\n| filter event.status == \"finished\" \n| filter event.provider == \"github.com\" \n| join [\n fetch events \n | filter event.kind == \"SDLC_EVENT\" \n | filter event.category == \"pipeline\"\n | filter event.type == \"run\" \n | filter event.status == \"finished\" \n | fields cicd.pipeline.run.id, cicd.pipeline.name, vcs.repository.name, cicd.pipeline.run.trigger \n | filter in(vcs.repository.name, $Repository) \n | filter in(cicd.pipeline.name, $Workflow) \n | filter in(cicd.pipeline.run.trigger, $Trigger) ], \n on:{cicd.pipeline.run.id}\n| fieldsAdd steps_array=toArray(task.steps) \n| expand steps_array \n| parse steps_array,\"JSON:steps_data\" \n| fieldsAdd step.duration = toTimestamp(steps_data[completed_at]) - toTimestamp(steps_data[started_at]), \nstep.name = steps_data[name], \nstep.task.name = task.name\n| summarize percentile(step.duration,50), alias:Median ,by:{step.name, alias: StepName, step.task.name, alias: TaskName} \n| filter isNotNull(Median) \n| sort Median desc \n| limit 5", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "title": "Step Duration (p50) | Top 5", + "type": "data", + "visualization": "categoricalBarChart", + "visualizationSettings": { + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "StepName", + "TaskName" + ], + "categoryAxisLabel": "StepName,TaskName", + "colorPaletteMode": "multi-color", + "groupMode": "grouped", + "layout": "horizontal", + "tooltipVariant": "grouped", + "valueAxis": [ + "Median" + ], + "valueAxisLabel": "Median" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "relative" + }, + "curve": "linear", + "gapPolicy": "connect", + "hiddenLegendFields": [], + "legend": { + "hidden": true + }, + "pointsDisplay": "auto", + "truncationMode": "middle", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "dimension": "StepName", + "displayedFields": [ + "StepName", + "TaskName", + "Median" + ], + "longitude": "Median", + "value": "Median" + }, + "histogram": { + "dataMappings": [ + { + "rangeAxis": "", + "valueAxis": "Median" + } + ], + "displayedFields": [ + "StepName", + "TaskName" + ], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": { + "value": "Median" + }, + "displayedFields": [ + "StepName", + "TaskName" + ], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "Median", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "label": "error", + "prefixIcon": "", + "recordField": "error", + "showLabel": true, + "trend": { + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [], + "tooltip": { + "showCustomFields": false + }, + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "17": { + "content": "### Step Details\n\nThese tiles will give you a comprehensive view of the detailed performance and status of individual steps within your GitHub jobs\n\n-----\n", + "title": "", + "type": "markdown" + }, + "18": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\"\n| filter event.category == \"task\"\n| filter event.type == \"build\"\n| filter event.status == \"finished\"\n| filter event.provider == \"github.com\"\n| join [\n fetch events \n | filter event.category == \"pipeline\" \n | filter event.status == \"finished\" \n | filter event.kind == \"SDLC_EVENT\" \n | filter event.type==\"run\" \n | fields cicd.pipeline.run.id, cicd.pipeline.name, vcs.repository.name, cicd.pipeline.run.trigger \n | filter in(vcs.repository.name, $Repository) \n | filter in(cicd.pipeline.name, $Workflow) \n | filter in(cicd.pipeline.run.trigger, $Trigger) ], \n on:{cicd.pipeline.run.id}\n| summarize Count=count(), by:{task.runner.name} \n| sort Count desc \n| limit 5", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "title": "Job Runners | Top 5", + "type": "data", + "visualization": "donutChart", + "visualizationSettings": { + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "task.runner.name" + ], + "categoryAxisLabel": "task.runner.name", + "colorPaletteMode": "multi-color", + "tooltipVariant": "single", + "valueAxis": [ + "Count" + ], + "valueAxisLabel": "Count" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "number-of-slices", + "groupingThresholdValue": 0, + "valueType": "absolute" + }, + "curve": "linear", + "gapPolicy": "connect", + "hiddenLegendFields": [], + "legend": { + "hidden": true + }, + "pointsDisplay": "auto", + "truncationMode": "middle", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "dimension": "task.runner.name", + "displayedFields": [ + "task.runner.name", + "Count" + ], + "longitude": "Count", + "value": "Count" + }, + "histogram": { + "dataMappings": [ + { + "rangeAxis": "", + "valueAxis": "Count" + } + ], + "displayedFields": [ + "task.runner.name" + ], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": { + "value": "Count" + }, + "displayedFields": [ + "task.runner.name" + ], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "Count", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "label": "error", + "prefixIcon": "", + "recordField": "error", + "showLabel": true, + "trend": { + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [], + "tooltip": { + "showCustomFields": false + }, + "unitsOverrides": [ + { + "added": 1727680127964, + "baseUnit": "percent", + "decimals": 0, + "delimiter": false, + "displayUnit": null, + "identifier": "failureRate", + "suffix": "", + "unitCategory": "percentage" + } + ], + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "19": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"pipeline\" \n| filter event.type == \"run\" \n| filter event.status == \"started\" \n| filter in(vcs.repository.name, $Repository) \n| filter in(cicd.pipeline.name, $Workflow) \n| filter in(cicd.pipeline.run.trigger, $Trigger) \n| fields start_time, cicd.pipeline.run.id, cicd.pipeline.run.attempt\n| joinNested jobs=[\n fetch events \n | filter event.kind == \"SDLC_EVENT\" \n | filter event.category == \"task\" \n | filter event.type ==\"build\" \n | filter event.status == \"started\" \n | filter event.provider==\"github.com\" \n | fields cicd.pipeline.run.id, task.run.attempt, start_time \n | sort start_time asc ],\n on: {cicd.pipeline.run.id,left[cicd.pipeline.run.attempt] == right[task.run.attempt]} \n| fieldsAdd queueTime = jobs[0][start_time] - start_time ", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "title": "Job Queue Time", + "type": "data", + "visualization": "areaChart", + "visualizationSettings": { + "autoSelectVisualization": false, + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "cicd.pipeline.run.id", + "cicd.pipeline.run.attempt", + "queueTime" + ], + "categoryAxisLabel": "cicd.pipeline.run.id,cicd.pipeline.run.attempt,queueTime", + "categoryAxisTickLayout": "horizontal", + "colorPaletteMode": "multi-color", + "groupMode": "stacked", + "layout": "horizontal", + "scale": "absolute", + "tooltipVariant": "single", + "valueAxis": [ + "cicd.pipeline.run.id", + "cicd.pipeline.run.attempt", + "queueTime" + ], + "valueAxisLabel": "cicd.pipeline.run.id,cicd.pipeline.run.attempt,queueTime" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "relative" + }, + "colorPalette": "categorical", + "curve": "smooth", + "fieldMapping": { + "leftAxisValues": [ + "queueTime" + ], + "timestamp": "start_time" + }, + "gapPolicy": "connect", + "hiddenLegendFields": [ + "cicd.pipeline.run.id", + "cicd.pipeline.run.attempt", + "timeToStart", + "queueTime" + ], + "leftYAxisSettings": { + "isLabelVisible": true, + "label": "Time to start" + }, + "legend": { + "hidden": true + }, + "pointsDisplay": "auto", + "seriesOverrides": [], + "truncationMode": "middle", + "valueRepresentation": "absolute", + "xAxisIsLabelVisible": false, + "xAxisLabel": "start_time", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "dimension": "start_time", + "displayedFields": [ + "start_time", + "cicd.pipeline.run.id", + "cicd.pipeline.run.attempt", + "timeToStart" + ], + "latitude": "cicd.pipeline.run.attempt", + "longitude": "cicd.pipeline.run.id", + "value": "cicd.pipeline.run.id" + }, + "histogram": { + "colorPalette": "categorical", + "dataMappings": [ + { + "rangeAxis": "", + "valueAxis": "cicd.pipeline.run.id" + }, + { + "rangeAxis": "", + "valueAxis": "cicd.pipeline.run.attempt" + }, + { + "rangeAxis": "", + "valueAxis": "queueTime" + } + ], + "displayedFields": [], + "legend": "auto", + "truncationMode": "middle", + "variant": "single", + "yAxis": { + "label": "Frequency", + "scale": "linear" + } + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "categorical", + "dataMappings": {}, + "displayedFields": [], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon", + "truncationMode": "middle" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "cicd.pipeline.run.id", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "label": "start_time", + "prefixIcon": "", + "recordField": "start_time", + "showLabel": true, + "trend": { + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [], + "tooltip": {}, + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "2": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"pipeline\" \n| filter event.type == \"run\" \n| filter event.status == \"finished\" \n| filter event.provider == \"github.com\" \n| fields vcs.repository.name, cicd.pipeline.name, cicd.pipeline.run.trigger, duration\n| filter in(vcs.repository.name, $Repository) \n| filter in(cicd.pipeline.name, $Workflow) \n| filter in(cicd.pipeline.run.trigger, $Trigger)\n| summarize avg(duration)", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "timeframe": { + "tileTimeframe": { + "from": "now()-7d", + "to": "now()" + }, + "tileTimeframeEnabled": false + }, + "title": "Average Execution Time", + "type": "data", + "visualization": "singleValue", + "visualizationSettings": { + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "avg(duration)" + ], + "categoryAxisLabel": "avg(duration)", + "tooltipVariant": "single", + "valueAxis": [ + "avg(duration)" + ], + "valueAxisLabel": "avg(duration)" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "relative" + }, + "curve": "linear", + "gapPolicy": "connect", + "legend": { + "hidden": true + }, + "pointsDisplay": "auto", + "truncationMode": "middle", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "dimension": "avg(duration)", + "displayedFields": [ + "median(duration)" + ], + "longitude": "avg(duration)", + "value": "median(duration)" + }, + "histogram": { + "dataMappings": [ + { + "rangeAxis": "", + "valueAxis": "avg(duration)" + } + ], + "displayedFields": [], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": {}, + "displayedFields": [], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "median(duration)", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "label": "median(duration)", + "prefixIcon": "", + "recordField": "avg(duration)", + "showLabel": false, + "sparklineSettings": {}, + "trend": { + "isLabelVisible": false, + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [], + "tooltip": { + "showCustomFields": false + }, + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "20": { + "content": "### GitHub Workflow Pulse\n\nThis dashboard offers a detailed overview of your GitHub workflow executions, providing valuable insights into the performance and efficiency of your CI/CD pipelines. [Data ingest](https://dt-rnd.atlassian.net/wiki/x/WwLNLg) ", + "title": "", + "type": "markdown" + }, + "24": { + "content": "### Workflow Details\n\nThis section provides a clear and detailed view of the current state of GitHub workflow executions, enabling you to manage and improve them effectively. \n\n-----", + "title": "", + "type": "markdown" + }, + "25": { + "content": "### Job Details\n\nThis section will give you a comprehensive view of the detailed performance and status of individual jobs within your GitHub workflows, enabling you to monitor, analyze, and optimize your CI/CD processes effectively. \n\n-----", + "title": "", + "type": "markdown" + }, + "27": { + "content": "Successful Jobs", + "title": "", + "type": "markdown" + }, + "28": { + "content": "Failed Jobs", + "title": "", + "type": "markdown" + }, + "3": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\"\n| filter event.category == \"task\" \n| filter event.type == \"build\"\n| filter event.status == \"finished\" \n| filter event.provider == \"github.com\" \n| filter task.outcome != \"skipped\" \n| join [\n fetch events \n | filter event.kind == \"SDLC_EVENT\" \n | filter event.category == \"pipeline\"\n | filter event.type == \"run\" \n | filter event.status == \"finished\" \n | fields cicd.pipeline.run.id, cicd.pipeline.name, vcs.repository.name, cicd.pipeline.run.trigger \n | filter in(vcs.repository.name, $Repository) \n | filter in(cicd.pipeline.name, $Workflow) \n | filter in(cicd.pipeline.run.trigger, $Trigger) ], \n on:{cicd.pipeline.run.id}\n| summarize percentile(duration,50), alias:Median ,by:{task.name, alias: TaskName} \n| filter isNotNull(Median) \n| sort Median desc \n| limit 5", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "title": "Job Duration (p50) | Top 5", + "type": "data", + "visualization": "categoricalBarChart", + "visualizationSettings": { + "autoSelectVisualization": false, + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "TaskName" + ], + "categoryAxisLabel": "TaskName", + "colorPaletteMode": "multi-color", + "tooltipVariant": "single", + "valueAxis": [ + "Median" + ], + "valueAxisLabel": "Median" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "relative" + }, + "curve": "linear", + "gapPolicy": "connect", + "hiddenLegendFields": [], + "legend": { + "hidden": true + }, + "pointsDisplay": "auto", + "truncationMode": "middle", + "valueRepresentation": "absolute", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "dimension": "TaskName", + "displayedFields": [ + "TaskName", + "Median" + ], + "longitude": "Median", + "value": "Median" + }, + "histogram": { + "dataMappings": [ + { + "rangeAxis": "", + "valueAxis": "Median" + } + ], + "displayedFields": [ + "TaskName" + ], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": { + "value": "Median" + }, + "displayedFields": [ + "TaskName" + ], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "Median", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "label": "error", + "prefixIcon": "", + "recordField": "error", + "showLabel": true, + "trend": { + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [], + "tooltip": { + "showCustomFields": false + }, + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "30": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"task\" \n| filter event.status == \"finished\" \n| filter event.provider == \"github.com\" \n| fields vcs.repository.name, duration\n| filter in(vcs.repository.name, $Repository) \n| summarize avg(duration)", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "timeframe": { + "tileTimeframe": { + "from": "now()-7d", + "to": "now()" + }, + "tileTimeframeEnabled": false + }, + "title": "Average Job Duration", + "type": "data", + "visualization": "singleValue", + "visualizationSettings": { + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "avg(duration)" + ], + "categoryAxisLabel": "avg(duration)", + "tooltipVariant": "single", + "valueAxis": [ + "avg(duration)" + ], + "valueAxisLabel": "avg(duration)" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "relative" + }, + "curve": "linear", + "gapPolicy": "connect", + "legend": { + "hidden": true + }, + "pointsDisplay": "auto", + "truncationMode": "middle", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "dimension": "avg(duration)", + "displayedFields": [ + "median(duration)" + ], + "longitude": "avg(duration)", + "value": "median(duration)" + }, + "histogram": { + "dataMappings": [ + { + "rangeAxis": "", + "valueAxis": "avg(duration)" + } + ], + "displayedFields": [], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": {}, + "displayedFields": [], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "median(duration)", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "label": "median(duration)", + "prefixIcon": "", + "recordField": "avg(duration)", + "showLabel": false, + "sparklineSettings": {}, + "trend": { + "isLabelVisible": false, + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [], + "tooltip": { + "showCustomFields": false + }, + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "32": { + "content": " ", + "title": "", + "type": "markdown" + }, + "33": { + "content": "#### Additional resources\n**Pipeline Observability**\n* [Observability throughout the software development lifecycle increases delivery performance](https://www.dynatrace.com/news/blog/observability-throughout-the-software-development-lifecycle/) (blog post)\n* [Concepts](https://docs.dynatrace.com/docs/deliver/pipeline-observability-sdlc-events/pipeline-observability-concepts) (docs)\n\n**Software Development Lifecycle Events**\n* [Ingest SDLC events](https://docs.dynatrace.com/docs/deliver/pipeline-observability-sdlc-events/sdlc-events) (docs)\n* [SDLC event specification]() (docs)\n#\n---\n\n#### About this dashboard\n\nRelease v0.3.0, [Origin](https://github.com/Dynatrace/dynatrace-configuration-as-code-samples)", + "title": "", + "type": "markdown" + }, + "34": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"task\" \n| filter event.status == \"finished\" \n| filter event.provider == \"github.com\" \n| fields vcs.repository.name\n| filter in(vcs.repository.name, $Repository) \n| summarize count()", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "timeframe": { + "tileTimeframe": { + "from": "now()-7d", + "to": "now()" + }, + "tileTimeframeEnabled": false + }, + "title": "Total Workflow Executions", + "type": "data", + "visualization": "singleValue", + "visualizationSettings": { + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "count()" + ], + "categoryAxisLabel": "count()", + "tooltipVariant": "single", + "valueAxis": [ + "count()" + ], + "valueAxisLabel": "count()" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "relative" + }, + "curve": "linear", + "gapPolicy": "connect", + "legend": { + "hidden": true + }, + "pointsDisplay": "auto", + "truncationMode": "middle", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "dimension": "count()", + "displayedFields": [ + "count()" + ], + "longitude": "count()", + "value": "count()" + }, + "histogram": { + "dataMappings": [ + { + "rangeAxis": "", + "valueAxis": "count()" + } + ], + "displayedFields": [], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": {}, + "displayedFields": [], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "count()", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "label": "Count", + "prefixIcon": "", + "recordField": "count()", + "showLabel": false, + "sparklineSettings": { + "isVisible": true + }, + "trend": { + "isLabelVisible": false, + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [], + "tooltip": { + "showCustomFields": false + }, + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "35": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"pipeline\" \n| filter event.type == \"run\" \n| filter event.status == \"finished\" \n| filter event.provider == \"github.com\" \n| fields vcs.repository.name, cicd.pipeline.name, cicd.pipeline.run.trigger, cicd.pipeline.run.outcome\n| filter in(vcs.repository.name, $Repository) \n| filter in(cicd.pipeline.name, $Workflow)\n| filter in(cicd.pipeline.run.trigger, $Trigger)\n| summarize successful = countIf(cicd.pipeline.run.outcome == \"success\")", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "timeframe": { + "tileTimeframe": { + "from": "now()-7d", + "to": "now()" + }, + "tileTimeframeEnabled": false + }, + "title": "Successful Executions", + "type": "data", + "visualization": "singleValue", + "visualizationSettings": { + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "successful" + ], + "categoryAxisLabel": "successful", + "tooltipVariant": "single", + "valueAxis": [ + "successful" + ], + "valueAxisLabel": "successful" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "relative" + }, + "curve": "linear", + "gapPolicy": "connect", + "legend": { + "hidden": true + }, + "pointsDisplay": "auto", + "truncationMode": "middle", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "dimension": "successful", + "displayedFields": [], + "longitude": "successful", + "value": "failureRate" + }, + "histogram": { + "dataMappings": [ + { + "rangeAxis": "", + "valueAxis": "successful" + } + ], + "displayedFields": [], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": {}, + "displayedFields": [], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "failureRate", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "isIconVisible": true, + "label": "failureRate", + "prefixIcon": "SuccessIcon", + "recordField": "successful", + "showLabel": false, + "sparklineSettings": { + "isVisible": true + }, + "trend": { + "isLabelVisible": false, + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [ + { + "field": "failureRate", + "id": 1, + "isEnabled": true, + "rules": [ + { + "color": { + "Default": "var(--dt-colors-charts-status-ideal-default, #2f6863)" + }, + "comparator": "≤", + "id": 0, + "label": "", + "value": 0 + }, + { + "color": { + "Default": "var(--dt-colors-charts-status-warning-default, #eca440)" + }, + "comparator": "≥", + "id": 1, + "label": "" + }, + { + "color": { + "Default": "var(--dt-colors-charts-status-critical-default, #c4233b)" + }, + "comparator": "≥", + "id": 2, + "label": "", + "value": 0 + } + ], + "title": "" + } + ], + "tooltip": { + "showCustomFields": false + }, + "unitsOverrides": [ + { + "added": 1727678780356, + "baseUnit": "percent", + "decimals": 0, + "delimiter": true, + "displayUnit": null, + "identifier": "failureRate", + "suffix": "", + "unitCategory": "percentage" + } + ], + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "36": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"pipeline\" \n| filter event.type == \"run\" \n| filter event.status == \"finished\" \n| filter event.provider == \"github.com\" \n| fields vcs.repository.name, cicd.pipeline.name, cicd.pipeline.run.trigger, cicd.pipeline.run.outcome\n| filter in(vcs.repository.name, $Repository) \n| filter in(cicd.pipeline.name, $Workflow)\n| filter in(cicd.pipeline.run.trigger, $Trigger)\n| summarize failed = countIf(cicd.pipeline.run.outcome == \"failure\")", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "timeframe": { + "tileTimeframe": { + "from": "now()-7d", + "to": "now()" + }, + "tileTimeframeEnabled": false + }, + "title": "Failed Executions", + "type": "data", + "visualization": "singleValue", + "visualizationSettings": { + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "failed" + ], + "categoryAxisLabel": "failed", + "tooltipVariant": "single", + "valueAxis": [ + "failed" + ], + "valueAxisLabel": "failed" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "relative" + }, + "curve": "linear", + "gapPolicy": "connect", + "legend": { + "hidden": true + }, + "pointsDisplay": "auto", + "truncationMode": "middle", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "dimension": "failed", + "displayedFields": [], + "longitude": "failed", + "value": "failureRate" + }, + "histogram": { + "dataMappings": [ + { + "rangeAxis": "", + "valueAxis": "failed" + } + ], + "displayedFields": [], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": {}, + "displayedFields": [], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "failureRate", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "isIconVisible": true, + "label": "failureRate", + "prefixIcon": "CriticalFailedIcon", + "recordField": "failed", + "showLabel": false, + "sparklineSettings": { + "isVisible": true + }, + "trend": { + "isLabelVisible": false, + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [ + { + "field": "failureRate", + "id": 1, + "isEnabled": true, + "rules": [ + { + "color": { + "Default": "var(--dt-colors-charts-status-ideal-default, #2f6863)" + }, + "comparator": "≤", + "id": 0, + "label": "", + "value": 0 + }, + { + "color": { + "Default": "var(--dt-colors-charts-status-warning-default, #eca440)" + }, + "comparator": "≥", + "id": 1, + "label": "" + }, + { + "color": { + "Default": "var(--dt-colors-charts-status-critical-default, #c4233b)" + }, + "comparator": "≥", + "id": 2, + "label": "", + "value": 0 + } + ], + "title": "" + } + ], + "tooltip": { + "showCustomFields": false + }, + "unitsOverrides": [ + { + "added": 1727678780356, + "baseUnit": "percent", + "decimals": 0, + "delimiter": true, + "displayUnit": null, + "identifier": "failureRate", + "suffix": "", + "unitCategory": "percentage" + } + ], + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "37": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"pipeline\" \n| filter event.type == \"run\" \n| filter event.status == \"finished\" \n| filter event.provider == \"github.com\" \n| fields vcs.repository.name, cicd.pipeline.name, cicd.pipeline.run.trigger, cicd.pipeline.run.outcome\n| filter in(vcs.repository.name, $Repository) \n| filter in(cicd.pipeline.name, $Workflow)\n| filter in(cicd.pipeline.run.trigger, $Trigger)\n| summarize other = countIf(isNull(cicd.pipeline.run.outcome) or (cicd.pipeline.run.outcome != \"failure\" and cicd.pipeline.run.outcome != \"success\"))", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "timeframe": { + "tileTimeframe": { + "from": "now()-7d", + "to": "now()" + }, + "tileTimeframeEnabled": false + }, + "title": "Other Execution States", + "type": "data", + "visualization": "singleValue", + "visualizationSettings": { + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "other" + ], + "categoryAxisLabel": "other", + "tooltipVariant": "single", + "valueAxis": [ + "other" + ], + "valueAxisLabel": "other" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "relative" + }, + "curve": "linear", + "gapPolicy": "connect", + "legend": { + "hidden": true + }, + "pointsDisplay": "auto", + "truncationMode": "middle", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "dimension": "other", + "displayedFields": [], + "longitude": "other", + "value": "failureRate" + }, + "histogram": { + "dataMappings": [ + { + "rangeAxis": "", + "valueAxis": "other" + } + ], + "displayedFields": [], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": {}, + "displayedFields": [], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "failureRate", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "isIconVisible": true, + "label": "failureRate", + "prefixIcon": "WarningIcon", + "recordField": "other", + "showLabel": false, + "sparklineSettings": { + "isVisible": true + }, + "trend": { + "isLabelVisible": false, + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [ + { + "field": "failureRate", + "id": 1, + "isEnabled": true, + "rules": [ + { + "color": { + "Default": "var(--dt-colors-charts-status-ideal-default, #2f6863)" + }, + "comparator": "≤", + "id": 0, + "label": "", + "value": 0 + }, + { + "color": { + "Default": "var(--dt-colors-charts-status-warning-default, #eca440)" + }, + "comparator": "≥", + "id": 1, + "label": "" + }, + { + "color": { + "Default": "var(--dt-colors-charts-status-critical-default, #c4233b)" + }, + "comparator": "≥", + "id": 2, + "label": "", + "value": 0 + } + ], + "title": "" + } + ], + "tooltip": { + "showCustomFields": false + }, + "unitsOverrides": [ + { + "added": 1727678780356, + "baseUnit": "percent", + "decimals": 0, + "delimiter": true, + "displayUnit": null, + "identifier": "failureRate", + "suffix": "", + "unitCategory": "percentage" + } + ], + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "4": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"pipeline\" \n| filter event.type == \"run\" \n| filter event.status == \"finished\" \n| filter event.provider == \"github.com\" \n| fields vcs.repository.name, cicd.pipeline.name, cicd.pipeline.run.trigger, cicd.pipeline.run.outcome\n| filter in(vcs.repository.name, $Repository) \n| filter in(cicd.pipeline.name, $Workflow)\n| filter in(cicd.pipeline.run.trigger, $Trigger)\n| summarize failureRate = if(count() == 0, 0, else: toDouble(countIf(cicd.pipeline.run.outcome==\"failure\")) / toDouble(count())*100)", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "timeframe": { + "tileTimeframe": { + "from": "now()-7d", + "to": "now()" + }, + "tileTimeframeEnabled": false + }, + "title": "Error Rate", + "type": "data", + "visualization": "singleValue", + "visualizationSettings": { + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "failureRate" + ], + "categoryAxisLabel": "failureRate", + "tooltipVariant": "single", + "valueAxis": [ + "failureRate" + ], + "valueAxisLabel": "failureRate" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "relative" + }, + "curve": "linear", + "gapPolicy": "connect", + "legend": { + "hidden": true + }, + "pointsDisplay": "auto", + "truncationMode": "middle", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "displayedFields": [], + "longitude": "failureRate", + "value": "failureRate" + }, + "histogram": { + "dataMappings": [ + { + "rangeAxis": "", + "valueAxis": "failureRate" + } + ], + "displayedFields": [], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": {}, + "displayedFields": [], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "failureRate", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "isIconVisible": false, + "label": "failureRate", + "prefixIcon": "", + "recordField": "failureRate", + "showLabel": false, + "sparklineSettings": { + "isVisible": true + }, + "trend": { + "isLabelVisible": false, + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [ + { + "field": "failureRate", + "id": 1, + "isEnabled": true, + "rules": [ + { + "color": { + "Default": "var(--dt-colors-charts-status-ideal-default, #2f6863)" + }, + "comparator": "≤", + "id": 0, + "label": "", + "value": 0 + }, + { + "color": { + "Default": "var(--dt-colors-charts-status-warning-default, #eca440)" + }, + "comparator": "≥", + "id": 1, + "label": "" + }, + { + "color": { + "Default": "var(--dt-colors-charts-status-critical-default, #c4233b)" + }, + "comparator": "≥", + "id": 2, + "label": "", + "value": 0 + } + ], + "title": "" + } + ], + "tooltip": { + "showCustomFields": false + }, + "unitsOverrides": [ + { + "added": 1727678780356, + "baseUnit": "percent", + "decimals": 0, + "delimiter": true, + "displayUnit": null, + "identifier": "failureRate", + "suffix": "", + "unitCategory": "percentage" + } + ], + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "5": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"pipeline\" \n| filter event.type == \"run\" \n| filter event.status == \"finished\" \n| filter event.provider == \"github.com\" \n| filter cicd.pipeline.run.outcome != \"canceled\" \n| filter in(vcs.repository.name, $Repository) \n| filter in(cicd.pipeline.name, $Workflow) \n| filter in(cicd.pipeline.run.trigger, $Trigger)\n| summarize percentile(duration,50), alias:Median ,by:{cicd.pipeline.name, alias: name} \n| sort Median desc \n| limit 5", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "title": "Workflow Duration (p50) | Top 5", + "type": "data", + "visualization": "categoricalBarChart", + "visualizationSettings": { + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "name" + ], + "categoryAxisLabel": "name", + "colorPaletteMode": "multi-color", + "tooltipVariant": "single", + "valueAxis": [ + "Median" + ], + "valueAxisLabel": "Median" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "relative" + }, + "curve": "linear", + "gapPolicy": "connect", + "hiddenLegendFields": [], + "legend": { + "hidden": true + }, + "pointsDisplay": "auto", + "truncationMode": "middle", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "dimension": "name", + "displayedFields": [ + "name", + "Median" + ], + "longitude": "Median", + "value": "Median" + }, + "histogram": { + "dataMappings": [ + { + "rangeAxis": "", + "valueAxis": "Median" + } + ], + "displayedFields": [ + "name" + ], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": { + "value": "Median" + }, + "displayedFields": [ + "name" + ], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "Median", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "label": "error", + "prefixIcon": "", + "recordField": "error", + "showLabel": true, + "trend": { + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [], + "tooltip": { + "showCustomFields": false + }, + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "6": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"pipeline\" \n| filter event.type == \"run\" \n| filter event.status == \"finished\" \n| filter event.provider == \"github.com\" \n| filter in(vcs.repository.name, $Repository) \n| filter in(cicd.pipeline.name, $Workflow) \n| filter in(cicd.pipeline.run.trigger, $Trigger)\n| summarize failureRate = if(count() == 0, 0, else: toDouble(countIf(cicd.pipeline.run.outcome==\"failure\")) / toDouble(count())*100), by: {vcs.repository.name,cicd.pipeline.name }\n| filter failureRate\u003e0 \n| sort failureRate desc \n| limit 5", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "title": "Error-prune Workflows | Top 5", + "type": "data", + "visualization": "pieChart", + "visualizationSettings": { + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "vcs.repository.name", + "cicd.pipeline.name" + ], + "categoryAxisLabel": "vcs.repository.name,cicd.pipeline.name", + "colorPaletteMode": "multi-color", + "tooltipVariant": "single", + "valueAxis": [ + "failureRate" + ], + "valueAxisLabel": "failureRate" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "number-of-slices", + "groupingThresholdValue": 0, + "valueType": "absolute" + }, + "curve": "linear", + "gapPolicy": "connect", + "hiddenLegendFields": [], + "legend": { + "hidden": false, + "position": "auto" + }, + "pointsDisplay": "auto", + "truncationMode": "middle", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "dimension": "vcs.repository.name", + "displayedFields": [], + "longitude": "failureRate", + "value": "failureRate" + }, + "histogram": { + "dataMappings": [ + { + "rangeAxis": "", + "valueAxis": "failureRate" + } + ], + "displayedFields": [ + "vcs.repository.name", + "cicd.pipeline.name" + ], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": { + "value": "failureRate" + }, + "displayedFields": [ + "vcs.repository.name", + "cicd.pipeline.name" + ], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "failureRate", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "label": "error", + "prefixIcon": "", + "recordField": "error", + "showLabel": true, + "trend": { + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [], + "tooltip": { + "showCustomFields": false + }, + "unitsOverrides": [ + { + "added": 1727680127964, + "baseUnit": "percent", + "decimals": 0, + "delimiter": false, + "displayUnit": null, + "identifier": "failureRate", + "suffix": "", + "unitCategory": "percentage" + } + ], + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "7": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"task\" \n| filter event.status == \"finished\" \n| filter event.provider == \"github.com\" \n| join [\n fetch events \n | filter event.kind == \"SDLC_EVENT\" \n | filter event.category == \"pipeline\" \n | filter event.type == \"run\" \n | filter event.status == \"finished\" \n | fields cicd.pipeline.run.id, cicd.pipeline.name, vcs.repository.name, cicd.pipeline.run.trigger \n | filter in(vcs.repository.name, $Repository) \n | filter in(cicd.pipeline.name, $Workflow) \n | filter in(cicd.pipeline.run.trigger, $Trigger) ], \n on:{cicd.pipeline.run.id}\n| summarize failureRate=if(count() == 0, 0, else: toDouble(countIf(task.outcome==\"failure\")) / toDouble(count())*100), by: task.name \n| filter failureRate\u003e0 \n| sort failureRate desc \n| limit 5", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "title": "Error-prone Jobs | Top 5", + "type": "data", + "visualization": "pieChart", + "visualizationSettings": { + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxisLabel": "task.name", + "colorPaletteMode": "multi-color", + "tooltipVariant": "single", + "valueAxisLabel": "failureRate" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "absolute", + "groupingThresholdValue": 0, + "valueType": "absolute" + }, + "curve": "linear", + "gapPolicy": "connect", + "hiddenLegendFields": [], + "pointsDisplay": "auto", + "truncationMode": "middle", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "displayedFields": [] + }, + "histogram": { + "dataMappings": [], + "displayedFields": [], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": {}, + "displayedFields": [], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "label": "error", + "prefixIcon": "", + "recordField": "error", + "showLabel": true, + "trend": { + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": {}, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [], + "linewrapEnabled": false, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "condensed" + }, + "thresholds": [], + "tooltip": { + "showCustomFields": false + }, + "unitsOverrides": [ + { + "added": 1727680127964, + "baseUnit": "percent", + "decimals": 0, + "delimiter": false, + "displayUnit": null, + "identifier": "failureRate", + "suffix": "", + "unitCategory": "percentage" + } + ], + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + }, + "8": { + "davis": { + "davisVisualization": { + "isAvailable": true + }, + "enabled": false + }, + "query": "fetch events \n| filter event.kind == \"SDLC_EVENT\" \n| filter event.category == \"pipeline\" \n| filter event.type == \"run\" \n| filter event.status == \"finished\" \n| filter event.provider == \"github.com\" \n| filter in(vcs.repository.name, $Repository) \n| filter in(cicd.pipeline.name, $Workflow) \n| filter in(cicd.pipeline.run.trigger, $Trigger)\n| fields \nDuration = duration,\nName = cicd.pipeline.name,\nStatus = cicd.pipeline.run.outcome,\nRun = cicd.pipeline.run.url.full,\nAttempts = cicd.pipeline.run.attempt,\nTrigger = cicd.pipeline.run.trigger,\nStart = start_time,\nEnd = end_time,\nRepository = vcs.repository.name \n| sort Duration desc \n", + "querySettings": { + "defaultSamplingRatio": 10, + "defaultScanLimitGbytes": 500, + "enableSampling": false, + "maxResultMegaBytes": 1, + "maxResultRecords": 1000 + }, + "title": "Workflow Execution Details", + "type": "data", + "visualization": "table", + "visualizationSettings": { + "chartSettings": { + "categoricalBarChartSettings": { + "categoryAxis": [ + "Name", + "Status", + "Run", + "Trigger", + "Repository" + ], + "categoryAxisLabel": "Name,Status,Run,Trigger,Repository", + "colorPaletteMode": "multi-color", + "tooltipVariant": "single", + "valueAxis": [ + "Duration", + "Attempts" + ], + "valueAxisLabel": "Duration,Attempts" + }, + "categoryOverrides": {}, + "circleChartSettings": { + "groupingThresholdType": "relative", + "groupingThresholdValue": 0, + "valueType": "relative" + }, + "curve": "linear", + "fieldMapping": { + "leftAxisValues": [ + "Duration" + ], + "timestamp": "Start" + }, + "gapPolicy": "connect", + "hiddenLegendFields": [ + "Duration", + "Run_attempt", + "Attempts" + ], + "leftYAxisSettings": {}, + "pointsDisplay": "auto", + "truncationMode": "middle", + "valueRepresentation": "absolute", + "xAxisIsLabelVisible": false, + "xAxisLabel": "Start", + "xAxisScaling": "analyzedTimeframe" + }, + "dataMapping": { + "dimension": "Duration", + "displayedFields": [ + "Duration", + "Name", + "Status", + "Run", + "Attempts", + "Trigger", + "Start", + "End", + "Repository" + ], + "latitude": "Attempts", + "longitude": "Duration", + "value": "Attempts" + }, + "histogram": { + "dataMappings": [ + { + "rangeAxis": "", + "valueAxis": "Duration" + }, + { + "rangeAxis": "", + "valueAxis": "Attempts" + } + ], + "displayedFields": [ + "Name", + "Status", + "Run", + "Trigger", + "Repository" + ], + "variant": "single" + }, + "honeycomb": { + "colorMode": "color-palette", + "colorPalette": "blue", + "dataMappings": { + "value": "Duration" + }, + "displayedFields": [ + "Name", + "Status", + "Run", + "Trigger", + "Repository" + ], + "legend": { + "hidden": false, + "position": "auto" + }, + "shape": "hexagon" + }, + "icon": { + "icon": "", + "showIcon": false + }, + "label": { + "label": "Attempts", + "showLabel": false + }, + "singleValue": { + "alignment": "center", + "autoscale": true, + "colorThresholdTarget": "value", + "label": "error", + "prefixIcon": "", + "recordField": "error", + "showLabel": true, + "trend": { + "isVisible": true, + "trendType": "auto" + } + }, + "table": { + "columnTypeOverrides": [], + "columnWidths": { + "[\"Repository\"]": 273.09375, + "[\"RunUrl\"]": 346.84375 + }, + "enableSparklines": false, + "hiddenColumns": [], + "lineWrapIds": [ + [ + "RunUrl" + ] + ], + "linewrapEnabled": true, + "monospacedFontColumns": [], + "monospacedFontEnabled": false, + "rowDensity": "comfortable" + }, + "thresholds": [], + "tooltip": { + "showCustomFields": false + }, + "valueBoundaries": { + "max": "auto", + "min": "auto" + } + } + } + }, + "variables": [ + { + "defaultValue": [ + "{{ .extractedIDs.id_3420b2ac_f1cf_4b24_b62d_61ba1ba8ed05 }}*" + ], + "input": "fetch events\n| filter event.category == \"pipeline\" and event.status == \"finished\" and event.provider==\"github.com\" and event.type == \"run\"\n| summarize distinctRepositories = collectDistinct(vcs.repository.name)\n| expand distinctRepositories\n| sort distinctRepositories", + "key": "Repository", + "multiple": true, + "type": "query", + "visible": true + }, + { + "defaultValue": [ + "{{ .extractedIDs.id_3420b2ac_f1cf_4b24_b62d_61ba1ba8ed05 }}*" + ], + "input": "fetch events\n| filter event.category == \"pipeline\" and event.status == \"finished\" and event.provider==\"github.com\" and event.type == \"run\"\n| filter in(vcs.repository.name, $Repository)\n| summarize distinctWorkflows = collectDistinct(cicd.pipeline.name)\n| expand distinctWorkflows\n| sort distinctWorkflows", + "key": "Workflow", + "multiple": true, + "type": "query", + "visible": true + }, + { + "defaultValue": [ + "{{ .extractedIDs.id_3420b2ac_f1cf_4b24_b62d_61ba1ba8ed05 }}*" + ], + "input": "fetch events\n| filter event.category == \"pipeline\" and event.status == \"finished\" and event.provider==\"github.com\" and event.type == \"run\"\n| summarize distinctTriggers = collectDistinct(cicd.pipeline.run.trigger)\n| expand distinctTriggers\n| sort distinctTriggers", + "key": "Trigger", + "multiple": true, + "type": "query", + "visible": true + } + ], + "version": 17 +} \ No newline at end of file diff --git a/github_pipeline_observability/pipeline_observability/openpipeline/config.yaml b/github_pipeline_observability/pipeline_observability/openpipeline/config.yaml new file mode 100644 index 0000000..fc57296 --- /dev/null +++ b/github_pipeline_observability/pipeline_observability/openpipeline/config.yaml @@ -0,0 +1,13 @@ +configs: +- id: events.sdlc + config: + parameters: + extractedIDs: + type: value + value: + id_9ecd9ce4_ad89_4aa8_af7b_ebb7daf55435: 9ecd9ce4-ad89-4aa8-af7b-ebb7daf55435 + template: events.sdlc.github.json + skip: false + type: + openpipeline: + kind: events.sdlc \ No newline at end of file diff --git a/github_pipeline_observability/pipeline_observability/openpipeline/events.sdlc.github.json b/github_pipeline_observability/pipeline_observability/openpipeline/events.sdlc.github.json new file mode 100644 index 0000000..9f2ad84 --- /dev/null +++ b/github_pipeline_observability/pipeline_observability/openpipeline/events.sdlc.github.json @@ -0,0 +1,955 @@ +{ + "customBasePath": "/platform/ingest/custom/events.sdlc", + "editable": true, + "endpoints": [ + { + "basePath": "/platform/ingest/custom/events.sdlc", + "builtin": false, + "defaultBucket": "default_events", + "displayName": "GitHub", + "editable": true, + "enabled": true, + "processors": [ + { + "builtin": false, + "description": "Set event.id to a unique identifier", + "dqlScript": "fieldsAdd event.id = hashSha1(concat(toString(toLong(now())), toString(RANDOM())))", + "editable": true, + "enabled": true, + "id": "github:event_id_1213", + "matcher": "isNull(event.id)", + "sampleData": "{\n \"action\": \"completed\",\n \"workflow_job\": {\n \"id\": 9772103168,\n \"name\": \"CI\",\n \"head_branch\": \"main\",\n \"head_sha\": \"f75d1d8f0e8b140da41511997b6ad1ccd6dfc6be\",\n \"run_number\": 5579,\n \"event\": \"schedule\",\n \"status\": \"completed\",\n \"conclusion\": \"success\",\n \"created_at\": \"2024-07-03T04:58:10Z\",\n \"updated_at\": \"2024-07-03T04:58:13Z\", \n \"pull_requests\": []\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "Set default SDLC and pipeline properties", + "dqlScript": "fieldsAdd \nevent.kind = \"SDLC_EVENT\", \nevent.version = \"0.1.0\",\nevent.provider = \"github.com\",\nevent.category = \"pipeline\",\nevent.type = \"run\"", + "editable": true, + "enabled": true, + "id": "github:sdlc_pipeline_properties_9061", + "matcher": "isNotNull(workflow_run)", + "sampleData": "{\n \"action\": \"completed\",\n \"workflow_run\": {\n \"id\": 9772103168,\n \"name\": \"CI\",\n \"head_branch\": \"main\",\n \"head_sha\": \"f75d1d8f0e8b140da41511997b6ad1ccd6dfc6be\",\n \"run_number\": 5579,\n \"event\": \"schedule\",\n \"status\": \"completed\",\n \"conclusion\": \"success\",\n \"created_at\": \"2024-07-03T04:58:10Z\",\n \"updated_at\": \"2024-07-03T04:58:13Z\", \n \"pull_requests\": []\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "Set default SDLC and task properties", + "dqlScript": "fieldsAdd \nevent.kind = \"SDLC_EVENT\", \nevent.version = \"0.1.0\",\nevent.provider = \"github.com\",\nevent.category = \"task\",\nevent.type = \"build\"", + "editable": true, + "enabled": true, + "id": "github:sdlc_build_task_properties_1775", + "matcher": "isNotNull(workflow_job)", + "sampleData": "{\n \"action\": \"completed\",\n \"workflow_job\": {\n \"id\": 9772103168,\n \"name\": \"CI\",\n \"head_branch\": \"main\",\n \"head_sha\": \"f75d1d8f0e8b140da41511997b6ad1ccd6dfc6be\",\n \"run_number\": 5579,\n \"event\": \"schedule\",\n \"status\": \"completed\",\n \"conclusion\": \"success\",\n \"created_at\": \"2024-07-03T04:58:10Z\",\n \"updated_at\": \"2024-07-03T04:58:13Z\", \n \"pull_requests\": []\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "Set default SDLC properties and type to change", + "dqlScript": "fieldsAdd \nevent.kind = \"SDLC_EVENT\", \nevent.version = \"0.1.0\",\nevent.provider = \"github.com\",\nevent.category = \"task\",\nevent.type = \"change\"", + "editable": true, + "enabled": true, + "id": "github:sdlc_change_type_properties_2135", + "matcher": "isNotNull(pull_request)", + "sampleData": "{\n \"action\": \"closed\",\n \"number\": \"40\",\n \"pull_request\": {\n \"url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40\",\n \"id\": 2046146154,\n \"node_id\": \"PR_kwDOJ52pds559bZq\",\n \"html_url\": \"https://github.com/cookie-base/webapp/pull/40\",\n \"diff_url\": \"https://github.com/cookie-base/webapp/pull/40.diff\",\n \"patch_url\": \"https://github.com/cookie-base/webapp/pull/40.patch\",\n \"issue_url\": \"https://api.github.com/repos/cookie-base/webapp/issues/40\",\n \"number\": 40,\n \"state\": \"closed\",\n \"locked\": false,\n \"title\": \"refactor appButton \u0026 domain view\",\n \"user\": {\n \"login\": \"github-user\",\n \"id\": 48052206,\n \"node_id\": \"MDQ6VXNlcjQ4MDUyMjA2\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/48052206?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"body\": null,\n \"created_at\": \"2024-08-30T11:09:46Z\",\n \"updated_at\": \"2024-09-05T10:07:02Z\",\n \"closed_at\": \"2024-09-05T10:07:02Z\",\n \"merged_at\": \"2024-09-05T10:07:02Z\",\n \"merge_commit_sha\": \"a4372955f3030b9f2bfb3baee217a3717ad4b9e7\",\n \"assignee\": null,\n \"assignees\": [],\n \"requested_reviewers\": [],\n \"requested_teams\": [],\n \"labels\": [],\n \"milestone\": null,\n \"draft\": false,\n \"commits_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40/commits\",\n \"review_comments_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40/comments\",\n \"review_comment_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/comments{/number}\",\n \"comments_url\": \"https://api.github.com/repos/cookie-base/webapp/issues/40/comments\",\n \"statuses_url\": \"https://api.github.com/repos/cookie-base/webapp/statuses/0f9c9c500ec802c75bf17ac77a318af1a5be8c94\",\n \"author_association\": \"COLLABORATOR\",\n \"auto_merge\": null,\n \"active_lock_reason\": null,\n \"merged\": true,\n \"mergeable\": null,\n \"rebaseable\": null,\n \"mergeable_state\": \"unknown\",\n \"merged_by\": {\n \"login\": \"github-user\",\n \"id\": 9966695,\n \"node_id\": \"MDQ6VXNlcjk5NjY2OTU=\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/9966695?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"comments\": 0,\n \"review_comments\": 0,\n \"maintainer_can_modify\": false,\n \"commits\": 1,\n \"additions\": 771,\n \"deletions\": 628,\n \"changed_files\": 26\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "Cleanup", + "editable": true, + "enabled": false, + "fields": [ + "action", + "installation", + "repository", + "sender", + "workflow", + "workflow_job", + "workflow_run", + "pull_request" + ], + "id": "github:clean_up_github_properties_8323", + "matcher": "isNotNull(workflow_run) or isNotNull(workflow_job) or isNotNull(pull_request)", + "sampleData": "{\n \"action\": \"closed\",\n \"number\": \"40\",\n \"pull_request\": {\n \"url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40\",\n \"id\": 2046146154,\n \"node_id\": \"PR_kwDOJ52pds559bZq\",\n \"html_url\": \"https://github.com/cookie-base/webapp/pull/40\",\n \"diff_url\": \"https://github.com/cookie-base/webapp/pull/40.diff\",\n \"patch_url\": \"https://github.com/cookie-base/webapp/pull/40.patch\",\n \"issue_url\": \"https://api.github.com/repos/cookie-base/webapp/issues/40\",\n \"number\": 40,\n \"state\": \"closed\",\n \"locked\": false,\n \"title\": \"refactor appButton \u0026 domain view\",\n \"user\": {\n \"login\": \"github-user\",\n \"id\": 48052206,\n \"node_id\": \"MDQ6VXNlcjQ4MDUyMjA2\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/48052206?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"body\": null,\n \"created_at\": \"2024-08-30T11:09:46Z\",\n \"updated_at\": \"2024-09-05T10:07:02Z\",\n \"closed_at\": \"2024-09-05T10:07:02Z\",\n \"merged_at\": \"2024-09-05T10:07:02Z\",\n \"merge_commit_sha\": \"a4372955f3030b9f2bfb3baee217a3717ad4b9e7\",\n \"assignee\": null,\n \"assignees\": [],\n \"requested_reviewers\": [],\n \"requested_teams\": [],\n \"labels\": [],\n \"milestone\": null,\n \"draft\": false,\n \"commits_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40/commits\",\n \"review_comments_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40/comments\",\n \"review_comment_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/comments{/number}\",\n \"comments_url\": \"https://api.github.com/repos/cookie-base/webapp/issues/40/comments\",\n \"statuses_url\": \"https://api.github.com/repos/cookie-base/webapp/statuses/0f9c9c500ec802c75bf17ac77a318af1a5be8c94\",\n \"author_association\": \"COLLABORATOR\",\n \"auto_merge\": null,\n \"active_lock_reason\": null,\n \"merged\": true,\n \"mergeable\": null,\n \"rebaseable\": null,\n \"mergeable_state\": \"unknown\",\n \"merged_by\": {\n \"login\": \"github-user\",\n \"id\": 9966695,\n \"node_id\": \"MDQ6VXNlcjk5NjY2OTU=\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/9966695?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"comments\": 0,\n \"review_comments\": 0,\n \"maintainer_can_modify\": false,\n \"commits\": 1,\n \"additions\": 771,\n \"deletions\": 628,\n \"changed_files\": 26\n }\n}", + "type": "fieldsRemove" + } + ], + "routing": { + "type": "dynamic" + }, + "segment": "github" + }, + { + "basePath": "/platform/ingest/v1/events.sdlc", + "builtin": true, + "defaultBucket": "default_events", + "displayName": "Endpoint for Software Development Lifecycle events", + "editable": false, + "enabled": true, + "processors": [ + { + "builtin": true, + "description": "sdlc event default fields", + "editable": false, + "enabled": true, + "fields": [ + { + "name": "event.kind", + "value": "SDLC_EVENT" + } + ], + "id": "sdlc:ingest_enrichment_map", + "matcher": "true", + "sampleData": "", + "type": "fieldsAdd" + }, + { + "builtin": true, + "description": "Sets start_time to end_time", + "dqlScript": "fieldsAdd start_time = end_time", + "editable": false, + "enabled": true, + "id": "sdlc:start_time_to_end_time_processor", + "matcher": "isNull(start_time) AND isNotNull(end_time)", + "sampleData": "", + "type": "dql" + }, + { + "builtin": true, + "description": "Sets start_time to current timestamp", + "dqlScript": "fieldsAdd start_time = now()", + "editable": false, + "enabled": true, + "id": "sdlc:start_time_processor", + "matcher": "isNull(start_time) AND isNull(end_time)", + "sampleData": "", + "type": "dql" + }, + { + "builtin": true, + "description": "Sets end_time to start_time", + "dqlScript": "fieldsAdd end_time = start_time", + "editable": false, + "enabled": true, + "id": "sdlc:end_time_to_start_time_processor", + "matcher": "isNull(end_time) AND isNotNull(start_time)", + "sampleData": "", + "type": "dql" + }, + { + "builtin": true, + "description": "Sets event.id to a unique identifier", + "dqlScript": "fieldsAdd event.id = hashSha1(concat(toString(toLong(now())), toString(RANDOM())))", + "editable": false, + "enabled": true, + "id": "sdlc:event_id_processor", + "matcher": "isNull(event.id)", + "sampleData": "", + "type": "dql" + }, + { + "builtin": true, + "description": "Sets event.category to pipeline if conditions match", + "dqlScript": "fieldsAdd event.category = \"pipeline\"", + "editable": false, + "enabled": true, + "id": "sdlc:event_category_pipeline_processor", + "matcher": "isNull(event.category) AND (isNotNull(pipeline.id) AND isNull(task.id))", + "sampleData": "", + "type": "dql" + }, + { + "builtin": true, + "description": "Sets event.category to task if conditions match", + "dqlScript": "fieldsAdd event.category = \"task\"", + "editable": false, + "enabled": true, + "id": "sdlc:event_category_task_processor", + "matcher": "isNull(event.category) AND (isNotNull(task.id) OR (isNull(task.id) AND isNull(pipeline.id)))", + "sampleData": "", + "type": "dql" + } + ], + "routing": { + "type": "dynamic" + }, + "segment": "" + } + ], + "id": "events.sdlc", + "pipelines": [ + { + "builtin": false, + "dataExtraction": { + "editable": true, + "processors": [] + }, + "displayName": "github-workflow", + "editable": true, + "enabled": true, + "id": "github:workflow_6504", + "metricExtraction": { + "editable": true, + "processors": [ + { + "builtin": false, + "description": "Number of workflow events", + "dimensions": [ + "event.status", + "cicd.pipeline.name", + "ext.pipeline.head_branch", + "event.provider", + "event.category", + "event.type", + "vcs.repository.ref.name" + ], + "editable": true, + "enabled": true, + "id": "github:workflows:number_of_pipeline_events_6061", + "matcher": "true", + "metricKey": "events.sdlc.pipelines", + "sampleData": null, + "type": "counterMetric" + }, + { + "builtin": false, + "description": "Number of finished workflows", + "dimensions": [ + "event.status", + "cicd.pipeline.name", + "ext.pipeline.head_branch", + "event.provider", + "event.category", + "event.type", + "vcs.repository.ref.name" + ], + "editable": true, + "enabled": true, + "id": "github:workflows:runs_finished_4612", + "matcher": "//isNotNull(workflow_run) AND\nevent.status == \"finished\"", + "metricKey": "events.sdlc.finished_pipelines", + "sampleData": null, + "type": "counterMetric" + }, + { + "builtin": false, + "description": "Duration of finished workflows", + "dimensions": [ + "event.status", + "cicd.pipeline.name", + "event.provider", + "event.category", + "event.type", + "vcs.repository.ref.name", + "ext.pipeline.head_branch" + ], + "editable": true, + "enabled": true, + "field": "duration", + "id": "github:workflows:run_duration_2861", + "matcher": "//isNotNull(workflow_run) AND\nevent.status == \"finished\"", + "metricKey": "events.sdlc.pipeline_duration", + "sampleData": null, + "type": "valueMetric" + } + ] + }, + "processing": { + "editable": true, + "processors": [ + { + "builtin": false, + "description": "event.status", + "dqlScript": "parse workflow_run, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{status} \n| fieldsAdd if(status == \"in_progress\", \"started\", else: if(status == \"completed\", \"finished\", else: status)), alias: event.status\n| fieldsRemove record_json", + "editable": true, + "enabled": true, + "id": "github:workflow:event.status_1279", + "matcher": "isNotNull(workflow_run)", + "sampleData": "{\n \"workflow_run\": {\n \"id\": 9772103168,\n \"name\": \"CI\",\n \"head_branch\": \"main\",\n \"head_sha\": \"f75d1d8f0e8b140da41511997b6ad1ccd6dfc6be\",\n \"run_number\": 5579,\n \"event\": \"schedule\",\n \"status\": \"completed\",\n \"created_at\": \"2024-07-03T04:58:10Z\",\n \"updated_at\": \"2024-07-03T04:58:13Z\", \n \"pull_requests\": []\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "duration", + "dqlScript": "parse workflow_run, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{updated_at, run_started_at, status} \n| fieldsAdd if((updated_at \u003e run_started_at) and event.status == \"finished\", toTimestamp(updated_at) - toTimestamp(run_started_at), else: toDuration(0)), alias: duration\n| fieldsRemove record_json, status, updated_at, run_started_at", + "editable": true, + "enabled": true, + "id": "github:workflow:duration_3758", + "matcher": "isNotNull(workflow_run)", + "sampleData": "{\n \"event.status\": \"finished\",\n \"workflow_run\": {\n \"id\": 9772103168,\n \"name\": \"CI\",\n \"node_id\": \"WFR_kwLOKbUdvs8AAAACRnZ2AA\",\n \"head_branch\": \"main\",\n \"head_sha\": \"f75d1d8f0e8b140da41511997b6ad1ccd6dfc6be\",\n \"path\": \".github/workflows/blank.yml\",\n \"display_title\": \"CI\",\n \"run_number\": 5579,\n \"event\": \"schedule\",\n \"status\": \"completed\",\n \"conclusion\": \"failure\",\n \"workflow_id\": 71372937,\n \"check_suite_id\": 25579305967,\n \"check_suite_node_id\": \"CS_kwDOKbUdvs8AAAAF9KU77w\",\n \"url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168\",\n \"html_url\": \"https://github.com/github-org/actionspipeline/actions/runs/9772103168\",\n \"pull_requests\": [],\n \"created_at\": \"2024-07-03T04:58:03Z\",\n \"updated_at\": \"2024-07-03T04:58:13Z\",\n \"run_attempt\": 1,\n \"referenced_workflows\": [],\n \"run_started_at\": \"2024-07-03T04:58:03Z\"\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "start_time", + "dqlScript": "parse workflow_run, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{created_at} \n| fieldsAdd start_time = toTimestamp(created_at)\n| fieldsRemove record_json, created_at", + "editable": true, + "enabled": true, + "id": "github:workflow:start_time_8369", + "matcher": "isNotNull(workflow_run) //and event.status == \"started\"", + "sampleData": "{\n \"event.status\": \"started\",\n \"workflow_run\": {\n \"id\": 9772103168,\n \"name\": \"CI\",\n \"node_id\": \"WFR_kwLOKbUdvs8AAAACRnZ2AA\",\n \"head_branch\": \"main\",\n \"head_sha\": \"f75d1d8f0e8b140da41511997b6ad1ccd6dfc6be\",\n \"path\": \".github/workflows/blank.yml\",\n \"display_title\": \"CI\",\n \"run_number\": 5579,\n \"event\": \"schedule\",\n \"status\": \"queued\",\n \"conclusion\": null,\n \"workflow_id\": 71372937,\n \"check_suite_id\": 25579305967,\n \"check_suite_node_id\": \"CS_kwDOKbUdvs8AAAAF9KU77w\",\n \"url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168\",\n \"html_url\": \"https://github.com/github-org/actionspipeline/actions/runs/9772103168\",\n \"pull_requests\": [],\n \"created_at\": \"2024-07-03T04:58:03Z\",\n \"updated_at\": \"2024-07-03T04:58:03Z\",\n \"run_attempt\": 1,\n \"referenced_workflows\": [],\n \"run_started_at\": \"2024-07-03T04:58:03Z\",\n \"jobs_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/jobs\",\n \"logs_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/logs\",\n \"check_suite_url\": \"https://api.github.com/repos/github-org/actionspipeline/check-suites/25579305967\",\n \"artifacts_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/artifacts\",\n \"cancel_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/cancel\",\n \"rerun_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/rerun\",\n \"previous_attempt_url\": null,\n \"workflow_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/workflows/71372937\"\n },\n \"workflow\": {\n \"id\": 71372937,\n \"node_id\": \"W_kwDOKbUdvs4EQRCJ\",\n \"name\": \"CI\",\n \"path\": \".github/workflows/blank.yml\",\n \"state\": \"active\",\n \"created_at\": \"2023-10-03T08:33:53.000Z\",\n \"updated_at\": \"2024-06-06T05:09:52.000Z\",\n \"url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/workflows/71372937\",\n \"html_url\": \"https://github.com/github-org/actionspipeline/blob/main/.github/workflows/blank.yml\",\n \"badge_url\": \"https://github.com/github-org/actionspipeline/workflows/CI/badge.svg\"\n }\n }", + "type": "dql" + }, + { + "builtin": false, + "description": "end_time", + "dqlScript": "parse workflow_run, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{updated_at} \n| fieldsAdd end_time = toTimestamp(updated_at)\n| fieldsRemove record_json, updated_at", + "editable": true, + "enabled": true, + "id": "github:workflow:end_time_1541", + "matcher": "isNotNull(workflow_run) and event.status == \"finished\"", + "sampleData": "{\n \"event.status\": \"finished\",\n \"workflow_run\": {\n \"id\": 9772103168,\n \"name\": \"CI\",\n \"node_id\": \"WFR_kwLOKbUdvs8AAAACRnZ2AA\",\n \"head_branch\": \"main\",\n \"head_sha\": \"f75d1d8f0e8b140da41511997b6ad1ccd6dfc6be\",\n \"path\": \".github/workflows/blank.yml\",\n \"display_title\": \"CI\",\n \"run_number\": 5579,\n \"event\": \"schedule\",\n \"status\": \"queued\",\n \"conclusion\": null,\n \"workflow_id\": 71372937,\n \"check_suite_id\": 25579305967,\n \"check_suite_node_id\": \"CS_kwDOKbUdvs8AAAAF9KU77w\",\n \"url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168\",\n \"html_url\": \"https://github.com/github-org/actionspipeline/actions/runs/9772103168\",\n \"pull_requests\": [],\n \"created_at\": \"2024-07-03T04:58:03Z\",\n \"updated_at\": \"2024-07-03T04:58:03Z\",\n \"run_attempt\": 1,\n \"referenced_workflows\": [],\n \"run_started_at\": \"2024-07-03T04:58:03Z\",\n \"jobs_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/jobs\",\n \"logs_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/logs\",\n \"check_suite_url\": \"https://api.github.com/repos/github-org/actionspipeline/check-suites/25579305967\",\n \"artifacts_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/artifacts\",\n \"cancel_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/cancel\",\n \"rerun_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/rerun\",\n \"previous_attempt_url\": null,\n \"workflow_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/workflows/71372937\"\n },\n \"workflow\": {\n \"id\": 71372937,\n \"node_id\": \"W_kwDOKbUdvs4EQRCJ\",\n \"name\": \"CI\",\n \"path\": \".github/workflows/blank.yml\",\n \"state\": \"active\",\n \"created_at\": \"2023-10-03T08:33:53.000Z\",\n \"updated_at\": \"2024-06-06T05:09:52.000Z\",\n \"url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/workflows/71372937\",\n \"html_url\": \"https://github.com/github-org/actionspipeline/blob/main/.github/workflows/blank.yml\",\n \"badge_url\": \"https://github.com/github-org/actionspipeline/workflows/CI/badge.svg\"\n }\n }", + "type": "dql" + }, + { + "builtin": false, + "description": "timestamp", + "dqlScript": "parse workflow_run, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{updated_at} \n| fieldsAdd dif2h = toLong(7200000000000)\n| fieldsAdd nt = toLong(toTimestamp(now()))\n| fieldsAdd if(nt - toLong(toTimestamp(start_time)) \u003c dif2h, start_time, else: toTimestamp(nt)), alias: st\n| fieldsAdd if(nt - toLong(toTimestamp(end_time)) \u003c dif2h, end_time, else: toTimestamp(nt)), alias: et\n| fieldsAdd if(nt - toLong(toTimestamp(updated_at)) \u003c dif2h, updated_at, else: toTimestamp(nt)), alias: ut\n| fieldsAdd if(event.status == \"started\", st, else: if(event.status == \"finished\", et, else: ut)), alias: timestamp\n| fieldsRemove record_json, updated_at, st, et, ut, nt, dif2h", + "editable": true, + "enabled": true, + "id": "github:workflow:timestamp_3154", + "matcher": "isNotNull(workflow_run) ", + "sampleData": "{\n \"start_time\": \"2024-10-04T13:30:00.01Z\",\n \"end_time\": \"2024-10-04T13:40:00.00Z\",\n \"event.status\": \"other\",\n \"workflow_run\": {\n \"id\": 9772103168,\n \"name\": \"CI\",\n \"node_id\": \"WFR_kwLOKbUdvs8AAAACRnZ2AA\",\n \"head_branch\": \"main\",\n \"head_sha\": \"f75d1d8f0e8b140da41511997b6ad1ccd6dfc6be\",\n \"path\": \".github/workflows/blank.yml\",\n \"display_title\": \"CI\",\n \"run_number\": 5579,\n \"event\": \"schedule\",\n \"status\": \"queued\",\n \"conclusion\": null,\n \"workflow_id\": 71372937,\n \"check_suite_id\": 25579305967,\n \"check_suite_node_id\": \"CS_kwDOKbUdvs8AAAAF9KU77w\",\n \"url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168\",\n \"html_url\": \"https://github.com/github-org/actionspipeline/actions/runs/9772103168\",\n \"pull_requests\": [],\n \"created_at\": \"2024-07-03T04:58:03Z\",\n \"updated_at\": \"2024-10-04T13:35:00.00Z\",\n \"run_attempt\": 1,\n \"referenced_workflows\": [],\n \"run_started_at\": \"2024-07-03T04:58:03Z\",\n \"jobs_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/jobs\",\n \"logs_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/logs\",\n \"check_suite_url\": \"https://api.github.com/repos/github-org/actionspipeline/check-suites/25579305967\",\n \"artifacts_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/artifacts\",\n \"cancel_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/cancel\",\n \"rerun_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/rerun\",\n \"previous_attempt_url\": null,\n \"workflow_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/workflows/71372937\"\n },\n \"workflow\": {\n \"id\": 71372937,\n \"node_id\": \"W_kwDOKbUdvs4EQRCJ\",\n \"name\": \"CI\",\n \"path\": \".github/workflows/blank.yml\",\n \"state\": \"active\",\n \"created_at\": \"2023-10-03T08:33:53.000Z\",\n \"updated_at\": \"2024-06-06T05:09:52.000Z\",\n \"url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/workflows/71372937\",\n \"html_url\": \"https://github.com/github-org/actionspipeline/blob/main/.github/workflows/blank.yml\",\n \"badge_url\": \"https://github.com/github-org/actionspipeline/workflows/CI/badge.svg\"\n }\n }", + "type": "dql" + }, + { + "builtin": false, + "description": "cicd.pipeline.id | name | url.full", + "dqlScript": "parse workflow, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{id, name, html_url} \n| fieldsRename cicd.pipeline.id = id\n| fieldsRename cicd.pipeline.name = name\n| fieldsRename cicd.pipeline.url.full = html_url\n| fieldsRemove record_json", + "editable": true, + "enabled": true, + "id": "github:workflow:pipeline.id_name_url_6138", + "matcher": "isNotNull(workflow_run) and isNotNull(workflow)", + "sampleData": "{\n \"workflow_run\": {\n \"id\": 9772103168,\n \"name\": \"CI\",\n \"node_id\": \"WFR_kwLOKbUdvs8AAAACRnZ2AA\",\n \"head_branch\": \"main\",\n \"head_sha\": \"f75d1d8f0e8b140da41511997b6ad1ccd6dfc6be\",\n \"path\": \".github/workflows/blank.yml\",\n \"display_title\": \"CI\",\n \"run_number\": 5579,\n \"event\": \"schedule\",\n \"status\": \"queued\",\n \"conclusion\": null,\n \"workflow_id\": 71372937,\n \"check_suite_id\": 25579305967,\n \"check_suite_node_id\": \"CS_kwDOKbUdvs8AAAAF9KU77w\",\n \"url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168\",\n \"html_url\": \"https://github.com/github-org/actionspipeline/actions/runs/9772103168\",\n \"pull_requests\": [],\n \"created_at\": \"2024-07-03T04:58:03Z\",\n \"updated_at\": \"2024-07-03T04:58:03Z\",\n \"run_attempt\": 1,\n \"referenced_workflows\": [],\n \"run_started_at\": \"2024-07-03T04:58:03Z\",\n \"jobs_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/jobs\",\n \"logs_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/logs\",\n \"check_suite_url\": \"https://api.github.com/repos/github-org/actionspipeline/check-suites/25579305967\",\n \"artifacts_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/artifacts\",\n \"cancel_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/cancel\",\n \"rerun_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/rerun\",\n \"previous_attempt_url\": null,\n \"workflow_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/workflows/71372937\"\n },\n \"workflow\": {\n \"id\": 71372937,\n \"node_id\": \"W_kwDOKbUdvs4EQRCJ\",\n \"name\": \"CI\",\n \"path\": \".github/workflows/blank.yml\",\n \"state\": \"active\",\n \"created_at\": \"2023-10-03T08:33:53.000Z\",\n \"updated_at\": \"2024-06-06T05:09:52.000Z\",\n \"url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/workflows/71372937\",\n \"html_url\": \"https://github.com/github-org/actionspipeline/blob/main/.github/workflows/blank.yml\",\n \"badge_url\": \"https://github.com/github-org/actionspipeline/workflows/CI/badge.svg\"\n }\n }", + "type": "dql" + }, + { + "builtin": false, + "description": "cicd.pipeline.run.id | url.full", + "dqlScript": "parse workflow_run, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{id, html_url} \n| fieldsRename cicd.pipeline.run.id = id\n| fieldsRename cicd.pipeline.run.url.full = html_url\n| fieldsRemove record_json", + "editable": true, + "enabled": true, + "id": "github:workflow:pipeline.run.id_url_5049", + "matcher": "isNotNull(workflow_run)", + "sampleData": "{\n \"workflow_run\": {\n \"id\": 9772103168,\n \"name\": \"CI\",\n \"node_id\": \"WFR_kwLOKbUdvs8AAAACRnZ2AA\",\n \"head_branch\": \"main\",\n \"head_sha\": \"f75d1d8f0e8b140da41511997b6ad1ccd6dfc6be\",\n \"path\": \".github/workflows/blank.yml\",\n \"display_title\": \"CI\",\n \"run_number\": 5579,\n \"event\": \"schedule\",\n \"status\": \"queued\",\n \"conclusion\": null,\n \"workflow_id\": 71372937,\n \"check_suite_id\": 25579305967,\n \"check_suite_node_id\": \"CS_kwDOKbUdvs8AAAAF9KU77w\",\n \"url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168\",\n \"html_url\": \"https://github.com/github-org/actionspipeline/actions/runs/9772103168\",\n \"pull_requests\": [],\n \"created_at\": \"2024-07-03T04:58:03Z\",\n \"updated_at\": \"2024-07-03T04:58:03Z\",\n \"run_attempt\": 1,\n \"referenced_workflows\": [],\n \"run_started_at\": \"2024-07-03T04:58:03Z\",\n \"jobs_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/jobs\",\n \"logs_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/logs\",\n \"check_suite_url\": \"https://api.github.com/repos/github-org/actionspipeline/check-suites/25579305967\",\n \"artifacts_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/artifacts\",\n \"cancel_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/cancel\",\n \"rerun_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/rerun\",\n \"previous_attempt_url\": null,\n \"workflow_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/workflows/71372937\"\n },\n \"workflow\": {\n \"id\": 71372937,\n \"node_id\": \"W_kwDOKbUdvs4EQRCJ\",\n \"name\": \"CI\",\n \"path\": \".github/workflows/blank.yml\",\n \"state\": \"active\",\n \"created_at\": \"2023-10-03T08:33:53.000Z\",\n \"updated_at\": \"2024-06-06T05:09:52.000Z\",\n \"url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/workflows/71372937\",\n \"html_url\": \"https://github.com/github-org/actionspipeline/blob/main/.github/workflows/blank.yml\",\n \"badge_url\": \"https://github.com/github-org/actionspipeline/workflows/CI/badge.svg\"\n }\n }", + "type": "dql" + }, + { + "builtin": false, + "description": "cicd.pipeline.run.trigger | run_attempt", + "dqlScript": "parse workflow_run, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{event, run_attempt} \n| fieldsRename cicd.pipeline.run.trigger = event\n| fieldsRename cicd.pipeline.run.attempt = run_attempt\n| fieldsRemove record_json", + "editable": true, + "enabled": true, + "id": "github:workflow:ext.pipeline.run.trigger_run_attempt_9871", + "matcher": "isNotNull(workflow_run) ", + "sampleData": "{\n \"action\": \"completed\",\n \"workflow_run\": {\n \"id\": 9772103168,\n \"name\": \"CI\",\n \"node_id\": \"WFR_kwLOKbUdvs8AAAACRnZ2AA\",\n \"head_branch\": \"main\",\n \"head_sha\": \"f75d1d8f0e8b140da41511997b6ad1ccd6dfc6be\",\n \"path\": \".github/workflows/blank.yml\",\n \"display_title\": \"CI\",\n \"run_number\": 5579,\n \"event\": \"schedule\",\n \"status\": \"completed\",\n \"conclusion\": \"failure\",\n \"workflow_id\": 71372937,\n \"check_suite_id\": 25579305967,\n \"check_suite_node_id\": \"CS_kwDOKbUdvs8AAAAF9KU77w\",\n \"url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168\",\n \"html_url\": \"https://github.com/github-org/actionspipeline/actions/runs/9772103168\",\n \"pull_requests\": [],\n \"created_at\": \"2024-07-03T04:58:03Z\",\n \"updated_at\": \"2024-07-03T04:58:13Z\",\n \"actor\": {\n \"login\": \"github-user\",\n \"id\": 33230145,\n \"node_id\": \"MDQ6VXNlcjMzMjMwMTQ1\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/33230145?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"run_attempt\": 1,\n \"referenced_workflows\": [],\n \"run_started_at\": \"2024-07-03T04:58:03Z\",\n \"triggering_actor\": {\n \"login\": \"github-user\",\n \"id\": 33230145,\n \"node_id\": \"MDQ6VXNlcjMzMjMwMTQ1\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/33230145?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"jobs_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/jobs\",\n \"logs_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/logs\",\n \"check_suite_url\": \"https://api.github.com/repos/github-org/actionspipeline/check-suites/25579305967\",\n \"artifacts_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/artifacts\",\n \"cancel_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/cancel\",\n \"rerun_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/rerun\",\n \"previous_attempt_url\": null,\n \"workflow_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/workflows/71372937\",\n \"head_commit\": {\n \"id\": \"f75d1d8f0e8b140da41511997b6ad1ccd6dfc6be\",\n \"tree_id\": \"798bccf57b1a72055abdb090c65c6bb69e9ca698\",\n \"message\": \"Update blank.yml\",\n \"timestamp\": \"2024-06-06T05:35:42Z\",\n \"author\": {\n \"name\": \"github-user\",\n \"email\": \"33230145+github-user@users.noreply.github.com\"\n },\n \"committer\": {\n \"name\": \"GitHub\",\n \"email\": \"noreply@github.com\"\n }\n }\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "cicd.pipeline.run.outcome", + "dqlScript": "parse workflow_run, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{conclusion} \n| fieldsRename cicd.pipeline.run.outcome = conclusion\n| fieldsRemove record_json, action", + "editable": true, + "enabled": true, + "id": "github:workflow:pipeline.run.outcome_7507", + "matcher": "isNotNull(workflow_run) and action == \"completed\" or action == \"requested\"", + "sampleData": "{\n \"action\": \"completed\",\n \"workflow_run\": {\n \"id\": 9772103168,\n \"name\": \"CI\",\n \"head_branch\": \"main\",\n \"head_sha\": \"f75d1d8f0e8b140da41511997b6ad1ccd6dfc6be\",\n \"run_number\": 5579,\n \"event\": \"schedule\",\n \"status\": \"completed\",\n \"conclusion\": \"success\",\n \"created_at\": \"2024-07-03T04:58:10Z\",\n \"updated_at\": \"2024-07-03T04:58:13Z\", \n \"pull_requests\": []\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "vcs.repository.name | url.full", + "dqlScript": "parse repository, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{full_name, html_url} \n| fieldsRename vcs.repository.name = full_name\n| fieldsRename vcs.repository.url.full = html_url\n| fieldsRemove record_json", + "editable": true, + "enabled": true, + "id": "github:workflow:vcs.repository.name_url_4133", + "matcher": "isNotNull(repository)", + "sampleData": "{\n \"timestamp\": \"2024-09-05T10:07:03.791000000Z\",\n \"action\": \"closed\",\n \"number\": \"40\",\n \"repository\": {\n \"id\": 664643958,\n \"node_id\": \"R_kgDOJ52pdg\",\n \"name\": \"webapp\",\n \"full_name\": \"cookie-base/webapp\",\n \"private\": true,\n \"html_url\": \"https://github.com/cookie-base/webapp\",\n \"description\": null,\n \"fork\": false,\n \"url\": \"https://api.github.com/repos/cookie-base/webapp\",\n \"forks_url\": \"https://api.github.com/repos/cookie-base/webapp/forks\",\n \"keys_url\": \"https://api.github.com/repos/cookie-base/webapp/keys{/key_id}\",\n \"collaborators_url\": \"https://api.github.com/repos/cookie-base/webapp/collaborators{/collaborator}\",\n \"teams_url\": \"https://api.github.com/repos/cookie-base/webapp/teams\",\n \"hooks_url\": \"https://api.github.com/repos/cookie-base/webapp/hooks\",\n \"issue_events_url\": \"https://api.github.com/repos/cookie-base/webapp/issues/events{/number}\",\n \"events_url\": \"https://api.github.com/repos/cookie-base/webapp/events\",\n \"assignees_url\": \"https://api.github.com/repos/cookie-base/webapp/assignees{/user}\",\n \"branches_url\": \"https://api.github.com/repos/cookie-base/webapp/branches{/branch}\",\n \"tags_url\": \"https://api.github.com/repos/cookie-base/webapp/tags\",\n \"blobs_url\": \"https://api.github.com/repos/cookie-base/webapp/git/blobs{/sha}\",\n \"git_tags_url\": \"https://api.github.com/repos/cookie-base/webapp/git/tags{/sha}\",\n \"git_refs_url\": \"https://api.github.com/repos/cookie-base/webapp/git/refs{/sha}\",\n \"trees_url\": \"https://api.github.com/repos/cookie-base/webapp/git/trees{/sha}\",\n \"statuses_url\": \"https://api.github.com/repos/cookie-base/webapp/statuses/{sha}\",\n \"languages_url\": \"https://api.github.com/repos/cookie-base/webapp/languages\",\n \"stargazers_url\": \"https://api.github.com/repos/cookie-base/webapp/stargazers\",\n \"contributors_url\": \"https://api.github.com/repos/cookie-base/webapp/contributors\",\n \"subscribers_url\": \"https://api.github.com/repos/cookie-base/webapp/subscribers\",\n \"subscription_url\": \"https://api.github.com/repos/cookie-base/webapp/subscription\",\n \"commits_url\": \"https://api.github.com/repos/cookie-base/webapp/commits{/sha}\",\n \"git_commits_url\": \"https://api.github.com/repos/cookie-base/webapp/git/commits{/sha}\",\n \"comments_url\": \"https://api.github.com/repos/cookie-base/webapp/comments{/number}\",\n \"issue_comment_url\": \"https://api.github.com/repos/cookie-base/webapp/issues/comments{/number}\",\n \"contents_url\": \"https://api.github.com/repos/cookie-base/webapp/contents/{+path}\",\n \"compare_url\": \"https://api.github.com/repos/cookie-base/webapp/compare/{base}...{head}\",\n \"merges_url\": \"https://api.github.com/repos/cookie-base/webapp/merges\",\n \"archive_url\": \"https://api.github.com/repos/cookie-base/webapp/{archive_format}{/ref}\",\n \"downloads_url\": \"https://api.github.com/repos/cookie-base/webapp/downloads\",\n \"issues_url\": \"https://api.github.com/repos/cookie-base/webapp/issues{/number}\",\n \"pulls_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls{/number}\",\n \"milestones_url\": \"https://api.github.com/repos/cookie-base/webapp/milestones{/number}\",\n \"notifications_url\": \"https://api.github.com/repos/cookie-base/webapp/notifications{?since,all,participating}\",\n \"labels_url\": \"https://api.github.com/repos/cookie-base/webapp/labels{/name}\",\n \"releases_url\": \"https://api.github.com/repos/cookie-base/webapp/releases{/id}\",\n \"deployments_url\": \"https://api.github.com/repos/cookie-base/webapp/deployments\",\n \"created_at\": \"2023-07-10T12:37:00Z\",\n \"updated_at\": \"2024-09-04T08:12:38Z\",\n \"pushed_at\": \"2024-09-04T08:12:55Z\",\n \"git_url\": \"git://github.com/cookie-base/webapp.git\",\n \"ssh_url\": \"git@github.com:cookie-base/webapp.git\",\n \"clone_url\": \"https://github.com/cookie-base/webapp.git\",\n \"svn_url\": \"https://github.com/cookie-base/webapp\",\n \"homepage\": null,\n \"size\": 2228,\n \"stargazers_count\": 0,\n \"watchers_count\": 0,\n \"language\": \"TypeScript\",\n \"has_issues\": true,\n \"has_projects\": true,\n \"has_downloads\": true,\n \"has_wiki\": false,\n \"has_pages\": false,\n \"has_discussions\": false,\n \"forks_count\": 0,\n \"mirror_url\": null,\n \"archived\": false,\n \"disabled\": false,\n \"open_issues_count\": 2,\n \"license\": null,\n \"allow_forking\": false,\n \"is_template\": false,\n \"web_commit_signoff_required\": false,\n \"topics\": [],\n \"visibility\": \"private\",\n \"forks\": 0,\n \"open_issues\": 2,\n \"watchers\": 0,\n \"default_branch\": \"main\",\n \"custom_properties\": {}\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "vcs.ref.head.revision | name", + "dqlScript": "parse workflow_run, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{head_branch, head_sha} \n| fieldsRename vcs.ref.head.revision = head_sha\n| fieldsRename vcs.ref.head.name = head_branch\n| fieldsRemove record_json", + "editable": true, + "enabled": true, + "id": "github:workflow:vcs.ref.head.revision_name_2706", + "matcher": "isNotNull(workflow_run) ", + "sampleData": "{\n \"action\": \"completed\",\n \"workflow_run\": {\n \"id\": 9772103168,\n \"name\": \"CI\",\n \"node_id\": \"WFR_kwLOKbUdvs8AAAACRnZ2AA\",\n \"head_branch\": \"main\",\n \"head_sha\": \"f75d1d8f0e8b140da41511997b6ad1ccd6dfc6be\",\n \"path\": \".github/workflows/blank.yml\",\n \"display_title\": \"CI\",\n \"run_number\": 5579,\n \"event\": \"schedule\",\n \"status\": \"completed\",\n \"conclusion\": \"failure\",\n \"workflow_id\": 71372937,\n \"check_suite_id\": 25579305967,\n \"check_suite_node_id\": \"CS_kwDOKbUdvs8AAAAF9KU77w\",\n \"url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168\",\n \"html_url\": \"https://github.com/github-org/actionspipeline/actions/runs/9772103168\",\n \"pull_requests\": [],\n \"created_at\": \"2024-07-03T04:58:03Z\",\n \"updated_at\": \"2024-07-03T04:58:13Z\",\n \"actor\": {\n \"login\": \"github-user\",\n \"id\": 33230145,\n \"node_id\": \"MDQ6VXNlcjMzMjMwMTQ1\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/33230145?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"run_attempt\": 1,\n \"referenced_workflows\": [],\n \"run_started_at\": \"2024-07-03T04:58:03Z\",\n \"triggering_actor\": {\n \"login\": \"github-user\",\n \"id\": 33230145,\n \"node_id\": \"MDQ6VXNlcjMzMjMwMTQ1\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/33230145?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"jobs_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/jobs\",\n \"logs_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/logs\",\n \"check_suite_url\": \"https://api.github.com/repos/github-org/actionspipeline/check-suites/25579305967\",\n \"artifacts_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/artifacts\",\n \"cancel_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/cancel\",\n \"rerun_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168/rerun\",\n \"previous_attempt_url\": null,\n \"workflow_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/workflows/71372937\",\n \"head_commit\": {\n \"id\": \"f75d1d8f0e8b140da41511997b6ad1ccd6dfc6be\",\n \"tree_id\": \"798bccf57b1a72055abdb090c65c6bb69e9ca698\",\n \"message\": \"Update blank.yml\",\n \"timestamp\": \"2024-06-06T05:35:42Z\",\n \"author\": {\n \"name\": \"github-user\",\n \"email\": \"33230145+github-user@users.noreply.github.com\"\n },\n \"committer\": {\n \"name\": \"GitHub\",\n \"email\": \"noreply@github.com\"\n }\n }\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "Cleanup", + "dqlScript": "fieldsRemove action, workflow_run, workflow, repository, organization, sender, installation", + "editable": true, + "enabled": true, + "id": "github:workflow:remove_fields_3337", + "matcher": "isNotNull(workflow_run)", + "sampleData": "{\n \"action\": \"completed\",\n \"workflow_run\": {\n \"id\": 9772103168\n },\n \"workflow\": {\n \"id\": 71372937\n },\n \"repository\": {\n \"default_branch\": \"main\"\n },\n \"organization\": {\n \"login\": \"github-org\"\n },\n \"sender\": {\n \"login\": \"github-user\"\n },\n \"installation\": {\n \"id\": 45029986,\n \"node_id\": \"MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uNDUwMjk5ODY=\"\n }\n }", + "type": "dql" + } + ] + }, + "securityContext": { + "editable": true, + "processors": [] + }, + "storage": { + "catchAllBucketName": "default_events", + "editable": true, + "processors": [] + }, + "type": "default" + }, + { + "builtin": false, + "dataExtraction": { + "editable": true, + "processors": [] + }, + "displayName": "github-job", + "editable": true, + "enabled": true, + "id": "github:job_9528", + "metricExtraction": { + "editable": true, + "processors": [ + { + "builtin": false, + "description": "Number of job events", + "dimensions": [ + "event.type", + "event.provider", + "event.status", + "event.category", + "vcs.repository.ref.name", + "cicd.pipeline.name" + ], + "editable": true, + "enabled": true, + "id": "github:job:number_of_job_events_4537", + "matcher": "true", + "metricKey": "events.sdlc.tasks", + "sampleData": null, + "type": "counterMetric" + }, + { + "builtin": false, + "description": "Number of finished jobs", + "dimensions": [ + "event.type", + "event.provider", + "event.status", + "event.category", + "vcs.repository.ref.name", + "cicd.pipeline.name" + ], + "editable": true, + "enabled": true, + "id": "github:job:jobs_finished_4783", + "matcher": "event.status == \"finished\"", + "metricKey": "events.sdlc.finished_tasks", + "sampleData": null, + "type": "counterMetric" + }, + { + "builtin": false, + "description": "Duration of finished job", + "dimensions": [ + "event.provider", + "event.status", + "event.category", + "event.type", + "cicd.pipeline.name", + "vcs.repository.ref.name" + ], + "editable": true, + "enabled": true, + "field": "duration", + "id": "github:job:job_duration_9361", + "matcher": "event.status == \"finished\"", + "metricKey": "events.sdlc.task_duration", + "sampleData": null, + "type": "valueMetric" + } + ] + }, + "processing": { + "editable": true, + "processors": [ + { + "builtin": false, + "description": "event.status", + "dqlScript": "parse workflow_job, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{status} \n| fieldsAdd if(status == \"in_progress\", \"started\", else: if(status == \"completed\", \"finished\", else: status)), alias: event.status\n| fieldsRemove record_json", + "editable": true, + "enabled": true, + "id": "github:job:event.status_4086", + "matcher": "isNotNull(workflow_job)", + "sampleData": "{\n \"workflow_job\": {\n \"id\": 26975944402,\n \"run_id\": 9772103168,\n \"workflow_name\": \"CI\",\n \"head_branch\": \"main\",\n \"run_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168\",\n \"run_attempt\": 1,\n \"node_id\": \"CR_kwDOKbUdvs8AAAAGR-Q-0g\",\n \"head_sha\": \"f75d1d8f0e8b140da41511997b6ad1ccd6dfc6be\",\n \"url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/jobs/26975944402\",\n \"html_url\": \"https://github.com/github-org/actionspipeline/actions/runs/9772103168/job/26975944402\",\n \"status\": \"completed\",\n \"conclusion\": \"failure\",\n \"created_at\": \"2024-07-03T04:58:04Z\",\n \"started_at\": \"2024-07-03T04:58:11Z\",\n \"completed_at\": \"2024-07-03T04:58:11Z\",\n \"name\": \"SecondJob\"\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "duration", + "dqlScript": "parse workflow_job, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{started_at, created_at, status} \n| fieldsAdd if((started_at \u003e created_at) and event.status == \"finished\", toTimestamp(started_at) - toTimestamp(created_at), else: toDuration(0)), alias: duration\n| fieldsRemove record_json, started_at, created_at, status", + "editable": true, + "enabled": true, + "id": "github:job:duration_8891", + "matcher": "isNotNull(workflow_job)", + "sampleData": "{\n \"event.status\": \"finished\",\n \"workflow_job\": {\n \"id\": 26975944402,\n \"run_id\": 9772103168,\n \"workflow_name\": \"CI\",\n \"head_branch\": \"main\",\n \"run_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168\",\n \"run_attempt\": 1,\n \"node_id\": \"CR_kwDOKbUdvs8AAAAGR-Q-0g\",\n \"head_sha\": \"f75d1d8f0e8b140da41511997b6ad1ccd6dfc6be\",\n \"url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/jobs/26975944402\",\n \"html_url\": \"https://github.com/github-org/actionspipeline/actions/runs/9772103168/job/26975944402\",\n \"status\": \"completed\",\n \"conclusion\": \"failure\",\n \"created_at\": \"2024-07-03T04:58:04Z\",\n \"started_at\": \"2024-07-03T04:58:11Z\",\n \"completed_at\": \"2024-07-03T04:58:11Z\",\n \"name\": \"SecondJob\"\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "start_time", + "dqlScript": "parse workflow_job, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{created_at} \n| fieldsAdd start_time = toTimestamp(created_at)\n| fieldsRemove record_json, created_at", + "editable": true, + "enabled": true, + "id": "github:job:start_time_2810", + "matcher": "isNotNull(workflow_job) and event.status == \"started\"", + "sampleData": "{\n \"event.status\": \"started\",\n \"workflow_job\": {\n \"id\": 26975944402,\n \"run_id\": 9772103168,\n \"workflow_name\": \"CI\",\n \"head_branch\": \"main\",\n \"run_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168\",\n \"run_attempt\": 1,\n \"node_id\": \"CR_kwDOKbUdvs8AAAAGR-Q-0g\",\n \"head_sha\": \"f75d1d8f0e8b140da41511997b6ad1ccd6dfc6be\",\n \"url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/jobs/26975944402\",\n \"html_url\": \"https://github.com/github-org/actionspipeline/actions/runs/9772103168/job/26975944402\",\n \"status\": \"completed\",\n \"conclusion\": \"failure\",\n \"created_at\": \"2024-07-03T04:58:04Z\",\n \"started_at\": \"2024-07-03T04:58:11Z\",\n \"completed_at\": \"2024-07-03T04:58:11Z\",\n \"name\": \"SecondJob\"\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "end_time", + "dqlScript": "parse workflow_job, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{completed_at} \n| fieldsAdd end_time = toTimestamp(completed_at)\n| fieldsRemove record_json, completed_at", + "editable": true, + "enabled": true, + "id": "github:job:end_time_7477", + "matcher": "isNotNull(workflow_job) and event.status == \"finished\"", + "sampleData": "{\n \"event.status\": \"finished\",\n \"workflow_job\": {\n \"id\": 26975944402,\n \"run_id\": 9772103168,\n \"workflow_name\": \"CI\",\n \"head_branch\": \"main\",\n \"run_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168\",\n \"run_attempt\": 1,\n \"node_id\": \"CR_kwDOKbUdvs8AAAAGR-Q-0g\",\n \"head_sha\": \"f75d1d8f0e8b140da41511997b6ad1ccd6dfc6be\",\n \"url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/jobs/26975944402\",\n \"html_url\": \"https://github.com/github-org/actionspipeline/actions/runs/9772103168/job/26975944402\",\n \"status\": \"completed\",\n \"conclusion\": \"failure\",\n \"created_at\": \"2024-07-03T04:58:04Z\",\n \"started_at\": \"2024-07-03T04:58:11Z\",\n \"completed_at\": \"2024-07-03T04:58:11Z\",\n \"name\": \"SecondJob\"\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "timestamp", + "dqlScript": "parse workflow_job, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{updated_at} \n| fieldsAdd dif2h = toLong(7200000000000)\n| fieldsAdd nt = toLong(toTimestamp(now()))\n| fieldsAdd if(nt - toLong(toTimestamp(start_time)) \u003c dif2h, start_time, else: toTimestamp(nt)), alias: st\n| fieldsAdd if(nt - toLong(toTimestamp(end_time)) \u003c dif2h, end_time, else: toTimestamp(nt)), alias: et\n| fieldsAdd if(event.status == \"started\", st, else: if(event.status == \"finished\", et, else: toTimestamp(nt))), alias: timestamp\n| fieldsRemove record_json, updated_at, st, et, nt, dif2h", + "editable": true, + "enabled": true, + "id": "github:job:timestamp_2361", + "matcher": "isNotNull(workflow_job) ", + "sampleData": "{\n \"event.status\": \"finished\",\n \"end_time\": \"2024-10-04T14:18:14.749000000Z\",\n \"workflow_job\": {\n \"id\": 26975944402,\n \"run_id\": 9772103168,\n \"workflow_name\": \"CI\",\n \"head_branch\": \"main\",\n \"run_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168\",\n \"run_attempt\": 1,\n \"node_id\": \"CR_kwDOKbUdvs8AAAAGR-Q-0g\",\n \"head_sha\": \"f75d1d8f0e8b140da41511997b6ad1ccd6dfc6be\",\n \"url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/jobs/26975944402\",\n \"html_url\": \"https://github.com/github-org/actionspipeline/actions/runs/9772103168/job/26975944402\",\n \"status\": \"completed\",\n \"conclusion\": \"failure\",\n \"created_at\": \"2024-07-03T04:58:04Z\",\n \"started_at\": \"2024-07-03T04:58:11Z\",\n \"completed_at\": \"2024-07-03T04:58:11Z\",\n \"name\": \"SecondJob\"\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "cicd.pipeline.run.id | task.id | name", + "dqlScript": "parse workflow_job, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{run_id, id, name} \n| fieldsRename cicd.pipeline.run.id = run_id\n| fieldsRename task.id = id\n| fieldsRename task.name = name\n| fieldsRemove record_json", + "editable": true, + "enabled": true, + "id": "github:job:pipeline.run.id_task_id_name_4478", + "matcher": "isNotNull(workflow_job)", + "sampleData": "{\n \"workflow_job\": {\n \"id\": 26975944402,\n \"run_id\": 9772103168,\n \"workflow_name\": \"CI\",\n \"head_branch\": \"main\",\n \"run_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168\",\n \"run_attempt\": 1,\n \"node_id\": \"CR_kwDOKbUdvs8AAAAGR-Q-0g\",\n \"head_sha\": \"f75d1d8f0e8b140da41511997b6ad1ccd6dfc6be\",\n \"url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/jobs/26975944402\",\n \"html_url\": \"https://github.com/github-org/actionspipeline/actions/runs/9772103168/job/26975944402\",\n \"status\": \"completed\",\n \"conclusion\": \"failure\",\n \"created_at\": \"2024-07-03T04:58:04Z\",\n \"started_at\": \"2024-07-03T04:58:11Z\",\n \"completed_at\": \"2024-07-03T04:58:11Z\",\n \"name\": \"SecondJob\"\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "task.run.attempt", + "dqlScript": "parse workflow_job, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{run_attempt} \n| fieldsRename task.run.attempt = run_attempt\n| fieldsRemove record_json", + "editable": true, + "enabled": true, + "id": "github:job:ext.task.run.attempt_7991", + "matcher": "isNotNull(workflow_job) ", + "sampleData": "{\n \"action\": \"in_progress\",\n \"workflow_job\": {\n \"id\": 26975944571,\n \"run_id\": 9772103168,\n \"workflow_name\": \"CI\",\n \"head_branch\": \"main\",\n \"run_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168\",\n \"run_attempt\": 1,\n \"node_id\": \"CR_kwDOKbUdvs8AAAAGR-Q_ew\",\n \"head_sha\": \"f75d1d8f0e8b140da41511997b6ad1ccd6dfc6be\",\n \"url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/jobs/26975944571\",\n \"html_url\": \"https://github.com/github-org/actionspipeline/actions/runs/9772103168/job/26975944571\",\n \"status\": \"in_progress\",\n \"conclusion\": null,\n \"created_at\": \"2024-07-03T04:58:04Z\",\n \"started_at\": \"2024-07-03T04:58:10Z\",\n \"completed_at\": null,\n \"name\": \"FirstJob\"\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "task.steps | labels", + "dqlScript": "parse workflow_job, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{steps, labels} \n| fieldsRename task.steps = steps\n| fieldsRename task.labels = labels\n| fieldsRemove record_json", + "editable": true, + "enabled": true, + "id": "github:job:ext.task.steps_labels_6131", + "matcher": "isNotNull(workflow_job) ", + "sampleData": "{\n \"action\": \"in_progress\",\n \"workflow_job\": {\n \"id\": 26975944571,\n \"run_id\": 9772103168,\n \"workflow_name\": \"CI\",\n \"head_branch\": \"main\",\n \"run_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168\",\n \"run_attempt\": 1,\n \"node_id\": \"CR_kwDOKbUdvs8AAAAGR-Q_ew\",\n \"head_sha\": \"f75d1d8f0e8b140da41511997b6ad1ccd6dfc6be\",\n \"url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/jobs/26975944571\",\n \"html_url\": \"https://github.com/github-org/actionspipeline/actions/runs/9772103168/job/26975944571\",\n \"status\": \"in_progress\",\n \"conclusion\": null,\n \"created_at\": \"2024-07-03T04:58:04Z\",\n \"started_at\": \"2024-07-03T04:58:10Z\",\n \"completed_at\": null,\n \"name\": \"FirstJob\",\n \"steps\": [\n {\n \"name\": \"Set up job\",\n \"status\": \"completed\",\n \"conclusion\": \"success\",\n \"number\": 1,\n \"started_at\": \"2024-07-03T04:58:09Z\",\n \"completed_at\": \"2024-07-03T04:58:10Z\"\n },\n {\n \"name\": \"Run actions/checkout@v3\",\n \"status\": \"completed\",\n \"conclusion\": \"success\",\n \"number\": 2,\n \"started_at\": \"2024-07-03T04:58:10Z\",\n \"completed_at\": \"2024-07-03T04:58:10Z\"\n },\n {\n \"name\": \"Run a one-line script\",\n \"status\": \"completed\",\n \"conclusion\": \"success\",\n \"number\": 3,\n \"started_at\": \"2024-07-03T04:58:10Z\",\n \"completed_at\": \"2024-07-03T04:58:10Z\"\n },\n {\n \"name\": \"Run a multi-line script\",\n \"status\": \"completed\",\n \"conclusion\": \"success\",\n \"number\": 4,\n \"started_at\": \"2024-07-03T04:58:10Z\",\n \"completed_at\": \"2024-07-03T04:58:10Z\"\n },\n {\n \"name\": \"Post Run actions/checkout@v3\",\n \"status\": \"in_progress\",\n \"conclusion\": null,\n \"number\": 8,\n \"started_at\": \"2024-07-03T04:58:10Z\",\n \"completed_at\": null\n }\n ],\n \"check_run_url\": \"https://api.github.com/repos/github-org/actionspipeline/check-runs/26975944571\",\n \"labels\": [\n \"ubuntu-latest\"\n ],\n \"runner_id\": 28,\n \"runner_name\": \"GitHub Actions 11\",\n \"runner_group_id\": 2,\n \"runner_group_name\": \"GitHub Actions\"\n }\n }", + "type": "dql" + }, + { + "builtin": false, + "description": "task.outcome", + "dqlScript": "parse workflow_job, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{conclusion} \n| fieldsRename task.outcome = conclusion\n| fieldsRemove record_json, action", + "editable": true, + "enabled": true, + "id": "github:job:task.outcome_7820", + "matcher": "isNotNull(workflow_job) and action == \"completed\"", + "sampleData": "{\n \"action\": \"completed\",\n \"workflow_job\": {\n \"id\": 26975944402,\n \"run_id\": 9772103168,\n \"workflow_name\": \"CI\",\n \"head_branch\": \"main\",\n \"run_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168\",\n \"run_attempt\": 1,\n \"node_id\": \"CR_kwDOKbUdvs8AAAAGR-Q-0g\",\n \"head_sha\": \"f75d1d8f0e8b140da41511997b6ad1ccd6dfc6be\",\n \"url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/jobs/26975944402\",\n \"html_url\": \"https://github.com/github-org/actionspipeline/actions/runs/9772103168/job/26975944402\",\n \"status\": \"completed\",\n \"conclusion\": \"failure\",\n \"created_at\": \"2024-07-03T04:58:04Z\",\n \"started_at\": \"2024-07-03T04:58:11Z\",\n \"completed_at\": \"2024-07-03T04:58:11Z\",\n \"name\": \"SecondJob\"\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "vcs.ref.head.revision | name", + "dqlScript": "parse workflow_job, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{head_branch, head_sha} \n| fieldsRename vcs.ref.head.revision = head_sha\n| fieldsRename vcs.ref.head.name = head_branch\n| fieldsRemove record_json", + "editable": true, + "enabled": true, + "id": "processor_vcs.ref.head.revision_name_5064", + "matcher": "isNotNull(workflow_job)", + "sampleData": "{\n \"workflow_job\": {\n \"id\": 26975944402,\n \"run_id\": 9772103168,\n \"workflow_name\": \"CI\",\n \"head_branch\": \"main\",\n \"run_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168\",\n \"run_attempt\": 1,\n \"node_id\": \"CR_kwDOKbUdvs8AAAAGR-Q-0g\",\n \"head_sha\": \"f75d1d8f0e8b140da41511997b6ad1ccd6dfc6be\",\n \"url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/jobs/26975944402\",\n \"html_url\": \"https://github.com/github-org/actionspipeline/actions/runs/9772103168/job/26975944402\",\n \"status\": \"completed\",\n \"conclusion\": \"failure\",\n \"created_at\": \"2024-07-03T04:58:04Z\",\n \"started_at\": \"2024-07-03T04:58:11Z\",\n \"completed_at\": \"2024-07-03T04:58:11Z\",\n \"name\": \"SecondJob\"\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "vcs.repository.name | url.full", + "dqlScript": "parse repository, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{full_name, html_url} \n| fieldsRename vcs.repository.name = full_name\n| fieldsRename vcs.repository.url.full = html_url\n| fieldsRemove record_json", + "editable": true, + "enabled": true, + "id": "github:job:vcs.repository.name_url_8247", + "matcher": "isNotNull(repository)", + "sampleData": "{\n \"repository\": {\n \"id\": 699735486,\n \"node_id\": \"R_kgDOKbUdvg\",\n \"name\": \"actionspipeline\",\n \"full_name\": \"github-org/actionspipeline\",\n \"private\": false,\n \"owner\": {\n \"login\": \"github-org\",\n \"id\": 146819675,\n \"node_id\": \"O_kgDOCMBKWw\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/146819675?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-org\",\n \"html_url\": \"https://github.com/github-org\",\n \"followers_url\": \"https://api.github.com/users/github-org/followers\",\n \"following_url\": \"https://api.github.com/users/github-org/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-org/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-org/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-org/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-org/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-org/repos\",\n \"events_url\": \"https://api.github.com/users/github-org/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-org/received_events\",\n \"type\": \"Organization\",\n \"site_admin\": false\n },\n \"html_url\": \"https://github.com/github-org/actionspipeline\",\n \"description\": null,\n \"fork\": false,\n \"url\": \"https://api.github.com/repos/github-org/actionspipeline\",\n \"forks_url\": \"https://api.github.com/repos/github-org/actionspipeline/forks\",\n \"keys_url\": \"https://api.github.com/repos/github-org/actionspipeline/keys{/key_id}\",\n \"collaborators_url\": \"https://api.github.com/repos/github-org/actionspipeline/collaborators{/collaborator}\",\n \"teams_url\": \"https://api.github.com/repos/github-org/actionspipeline/teams\",\n \"hooks_url\": \"https://api.github.com/repos/github-org/actionspipeline/hooks\",\n \"issue_events_url\": \"https://api.github.com/repos/github-org/actionspipeline/issues/events{/number}\",\n \"events_url\": \"https://api.github.com/repos/github-org/actionspipeline/events\",\n \"assignees_url\": \"https://api.github.com/repos/github-org/actionspipeline/assignees{/user}\",\n \"branches_url\": \"https://api.github.com/repos/github-org/actionspipeline/branches{/branch}\",\n \"tags_url\": \"https://api.github.com/repos/github-org/actionspipeline/tags\",\n \"blobs_url\": \"https://api.github.com/repos/github-org/actionspipeline/git/blobs{/sha}\",\n \"git_tags_url\": \"https://api.github.com/repos/github-org/actionspipeline/git/tags{/sha}\",\n \"git_refs_url\": \"https://api.github.com/repos/github-org/actionspipeline/git/refs{/sha}\",\n \"trees_url\": \"https://api.github.com/repos/github-org/actionspipeline/git/trees{/sha}\",\n \"statuses_url\": \"https://api.github.com/repos/github-org/actionspipeline/statuses/{sha}\",\n \"languages_url\": \"https://api.github.com/repos/github-org/actionspipeline/languages\",\n \"stargazers_url\": \"https://api.github.com/repos/github-org/actionspipeline/stargazers\",\n \"contributors_url\": \"https://api.github.com/repos/github-org/actionspipeline/contributors\",\n \"subscribers_url\": \"https://api.github.com/repos/github-org/actionspipeline/subscribers\",\n \"subscription_url\": \"https://api.github.com/repos/github-org/actionspipeline/subscription\",\n \"commits_url\": \"https://api.github.com/repos/github-org/actionspipeline/commits{/sha}\",\n \"git_commits_url\": \"https://api.github.com/repos/github-org/actionspipeline/git/commits{/sha}\",\n \"comments_url\": \"https://api.github.com/repos/github-org/actionspipeline/comments{/number}\",\n \"issue_comment_url\": \"https://api.github.com/repos/github-org/actionspipeline/issues/comments{/number}\",\n \"contents_url\": \"https://api.github.com/repos/github-org/actionspipeline/contents/{+path}\",\n \"compare_url\": \"https://api.github.com/repos/github-org/actionspipeline/compare/{base}...{head}\",\n \"merges_url\": \"https://api.github.com/repos/github-org/actionspipeline/merges\",\n \"archive_url\": \"https://api.github.com/repos/github-org/actionspipeline/{archive_format}{/ref}\",\n \"downloads_url\": \"https://api.github.com/repos/github-org/actionspipeline/downloads\",\n \"issues_url\": \"https://api.github.com/repos/github-org/actionspipeline/issues{/number}\",\n \"pulls_url\": \"https://api.github.com/repos/github-org/actionspipeline/pulls{/number}\",\n \"milestones_url\": \"https://api.github.com/repos/github-org/actionspipeline/milestones{/number}\",\n \"notifications_url\": \"https://api.github.com/repos/github-org/actionspipeline/notifications{?since,all,participating}\",\n \"labels_url\": \"https://api.github.com/repos/github-org/actionspipeline/labels{/name}\",\n \"releases_url\": \"https://api.github.com/repos/github-org/actionspipeline/releases{/id}\",\n \"deployments_url\": \"https://api.github.com/repos/github-org/actionspipeline/deployments\",\n \"created_at\": \"2023-10-03T08:30:00Z\",\n \"updated_at\": \"2024-06-06T05:35:45Z\",\n \"pushed_at\": \"2024-06-06T05:35:42Z\",\n \"git_url\": \"git://github.com/github-org/actionspipeline.git\",\n \"ssh_url\": \"git@github.com:github-org/actionspipeline.git\",\n \"clone_url\": \"https://github.com/github-org/actionspipeline.git\",\n \"svn_url\": \"https://github.com/github-org/actionspipeline\",\n \"homepage\": null,\n \"size\": 23,\n \"stargazers_count\": 0,\n \"watchers_count\": 0,\n \"language\": null,\n \"has_issues\": true,\n \"has_projects\": true,\n \"has_downloads\": true,\n \"has_wiki\": false,\n \"has_pages\": false,\n \"has_discussions\": false,\n \"forks_count\": 0,\n \"mirror_url\": null,\n \"archived\": false,\n \"disabled\": false,\n \"open_issues_count\": 1,\n \"license\": null,\n \"allow_forking\": true,\n \"is_template\": false,\n \"web_commit_signoff_required\": false,\n \"topics\": [],\n \"visibility\": \"public\",\n \"forks\": 0,\n \"open_issues\": 1,\n \"watchers\": 0,\n \"default_branch\": \"main\",\n \"custom_properties\": {}\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "task.runner.name | group.name", + "dqlScript": "parse workflow_job, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{runner_name, runner_group_name} \n| fieldsRename task.runner.name = runner_name\n| fieldsRename task.runner.group.name = runner_group_name\n| fieldsRemove record_json", + "editable": true, + "enabled": true, + "id": "github:job:task.runner.name_group_name_3013", + "matcher": "isNotNull(workflow_job) ", + "sampleData": "{\n \"action\": \"in_progress\",\n \"workflow_job\": {\n \"id\": 26975944571,\n \"run_id\": 9772103168,\n \"workflow_name\": \"CI\",\n \"head_branch\": \"main\",\n \"run_url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/runs/9772103168\",\n \"run_attempt\": 1,\n \"node_id\": \"CR_kwDOKbUdvs8AAAAGR-Q_ew\",\n \"head_sha\": \"f75d1d8f0e8b140da41511997b6ad1ccd6dfc6be\",\n \"url\": \"https://api.github.com/repos/github-org/actionspipeline/actions/jobs/26975944571\",\n \"html_url\": \"https://github.com/github-org/actionspipeline/actions/runs/9772103168/job/26975944571\",\n \"status\": \"in_progress\",\n \"conclusion\": null,\n \"created_at\": \"2024-07-03T04:58:04Z\",\n \"started_at\": \"2024-07-03T04:58:10Z\",\n \"completed_at\": null,\n \"name\": \"FirstJob\",\n \"steps\": [\n {\n \"name\": \"Set up job\",\n \"status\": \"completed\",\n \"conclusion\": \"success\",\n \"number\": 1,\n \"started_at\": \"2024-07-03T04:58:09Z\",\n \"completed_at\": \"2024-07-03T04:58:10Z\"\n },\n {\n \"name\": \"Run actions/checkout@v3\",\n \"status\": \"completed\",\n \"conclusion\": \"success\",\n \"number\": 2,\n \"started_at\": \"2024-07-03T04:58:10Z\",\n \"completed_at\": \"2024-07-03T04:58:10Z\"\n },\n {\n \"name\": \"Run a one-line script\",\n \"status\": \"completed\",\n \"conclusion\": \"success\",\n \"number\": 3,\n \"started_at\": \"2024-07-03T04:58:10Z\",\n \"completed_at\": \"2024-07-03T04:58:10Z\"\n },\n {\n \"name\": \"Run a multi-line script\",\n \"status\": \"completed\",\n \"conclusion\": \"success\",\n \"number\": 4,\n \"started_at\": \"2024-07-03T04:58:10Z\",\n \"completed_at\": \"2024-07-03T04:58:10Z\"\n },\n {\n \"name\": \"Post Run actions/checkout@v3\",\n \"status\": \"in_progress\",\n \"conclusion\": null,\n \"number\": 8,\n \"started_at\": \"2024-07-03T04:58:10Z\",\n \"completed_at\": null\n }\n ],\n \"check_run_url\": \"https://api.github.com/repos/github-org/actionspipeline/check-runs/26975944571\",\n \"labels\": [\n \"ubuntu-latest\"\n ],\n \"runner_id\": 28,\n \"runner_name\": \"GitHub Actions 11\",\n \"runner_group_id\": 2,\n \"runner_group_name\": \"GitHub Actions\"\n }\n }", + "type": "dql" + }, + { + "builtin": false, + "description": "Cleanup", + "dqlScript": "fieldsRemove action, workflow_job, repository, organization, sender, installation", + "editable": true, + "enabled": true, + "id": "github:job:remove_fields_7330", + "matcher": "isNotNull(workflow_job)", + "sampleData": null, + "type": "dql" + } + ] + }, + "securityContext": { + "editable": true, + "processors": [] + }, + "storage": { + "catchAllBucketName": "default_events", + "editable": true, + "processors": [] + }, + "type": "default" + }, + { + "builtin": false, + "dataExtraction": { + "editable": true, + "processors": [] + }, + "displayName": "github-pull-request", + "editable": true, + "enabled": true, + "id": "github:pull_request_8730", + "metricExtraction": { + "editable": true, + "processors": [ + { + "builtin": false, + "description": "Number of pull request events", + "dimensions": [ + "event.type", + "event.provider", + "event.status", + "event.category", + "vcs.repository.ref.name", + "cicd.pipeline.name" + ], + "editable": true, + "enabled": true, + "id": "github:pull-request:number_of_tasks_4441", + "matcher": "true", + "metricKey": "events.sdlc.tasks", + "sampleData": null, + "type": "counterMetric" + }, + { + "builtin": false, + "description": "Number of merged pull requests", + "dimensions": [ + "event.type", + "event.provider", + "event.status", + "event.category", + "vcs.repository.ref.name", + "cicd.pipeline.name" + ], + "editable": true, + "enabled": true, + "id": "github:pull-request:number_of_merged_prs_2815", + "matcher": "event.status == \"finished\"", + "metricKey": "events.sdlc.finished_tasks", + "sampleData": null, + "type": "counterMetric" + }, + { + "builtin": false, + "description": "Duration of merged pull request", + "dimensions": [ + "event.type", + "event.provider", + "event.category", + "event.status", + "cicd.pipeline.name", + "vcs.repository.ref.name" + ], + "editable": true, + "enabled": true, + "field": "duration", + "id": "github:pull-request:duration_3902", + "matcher": "event.status == \"finished\"", + "metricKey": "events.sdlc.task_duration", + "sampleData": null, + "type": "valueMetric" + } + ] + }, + "processing": { + "editable": true, + "processors": [ + { + "builtin": false, + "description": "event.status", + "dqlScript": "parse pull_request, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{merged, state} \n| fieldsAdd if(merged == true, \"merged\", else: if(state == \"closed\", \"closed\", else: \"open\")), alias: event.status\n| fieldsRemove record_json, merged, state", + "editable": true, + "enabled": true, + "id": "github:pull-request:event.status_8886", + "matcher": "isNotNull(pull_request)", + "sampleData": "{\n \"action\": \"closed\",\n \"number\": \"40\",\n \"pull_request\": {\n \"url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40\",\n \"id\": 2046146154,\n \"node_id\": \"PR_kwDOJ52pds559bZq\",\n \"html_url\": \"https://github.com/cookie-base/webapp/pull/40\",\n \"diff_url\": \"https://github.com/cookie-base/webapp/pull/40.diff\",\n \"patch_url\": \"https://github.com/cookie-base/webapp/pull/40.patch\",\n \"issue_url\": \"https://api.github.com/repos/cookie-base/webapp/issues/40\",\n \"number\": 40,\n \"state\": \"closed\",\n \"locked\": false,\n \"title\": \"refactor appButton \u0026 domain view\",\n \"user\": {\n \"login\": \"github-user\",\n \"id\": 48052206,\n \"node_id\": \"MDQ6VXNlcjQ4MDUyMjA2\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/48052206?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"body\": null,\n \"created_at\": \"2024-08-30T11:09:46Z\",\n \"updated_at\": \"2024-09-05T10:07:02Z\",\n \"closed_at\": \"2024-09-05T10:07:02Z\",\n \"merged_at\": \"2024-09-05T10:07:02Z\",\n \"merge_commit_sha\": \"a4372955f3030b9f2bfb3baee217a3717ad4b9e7\",\n \"assignee\": null,\n \"assignees\": [],\n \"requested_reviewers\": [],\n \"requested_teams\": [],\n \"labels\": [],\n \"milestone\": null,\n \"draft\": false,\n \"commits_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40/commits\",\n \"review_comments_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40/comments\",\n \"review_comment_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/comments{/number}\",\n \"comments_url\": \"https://api.github.com/repos/cookie-base/webapp/issues/40/comments\",\n \"statuses_url\": \"https://api.github.com/repos/cookie-base/webapp/statuses/0f9c9c500ec802c75bf17ac77a318af1a5be8c94\",\n \"author_association\": \"COLLABORATOR\",\n \"auto_merge\": null,\n \"active_lock_reason\": null,\n \"merged\": true,\n \"mergeable\": null,\n \"rebaseable\": null,\n \"mergeable_state\": \"unknown\",\n \"merged_by\": {\n \"login\": \"github-user\",\n \"id\": 9966695,\n \"node_id\": \"MDQ6VXNlcjk5NjY2OTU=\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/9966695?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"comments\": 0,\n \"review_comments\": 0,\n \"maintainer_can_modify\": false,\n \"commits\": 1,\n \"additions\": 771,\n \"deletions\": 628,\n \"changed_files\": 26\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "duration", + "dqlScript": "parse pull_request, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{merged_at, created_at} \n| fieldsAdd if((merged_at \u003e created_at) and event.status == \"merged\", toTimestamp(merged_at) - toTimestamp(created_at), else: toDuration(0)), alias: duration\n| fieldsRemove record_json, merged_at, created_at", + "editable": true, + "enabled": true, + "id": "github:pull-request:duration_3699", + "matcher": "isNotNull(pull_request)", + "sampleData": "{\n \"event.status\":\"merged\",\n \"action\": \"closed\",\n \"number\": \"40\",\n \"pull_request\": {\n \"url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40\",\n \"id\": 2046146154,\n \"node_id\": \"PR_kwDOJ52pds559bZq\",\n \"html_url\": \"https://github.com/cookie-base/webapp/pull/40\",\n \"diff_url\": \"https://github.com/cookie-base/webapp/pull/40.diff\",\n \"patch_url\": \"https://github.com/cookie-base/webapp/pull/40.patch\",\n \"issue_url\": \"https://api.github.com/repos/cookie-base/webapp/issues/40\",\n \"number\": 40,\n \"state\": \"closed\",\n \"locked\": false,\n \"title\": \"refactor appButton \u0026 domain view\",\n \"user\": {\n \"login\": \"github-user\",\n \"id\": 48052206,\n \"node_id\": \"MDQ6VXNlcjQ4MDUyMjA2\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/48052206?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"body\": null,\n \"created_at\": \"2024-08-30T11:09:46Z\",\n \"updated_at\": \"2024-09-05T10:07:02Z\",\n \"closed_at\": \"2024-09-05T10:07:02Z\",\n \"merged_at\": \"2024-09-05T10:07:02Z\",\n \"merge_commit_sha\": \"a4372955f3030b9f2bfb3baee217a3717ad4b9e7\",\n \"assignee\": null,\n \"assignees\": [],\n \"requested_reviewers\": [],\n \"requested_teams\": [],\n \"labels\": [],\n \"milestone\": null,\n \"draft\": false,\n \"commits_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40/commits\",\n \"review_comments_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40/comments\",\n \"review_comment_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/comments{/number}\",\n \"comments_url\": \"https://api.github.com/repos/cookie-base/webapp/issues/40/comments\",\n \"statuses_url\": \"https://api.github.com/repos/cookie-base/webapp/statuses/0f9c9c500ec802c75bf17ac77a318af1a5be8c94\",\n \"author_association\": \"COLLABORATOR\",\n \"auto_merge\": null,\n \"active_lock_reason\": null,\n \"merged\": true,\n \"mergeable\": null,\n \"rebaseable\": null,\n \"mergeable_state\": \"unknown\",\n \"merged_by\": {\n \"login\": \"github-user\",\n \"id\": 9966695,\n \"node_id\": \"MDQ6VXNlcjk5NjY2OTU=\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/9966695?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"comments\": 0,\n \"review_comments\": 0,\n \"maintainer_can_modify\": false,\n \"commits\": 1,\n \"additions\": 771,\n \"deletions\": 628,\n \"changed_files\": 26\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "start_time", + "dqlScript": "parse pull_request, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{created_at} \n| fieldsAdd start_time = toTimestamp(created_at)\n| fieldsRemove record_json, created_at", + "editable": true, + "enabled": true, + "id": "github:pull-request:start_time_4242", + "matcher": "isNotNull(pull_request) \n/*\nand event.status == \"open\"\n/*", + "sampleData": "{\n \"event.status\":\"open\",\n \"action\": \"closed\",\n \"number\": \"40\",\n \"pull_request\": {\n \"url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40\",\n \"id\": 2046146154,\n \"node_id\": \"PR_kwDOJ52pds559bZq\",\n \"html_url\": \"https://github.com/cookie-base/webapp/pull/40\",\n \"diff_url\": \"https://github.com/cookie-base/webapp/pull/40.diff\",\n \"patch_url\": \"https://github.com/cookie-base/webapp/pull/40.patch\",\n \"issue_url\": \"https://api.github.com/repos/cookie-base/webapp/issues/40\",\n \"number\": 40,\n \"state\": \"closed\",\n \"locked\": false,\n \"title\": \"refactor appButton \u0026 domain view\",\n \"user\": {\n \"login\": \"github-user\",\n \"id\": 48052206,\n \"node_id\": \"MDQ6VXNlcjQ4MDUyMjA2\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/48052206?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"body\": null,\n \"created_at\": \"2024-08-30T11:09:46Z\",\n \"updated_at\": \"2024-09-05T10:07:02Z\",\n \"closed_at\": \"2024-09-05T10:07:02Z\",\n \"merged_at\": \"2024-09-05T10:07:02Z\",\n \"merge_commit_sha\": \"a4372955f3030b9f2bfb3baee217a3717ad4b9e7\",\n \"assignee\": null,\n \"assignees\": [],\n \"requested_reviewers\": [],\n \"requested_teams\": [],\n \"labels\": [],\n \"milestone\": null,\n \"draft\": false,\n \"commits_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40/commits\",\n \"review_comments_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40/comments\",\n \"review_comment_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/comments{/number}\",\n \"comments_url\": \"https://api.github.com/repos/cookie-base/webapp/issues/40/comments\",\n \"statuses_url\": \"https://api.github.com/repos/cookie-base/webapp/statuses/0f9c9c500ec802c75bf17ac77a318af1a5be8c94\",\n \"author_association\": \"COLLABORATOR\",\n \"auto_merge\": null,\n \"active_lock_reason\": null,\n \"merged\": true,\n \"mergeable\": null,\n \"rebaseable\": null,\n \"mergeable_state\": \"unknown\",\n \"merged_by\": {\n \"login\": \"github-user\",\n \"id\": 9966695,\n \"node_id\": \"MDQ6VXNlcjk5NjY2OTU=\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/9966695?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"comments\": 0,\n \"review_comments\": 0,\n \"maintainer_can_modify\": false,\n \"commits\": 1,\n \"additions\": 771,\n \"deletions\": 628,\n \"changed_files\": 26\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "end_time", + "dqlScript": "parse pull_request, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{merged_at, closed_at} \n//| fieldsAdd end_time = toTimestamp(merged_at)\n| fieldsAdd if(merged == true, toTimestamp(merged_at), else: toTimestamp(closed_at)), alias: end_time\n| fieldsRemove record_json, merged_at, closed_at", + "editable": true, + "enabled": true, + "id": "github:pull-request:end_time_2015", + "matcher": "isNotNull(pull_request) and (event.status == \"merged\" or event.status == \"closed\")", + "sampleData": "{\n \"event.status\": \"merged\",\n \"action\": \"closed\",\n \"number\": \"40\",\n \"pull_request\": {\n \"url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40\",\n \"id\": 2046146154,\n \"node_id\": \"PR_kwDOJ52pds559bZq\",\n \"html_url\": \"https://github.com/cookie-base/webapp/pull/40\",\n \"diff_url\": \"https://github.com/cookie-base/webapp/pull/40.diff\",\n \"patch_url\": \"https://github.com/cookie-base/webapp/pull/40.patch\",\n \"issue_url\": \"https://api.github.com/repos/cookie-base/webapp/issues/40\",\n \"number\": 40,\n \"state\": \"closed\",\n \"locked\": false,\n \"title\": \"refactor appButton \u0026 domain view\",\n \"user\": {\n \"login\": \"github-user\",\n \"id\": 48052206,\n \"node_id\": \"MDQ6VXNlcjQ4MDUyMjA2\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/48052206?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"body\": null,\n \"created_at\": \"2024-08-30T11:09:46Z\",\n \"updated_at\": \"2024-09-05T10:07:02Z\",\n \"closed_at\": \"2024-09-05T10:07:02Z\",\n \"merged_at\": \"2024-09-05T10:07:02Z\",\n \"merge_commit_sha\": \"a4372955f3030b9f2bfb3baee217a3717ad4b9e7\",\n \"assignee\": null,\n \"assignees\": [],\n \"requested_reviewers\": [],\n \"requested_teams\": [],\n \"labels\": [],\n \"milestone\": null,\n \"draft\": false,\n \"commits_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40/commits\",\n \"review_comments_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40/comments\",\n \"review_comment_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/comments{/number}\",\n \"comments_url\": \"https://api.github.com/repos/cookie-base/webapp/issues/40/comments\",\n \"statuses_url\": \"https://api.github.com/repos/cookie-base/webapp/statuses/0f9c9c500ec802c75bf17ac77a318af1a5be8c94\",\n \"author_association\": \"COLLABORATOR\",\n \"auto_merge\": null,\n \"active_lock_reason\": null,\n \"merged\": true,\n \"mergeable\": null,\n \"rebaseable\": null,\n \"mergeable_state\": \"unknown\",\n \"merged_by\": {\n \"login\": \"github-user\",\n \"id\": 9966695,\n \"node_id\": \"MDQ6VXNlcjk5NjY2OTU=\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/9966695?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"comments\": 0,\n \"review_comments\": 0,\n \"maintainer_can_modify\": false,\n \"commits\": 1,\n \"additions\": 771,\n \"deletions\": 628,\n \"changed_files\": 26\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "timestamp", + "dqlScript": "// 2024-11-24 \n// adjustment od timestamp due to potetial PR events comming after source PR is beeing merged and closed. \n// Additionaly Slawek Z. need precise update time for sorting on dashboards\n// A bug for 7200 sec gap? or something else....Toggle this one off\nparse pull_request, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{updated_at} \n//| fieldsAdd dif2h = toLong(7200000000000)\n| fieldsAdd nt = toLong(toTimestamp(now()))\n//| fieldsAdd if(nt - toLong(toTimestamp(start_time)) \u003c dif2h, start_time, else: toTimestamp(nt)), alias: st\n//| fieldsAdd if(nt - toLong(toTimestamp(updated_at)) \u003c dif2h, updated_at, else: toTimestamp(nt)), alias: timestamp\n| fieldsAdd toTimestamp(nt), alias: timestamp\n//| fieldsAdd if(nt - toLong(toTimestamp(end_time)) \u003c dif2h, end_time, else: toTimestamp(nt)), alias: et\n//| fieldsAdd if(event.status == \"open\", st, else: if(event.status == \"merged\", et, else: toTimestamp(nt))), alias: timestamp\n//| fieldsRemove st, et, nt, dif2h\n| fieldsRemove nt, dif2h, updated_at", + "editable": true, + "enabled": false, + "id": "github:pull-request:timestamp_8455", + "matcher": "isNotNull(pull_request) ", + "sampleData": "{\n \"event.status\": \"merged\",\n \"action\": \"opened\",\n \"number\": \"40\",\n \"pull_request\": {\n \"url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40\",\n \"id\": 2046146154,\n \"node_id\": \"PR_kwDOJ52pds559bZq\",\n \"html_url\": \"https://github.com/cookie-base/webapp/pull/40\",\n \"diff_url\": \"https://github.com/cookie-base/webapp/pull/40.diff\",\n \"patch_url\": \"https://github.com/cookie-base/webapp/pull/40.patch\",\n \"issue_url\": \"https://api.github.com/repos/cookie-base/webapp/issues/40\",\n \"number\": 40,\n \"state\": \"closed\",\n \"locked\": false,\n \"title\": \"refactor appButton \u0026 domain view\",\n \"user\": {\n \"login\": \"github-user\",\n \"id\": 48052206,\n \"node_id\": \"MDQ6VXNlcjQ4MDUyMjA2\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/48052206?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"body\": null,\n \"created_at\": \"2024-08-30T11:09:46Z\",\n \"updated_at\": \"2024-11-27T12:57:21Z\",\n \"closed_at\": \"2024-09-05T10:07:02Z\",\n \"merged_at\": \"2024-09-05T10:07:02Z\",\n \"merge_commit_sha\": \"a4372955f3030b9f2bfb3baee217a3717ad4b9e7\",\n \"assignee\": null,\n \"assignees\": [],\n \"requested_reviewers\": [],\n \"requested_teams\": [],\n \"labels\": [],\n \"milestone\": null,\n \"draft\": false,\n \"commits_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40/commits\",\n \"review_comments_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40/comments\",\n \"review_comment_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/comments{/number}\",\n \"comments_url\": \"https://api.github.com/repos/cookie-base/webapp/issues/40/comments\",\n \"statuses_url\": \"https://api.github.com/repos/cookie-base/webapp/statuses/0f9c9c500ec802c75bf17ac77a318af1a5be8c94\",\n \"author_association\": \"COLLABORATOR\",\n \"auto_merge\": null,\n \"active_lock_reason\": null,\n \"merged\": true,\n \"mergeable\": null,\n \"rebaseable\": null,\n \"mergeable_state\": \"unknown\",\n \"merged_by\": {\n \"login\": \"github-user\",\n \"id\": 9966695,\n \"node_id\": \"MDQ6VXNlcjk5NjY2OTU=\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/9966695?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"comments\": 0,\n \"review_comments\": 0,\n \"maintainer_can_modify\": false,\n \"commits\": 1,\n \"additions\": 771,\n \"deletions\": 628,\n \"changed_files\": 26\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "task.id | name", + "dqlScript": "parse pull_request, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{id, title} \n| fieldsRename task.id = id\n| fieldsRename task.name = title\n| fieldsRemove record_json", + "editable": true, + "enabled": true, + "id": "github:pull-request:task.id_name_8340", + "matcher": "isNotNull(pull_request)", + "sampleData": "{\n \"action\": \"closed\",\n \"number\": \"40\",\n \"pull_request\": {\n \"url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40\",\n \"id\": 2046146154,\n \"node_id\": \"PR_kwDOJ52pds559bZq\",\n \"html_url\": \"https://github.com/cookie-base/webapp/pull/40\",\n \"diff_url\": \"https://github.com/cookie-base/webapp/pull/40.diff\",\n \"patch_url\": \"https://github.com/cookie-base/webapp/pull/40.patch\",\n \"issue_url\": \"https://api.github.com/repos/cookie-base/webapp/issues/40\",\n \"number\": 40,\n \"state\": \"closed\",\n \"locked\": false,\n \"title\": \"refactor appButton \u0026 domain view\",\n \"user\": {\n \"login\": \"github-user\",\n \"id\": 48052206,\n \"node_id\": \"MDQ6VXNlcjQ4MDUyMjA2\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/48052206?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"body\": null,\n \"created_at\": \"2024-08-30T11:09:46Z\",\n \"updated_at\": \"2024-09-05T10:07:02Z\",\n \"closed_at\": \"2024-09-05T10:07:02Z\",\n \"merged_at\": \"2024-09-05T10:07:02Z\",\n \"merge_commit_sha\": \"a4372955f3030b9f2bfb3baee217a3717ad4b9e7\",\n \"assignee\": null,\n \"assignees\": [],\n \"requested_reviewers\": [],\n \"requested_teams\": [],\n \"labels\": [],\n \"milestone\": null,\n \"draft\": false,\n \"commits_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40/commits\",\n \"review_comments_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40/comments\",\n \"review_comment_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/comments{/number}\",\n \"comments_url\": \"https://api.github.com/repos/cookie-base/webapp/issues/40/comments\",\n \"statuses_url\": \"https://api.github.com/repos/cookie-base/webapp/statuses/0f9c9c500ec802c75bf17ac77a318af1a5be8c94\",\n \"author_association\": \"COLLABORATOR\",\n \"auto_merge\": null,\n \"active_lock_reason\": null,\n \"merged\": true,\n \"mergeable\": null,\n \"rebaseable\": null,\n \"mergeable_state\": \"unknown\",\n \"merged_by\": {\n \"login\": \"github-user\",\n \"id\": 9966695,\n \"node_id\": \"MDQ6VXNlcjk5NjY2OTU=\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/9966695?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"comments\": 0,\n \"review_comments\": 0,\n \"maintainer_can_modify\": false,\n \"commits\": 1,\n \"additions\": 771,\n \"deletions\": 628,\n \"changed_files\": 26\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "task.labels", + "dqlScript": "parse pull_request, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{labels}\n| fieldsAdd task.labels = toArray(labels)\n| fieldsRemove record_json, labels", + "editable": true, + "enabled": true, + "id": "github:pull-request:task.labels_8497", + "matcher": "isNotNull(pull_request)", + "sampleData": "{\n \"action\": \"closed\",\n \"number\": \"40\",\n \"pull_request\": {\n \"url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40\",\n \"id\": 2046146154,\n \"node_id\": \"PR_kwDOJ52pds559bZq\",\n \"html_url\": \"https://github.com/cookie-base/webapp/pull/40\",\n \"diff_url\": \"https://github.com/cookie-base/webapp/pull/40.diff\",\n \"patch_url\": \"https://github.com/cookie-base/webapp/pull/40.patch\",\n \"issue_url\": \"https://api.github.com/repos/cookie-base/webapp/issues/40\",\n \"number\": 40,\n \"state\": \"closed\",\n \"locked\": false,\n \"title\": \"refactor appButton \u0026 domain view\",\n \"user\": {\n \"login\": \"github-user\",\n \"id\": 48052206,\n \"node_id\": \"MDQ6VXNlcjQ4MDUyMjA2\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/48052206?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"body\": null,\n \"created_at\": \"2024-08-30T11:09:46Z\",\n \"updated_at\": \"2024-09-05T10:07:02Z\",\n \"closed_at\": \"2024-09-05T10:07:02Z\",\n \"merged_at\": \"2024-09-05T10:07:02Z\",\n \"merge_commit_sha\": \"a4372955f3030b9f2bfb3baee217a3717ad4b9e7\",\n \"assignee\": null,\n \"assignees\": [],\n \"requested_reviewers\": [],\n \"requested_teams\": [],\n \"labels\": [\n \"ubuntu-latest\"\n ],\n \"milestone\": null,\n \"draft\": false,\n \"commits_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40/commits\",\n \"review_comments_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40/comments\",\n \"review_comment_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/comments{/number}\",\n \"comments_url\": \"https://api.github.com/repos/cookie-base/webapp/issues/40/comments\",\n \"statuses_url\": \"https://api.github.com/repos/cookie-base/webapp/statuses/0f9c9c500ec802c75bf17ac77a318af1a5be8c94\",\n \"author_association\": \"COLLABORATOR\",\n \"auto_merge\": null,\n \"active_lock_reason\": null,\n \"merged\": true,\n \"mergeable\": null,\n \"rebaseable\": null,\n \"mergeable_state\": \"unknown\",\n \"merged_by\": {\n \"login\": \"github-user\",\n \"id\": 9966695,\n \"node_id\": \"MDQ6VXNlcjk5NjY2OTU=\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/9966695?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"comments\": 0,\n \"review_comments\": 0,\n \"maintainer_can_modify\": false,\n \"commits\": 1,\n \"additions\": 771,\n \"deletions\": 628,\n \"changed_files\": 26\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "task.outcome", + "dqlScript": "parse pull_request, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{merged} \n| fieldsAdd if(merged == true, \"Success\"), alias: task.outcome\n| fieldsRemove record_json, merged, action", + "editable": true, + "enabled": true, + "id": "github:pull-request:task.outcome_6376", + "matcher": "isNotNull(pull_request) and action == \"closed\"", + "sampleData": "{\n \"action\": \"closed\",\n \"number\": \"40\",\n \"pull_request\": {\n \"url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40\",\n \"id\": 2046146154,\n \"node_id\": \"PR_kwDOJ52pds559bZq\",\n \"html_url\": \"https://github.com/cookie-base/webapp/pull/40\",\n \"diff_url\": \"https://github.com/cookie-base/webapp/pull/40.diff\",\n \"patch_url\": \"https://github.com/cookie-base/webapp/pull/40.patch\",\n \"issue_url\": \"https://api.github.com/repos/cookie-base/webapp/issues/40\",\n \"number\": 40,\n \"state\": \"closed\",\n \"locked\": false,\n \"title\": \"refactor appButton \u0026 domain view\",\n \"user\": {\n \"login\": \"github-user\",\n \"id\": 48052206,\n \"node_id\": \"MDQ6VXNlcjQ4MDUyMjA2\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/48052206?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"body\": null,\n \"created_at\": \"2024-08-30T11:09:46Z\",\n \"updated_at\": \"2024-09-05T10:07:02Z\",\n \"closed_at\": \"2024-09-05T10:07:02Z\",\n \"merged_at\": \"2024-09-05T10:07:02Z\",\n \"merge_commit_sha\": \"a4372955f3030b9f2bfb3baee217a3717ad4b9e7\",\n \"assignee\": null,\n \"assignees\": [],\n \"requested_reviewers\": [],\n \"requested_teams\": [],\n \"labels\": [],\n \"milestone\": null,\n \"draft\": false,\n \"commits_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40/commits\",\n \"review_comments_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40/comments\",\n \"review_comment_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/comments{/number}\",\n \"comments_url\": \"https://api.github.com/repos/cookie-base/webapp/issues/40/comments\",\n \"statuses_url\": \"https://api.github.com/repos/cookie-base/webapp/statuses/0f9c9c500ec802c75bf17ac77a318af1a5be8c94\",\n \"author_association\": \"COLLABORATOR\",\n \"auto_merge\": null,\n \"active_lock_reason\": null,\n \"merged\": true,\n \"mergeable\": null,\n \"rebaseable\": null,\n \"mergeable_state\": \"unknown\",\n \"merged_by\": {\n \"login\": \"github-user\",\n \"id\": 9966695,\n \"node_id\": \"MDQ6VXNlcjk5NjY2OTU=\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/9966695?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"comments\": 0,\n \"review_comments\": 0,\n \"maintainer_can_modify\": false,\n \"commits\": 1,\n \"additions\": 771,\n \"deletions\": 628,\n \"changed_files\": 26\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "vcs.change.id | title | state", + "dqlScript": "parse pull_request, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{id, title} \n| fieldsRename vcs.change.id = id\n| fieldsRename vcs.change.title = title\n| fieldsAdd action, alias: vcs.change.state\n| fieldsRemove record_json", + "editable": true, + "enabled": true, + "id": "github:pull-request:vcs.change.id_title_state_4660", + "matcher": "isNotNull(pull_request)", + "sampleData": "{\n \"action\": \"closed\",\n \"number\": \"40\",\n \"pull_request\": {\n \"url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40\",\n \"id\": 2046146154,\n \"node_id\": \"PR_kwDOJ52pds559bZq\",\n \"html_url\": \"https://github.com/cookie-base/webapp/pull/40\",\n \"diff_url\": \"https://github.com/cookie-base/webapp/pull/40.diff\",\n \"patch_url\": \"https://github.com/cookie-base/webapp/pull/40.patch\",\n \"issue_url\": \"https://api.github.com/repos/cookie-base/webapp/issues/40\",\n \"number\": 40,\n \"state\": \"closed\",\n \"locked\": false,\n \"title\": \"refactor appButton \u0026 domain view\",\n \"user\": {\n \"login\": \"github-user\",\n \"id\": 48052206,\n \"node_id\": \"MDQ6VXNlcjQ4MDUyMjA2\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/48052206?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"body\": null,\n \"created_at\": \"2024-08-30T11:09:46Z\",\n \"updated_at\": \"2024-09-05T10:07:02Z\",\n \"closed_at\": \"2024-09-05T10:07:02Z\",\n \"merged_at\": \"2024-09-05T10:07:02Z\",\n \"merge_commit_sha\": \"a4372955f3030b9f2bfb3baee217a3717ad4b9e7\",\n \"assignee\": null,\n \"assignees\": [],\n \"requested_reviewers\": [],\n \"requested_teams\": [],\n \"labels\": [],\n \"milestone\": null,\n \"draft\": false,\n \"commits_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40/commits\",\n \"review_comments_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/40/comments\",\n \"review_comment_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls/comments{/number}\",\n \"comments_url\": \"https://api.github.com/repos/cookie-base/webapp/issues/40/comments\",\n \"statuses_url\": \"https://api.github.com/repos/cookie-base/webapp/statuses/0f9c9c500ec802c75bf17ac77a318af1a5be8c94\",\n \"author_association\": \"COLLABORATOR\",\n \"auto_merge\": null,\n \"active_lock_reason\": null,\n \"merged\": true,\n \"mergeable\": null,\n \"rebaseable\": null,\n \"mergeable_state\": \"unknown\",\n \"merged_by\": {\n \"login\": \"github-user\",\n \"id\": 9966695,\n \"node_id\": \"MDQ6VXNlcjk5NjY2OTU=\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/9966695?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"comments\": 0,\n \"review_comments\": 0,\n \"maintainer_can_modify\": false,\n \"commits\": 1,\n \"additions\": 771,\n \"deletions\": 628,\n \"changed_files\": 26\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "vcs.repository.name | url.full", + "dqlScript": "parse repository, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{full_name, html_url} \n| fieldsRename vcs.repository.name = full_name\n| fieldsRename vcs.repository.url.full = html_url\n| fieldsRemove record_json", + "editable": true, + "enabled": true, + "id": "github:pull-request:vcs.repository.name_url_9152", + "matcher": "isNotNull(repository)", + "sampleData": "{\n \"timestamp\": \"2024-09-05T10:07:03.791000000Z\",\n \"action\": \"closed\",\n \"number\": \"40\",\n \"repository\": {\n \"id\": 664643958,\n \"node_id\": \"R_kgDOJ52pdg\",\n \"name\": \"webapp\",\n \"full_name\": \"cookie-base/webapp\",\n \"private\": true,\n \"html_url\": \"https://github.com/cookie-base/webapp\",\n \"description\": null,\n \"fork\": false,\n \"url\": \"https://api.github.com/repos/cookie-base/webapp\",\n \"forks_url\": \"https://api.github.com/repos/cookie-base/webapp/forks\",\n \"keys_url\": \"https://api.github.com/repos/cookie-base/webapp/keys{/key_id}\",\n \"collaborators_url\": \"https://api.github.com/repos/cookie-base/webapp/collaborators{/collaborator}\",\n \"teams_url\": \"https://api.github.com/repos/cookie-base/webapp/teams\",\n \"hooks_url\": \"https://api.github.com/repos/cookie-base/webapp/hooks\",\n \"issue_events_url\": \"https://api.github.com/repos/cookie-base/webapp/issues/events{/number}\",\n \"events_url\": \"https://api.github.com/repos/cookie-base/webapp/events\",\n \"assignees_url\": \"https://api.github.com/repos/cookie-base/webapp/assignees{/user}\",\n \"branches_url\": \"https://api.github.com/repos/cookie-base/webapp/branches{/branch}\",\n \"tags_url\": \"https://api.github.com/repos/cookie-base/webapp/tags\",\n \"blobs_url\": \"https://api.github.com/repos/cookie-base/webapp/git/blobs{/sha}\",\n \"git_tags_url\": \"https://api.github.com/repos/cookie-base/webapp/git/tags{/sha}\",\n \"git_refs_url\": \"https://api.github.com/repos/cookie-base/webapp/git/refs{/sha}\",\n \"trees_url\": \"https://api.github.com/repos/cookie-base/webapp/git/trees{/sha}\",\n \"statuses_url\": \"https://api.github.com/repos/cookie-base/webapp/statuses/{sha}\",\n \"languages_url\": \"https://api.github.com/repos/cookie-base/webapp/languages\",\n \"stargazers_url\": \"https://api.github.com/repos/cookie-base/webapp/stargazers\",\n \"contributors_url\": \"https://api.github.com/repos/cookie-base/webapp/contributors\",\n \"subscribers_url\": \"https://api.github.com/repos/cookie-base/webapp/subscribers\",\n \"subscription_url\": \"https://api.github.com/repos/cookie-base/webapp/subscription\",\n \"commits_url\": \"https://api.github.com/repos/cookie-base/webapp/commits{/sha}\",\n \"git_commits_url\": \"https://api.github.com/repos/cookie-base/webapp/git/commits{/sha}\",\n \"comments_url\": \"https://api.github.com/repos/cookie-base/webapp/comments{/number}\",\n \"issue_comment_url\": \"https://api.github.com/repos/cookie-base/webapp/issues/comments{/number}\",\n \"contents_url\": \"https://api.github.com/repos/cookie-base/webapp/contents/{+path}\",\n \"compare_url\": \"https://api.github.com/repos/cookie-base/webapp/compare/{base}...{head}\",\n \"merges_url\": \"https://api.github.com/repos/cookie-base/webapp/merges\",\n \"archive_url\": \"https://api.github.com/repos/cookie-base/webapp/{archive_format}{/ref}\",\n \"downloads_url\": \"https://api.github.com/repos/cookie-base/webapp/downloads\",\n \"issues_url\": \"https://api.github.com/repos/cookie-base/webapp/issues{/number}\",\n \"pulls_url\": \"https://api.github.com/repos/cookie-base/webapp/pulls{/number}\",\n \"milestones_url\": \"https://api.github.com/repos/cookie-base/webapp/milestones{/number}\",\n \"notifications_url\": \"https://api.github.com/repos/cookie-base/webapp/notifications{?since,all,participating}\",\n \"labels_url\": \"https://api.github.com/repos/cookie-base/webapp/labels{/name}\",\n \"releases_url\": \"https://api.github.com/repos/cookie-base/webapp/releases{/id}\",\n \"deployments_url\": \"https://api.github.com/repos/cookie-base/webapp/deployments\",\n \"created_at\": \"2023-07-10T12:37:00Z\",\n \"updated_at\": \"2024-09-04T08:12:38Z\",\n \"pushed_at\": \"2024-09-04T08:12:55Z\",\n \"git_url\": \"git://github.com/cookie-base/webapp.git\",\n \"ssh_url\": \"git@github.com:cookie-base/webapp.git\",\n \"clone_url\": \"https://github.com/cookie-base/webapp.git\",\n \"svn_url\": \"https://github.com/cookie-base/webapp\",\n \"homepage\": null,\n \"size\": 2228,\n \"stargazers_count\": 0,\n \"watchers_count\": 0,\n \"language\": \"TypeScript\",\n \"has_issues\": true,\n \"has_projects\": true,\n \"has_downloads\": true,\n \"has_wiki\": false,\n \"has_pages\": false,\n \"has_discussions\": false,\n \"forks_count\": 0,\n \"mirror_url\": null,\n \"archived\": false,\n \"disabled\": false,\n \"open_issues_count\": 2,\n \"license\": null,\n \"allow_forking\": false,\n \"is_template\": false,\n \"web_commit_signoff_required\": false,\n \"topics\": [],\n \"visibility\": \"private\",\n \"forks\": 0,\n \"open_issues\": 2,\n \"watchers\": 0,\n \"default_branch\": \"main\",\n \"custom_properties\": {}\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "vcs.ref.head.name | revision", + "dqlScript": "parse pull_request, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{head}\n| fieldsAdd head[ref], alias: vcs.ref.head.name\n| fieldsAdd head[sha], alias: vcs.ref.head.revision\n| fieldsRemove record_json, head", + "editable": true, + "enabled": true, + "id": "github:pull-request:vcs.ref.head.name_revision_8853", + "matcher": "isNotNull(pull_request)", + "sampleData": "{\n \"action\": \"labeled\",\n \"number\": 27,\n \"pull_request\": {\n \"url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/pulls/27\",\n \"id\": 2098930638,\n \"node_id\": \"PR_kwDOMqhVdM59GyPO\",\n \"html_url\": \"https://github.com/github-org/SourceCodeRepo-1/pull/27\",\n \"diff_url\": \"https://github.com/github-org/SourceCodeRepo-1/pull/27.diff\",\n \"patch_url\": \"https://github.com/github-org/SourceCodeRepo-1/pull/27.patch\",\n \"issue_url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/issues/27\",\n \"number\": 27,\n \"state\": \"closed\",\n \"locked\": false,\n \"title\": \"PR to Close\",\n \"user\": {\n \"login\": \"github-user\",\n \"id\": 33230145,\n \"node_id\": \"MDQ6VXNlcjMzMjMwMTQ1\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/33230145?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"body\": null,\n \"created_at\": \"2024-09-30T11:55:54Z\",\n \"updated_at\": \"2024-10-02T06:33:54Z\",\n \"closed_at\": \"2024-09-30T12:01:38Z\",\n \"merged_at\": null,\n \"merge_commit_sha\": \"7be36c3b17b3d9714b6c57e0813972bc05ea586c\",\n \"assignee\": null,\n \"assignees\": [],\n \"requested_reviewers\": [],\n \"requested_teams\": [],\n \"labels\": [\n {\n \"id\": 7396719931,\n \"node_id\": \"LA_kwDOMqhVdM8AAAABuOD9Ow\",\n \"url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/labels/bug\",\n \"name\": \"bug\",\n \"color\": \"d73a4a\",\n \"default\": true,\n \"description\": \"Something isn't working\"\n },\n {\n \"id\": 7396719943,\n \"node_id\": \"LA_kwDOMqhVdM8AAAABuOD9Rw\",\n \"url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/labels/good%20first%20issue\",\n \"name\": \"good first issue\",\n \"color\": \"7057ff\",\n \"default\": true,\n \"description\": \"Good for newcomers\"\n }\n ],\n \"milestone\": null,\n \"draft\": false,\n \"commits_url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/pulls/27/commits\",\n \"review_comments_url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/pulls/27/comments\",\n \"review_comment_url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/pulls/comments{/number}\",\n \"comments_url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/issues/27/comments\",\n \"statuses_url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/statuses/a8a375bec0beddd0d8c58fdfad4bf057d7f5fe88\",\n \"head\": {\n \"label\": \"github-org:github-user-patch-7\",\n \"ref\": \"github-user-patch-7\",\n \"sha\": \"a8a375bec0beddd0d8c58fdfad4bf057d7f5fe88\",\n \"repo\": {\n \"id\": 849892724,\n \"node_id\": \"R_kgDOMqhVdA\",\n \"name\": \"SourceCodeRepo-1\",\n \"full_name\": \"github-org/SourceCodeRepo-1\",\n \"private\": false,\n \"html_url\": \"https://github.com/github-org/SourceCodeRepo-1\",\n \"description\": null,\n \"fork\": false,\n \"url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1\",\n \"created_at\": \"2024-08-30T13:12:45Z\",\n \"updated_at\": \"2024-09-30T15:13:46Z\",\n \"pushed_at\": \"2024-09-30T11:55:50Z\",\n \"git_url\": \"git://github.com/github-org/SourceCodeRepo-1.git\",\n \"ssh_url\": \"git@github.com:github-org/SourceCodeRepo-1.git\",\n \"clone_url\": \"https://github.com/github-org/SourceCodeRepo-1.git\",\n \"svn_url\": \"https://github.com/github-org/SourceCodeRepo-1\",\n \"homepage\": null,\n \"size\": 86,\n \"stargazers_count\": 0,\n \"watchers_count\": 0,\n \"language\": \"Dockerfile\",\n \"has_issues\": true,\n \"has_projects\": true,\n \"has_downloads\": true,\n \"has_wiki\": true,\n \"has_pages\": false,\n \"has_discussions\": false,\n \"forks_count\": 0,\n \"mirror_url\": null,\n \"archived\": false,\n \"disabled\": false,\n \"open_issues_count\": 2,\n \"license\": null,\n \"allow_forking\": true,\n \"is_template\": false,\n \"web_commit_signoff_required\": false,\n \"topics\": [],\n \"visibility\": \"public\",\n \"forks\": 0,\n \"open_issues\": 2,\n \"watchers\": 0,\n \"default_branch\": \"main\",\n \"allow_squash_merge\": true,\n \"allow_merge_commit\": true,\n \"allow_rebase_merge\": true,\n \"allow_auto_merge\": false,\n \"delete_branch_on_merge\": false,\n \"allow_update_branch\": false,\n \"use_squash_pr_title_as_default\": false,\n \"squash_merge_commit_message\": \"COMMIT_MESSAGES\",\n \"squash_merge_commit_title\": \"COMMIT_OR_PR_TITLE\",\n \"merge_commit_message\": \"PR_TITLE\",\n \"merge_commit_title\": \"MERGE_MESSAGE\"\n }\n }\n } \n}", + "type": "dql" + }, + { + "builtin": false, + "description": "vcs.ref.base.name | revision", + "dqlScript": "parse pull_request, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{base}\n| fieldsAdd base[ref], alias: vcs.ref.base.name\n| fieldsAdd base[sha], alias: vcs.ref.base.revision\n| fieldsRemove record_json, base", + "editable": true, + "enabled": true, + "id": "github:pull-request:vcs.ref.base.name_revision_9238", + "matcher": "isNotNull(pull_request)", + "sampleData": "{\n \"action\": \"labeled\",\n \"number\": 27,\n \"pull_request\": {\n \"url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/pulls/27\",\n \"id\": 2098930638,\n \"node_id\": \"PR_kwDOMqhVdM59GyPO\",\n \"html_url\": \"https://github.com/github-org/SourceCodeRepo-1/pull/27\",\n \"diff_url\": \"https://github.com/github-org/SourceCodeRepo-1/pull/27.diff\",\n \"patch_url\": \"https://github.com/github-org/SourceCodeRepo-1/pull/27.patch\",\n \"issue_url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/issues/27\",\n \"number\": 27,\n \"state\": \"closed\",\n \"locked\": false,\n \"title\": \"PR to Close\",\n \"user\": {\n \"login\": \"github-user\",\n \"id\": 33230145,\n \"node_id\": \"MDQ6VXNlcjMzMjMwMTQ1\",\n \"avatar_url\": \"https://avatars.githubusercontent.com/u/33230145?v=4\",\n \"gravatar_id\": \"\",\n \"url\": \"https://api.github.com/users/github-user\",\n \"html_url\": \"https://github.com/github-user\",\n \"followers_url\": \"https://api.github.com/users/github-user/followers\",\n \"following_url\": \"https://api.github.com/users/github-user/following{/other_user}\",\n \"gists_url\": \"https://api.github.com/users/github-user/gists{/gist_id}\",\n \"starred_url\": \"https://api.github.com/users/github-user/starred{/owner}{/repo}\",\n \"subscriptions_url\": \"https://api.github.com/users/github-user/subscriptions\",\n \"organizations_url\": \"https://api.github.com/users/github-user/orgs\",\n \"repos_url\": \"https://api.github.com/users/github-user/repos\",\n \"events_url\": \"https://api.github.com/users/github-user/events{/privacy}\",\n \"received_events_url\": \"https://api.github.com/users/github-user/received_events\",\n \"type\": \"User\",\n \"site_admin\": false\n },\n \"body\": null,\n \"created_at\": \"2024-09-30T11:55:54Z\",\n \"updated_at\": \"2024-10-02T06:33:54Z\",\n \"closed_at\": \"2024-09-30T12:01:38Z\",\n \"merged_at\": null,\n \"merge_commit_sha\": \"7be36c3b17b3d9714b6c57e0813972bc05ea586c\",\n \"assignee\": null,\n \"assignees\": [],\n \"requested_reviewers\": [],\n \"requested_teams\": [],\n \"labels\": [\n {\n \"id\": 7396719931,\n \"node_id\": \"LA_kwDOMqhVdM8AAAABuOD9Ow\",\n \"url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/labels/bug\",\n \"name\": \"bug\",\n \"color\": \"d73a4a\",\n \"default\": true,\n \"description\": \"Something isn't working\"\n },\n {\n \"id\": 7396719943,\n \"node_id\": \"LA_kwDOMqhVdM8AAAABuOD9Rw\",\n \"url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/labels/good%20first%20issue\",\n \"name\": \"good first issue\",\n \"color\": \"7057ff\",\n \"default\": true,\n \"description\": \"Good for newcomers\"\n }\n ],\n \"milestone\": null,\n \"draft\": false,\n \"commits_url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/pulls/27/commits\",\n \"review_comments_url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/pulls/27/comments\",\n \"review_comment_url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/pulls/comments{/number}\",\n \"comments_url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/issues/27/comments\",\n \"statuses_url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/statuses/a8a375bec0beddd0d8c58fdfad4bf057d7f5fe88\",\n \"base\": {\n \"label\": \"github-org:github-user-patch-7\",\n \"ref\": \"github-user-patch-7\",\n \"sha\": \"a8a375bec0beddd0d8c58fdfad4bf057d7f5fe88\",\n \"repo\": {\n \"id\": 849892724,\n \"node_id\": \"R_kgDOMqhVdA\",\n \"name\": \"SourceCodeRepo-1\",\n \"full_name\": \"github-org/SourceCodeRepo-1\",\n \"private\": false,\n \"html_url\": \"https://github.com/github-org/SourceCodeRepo-1\",\n \"description\": null,\n \"fork\": false,\n \"url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1\",\n \"created_at\": \"2024-08-30T13:12:45Z\",\n \"updated_at\": \"2024-09-30T15:13:46Z\",\n \"pushed_at\": \"2024-09-30T11:55:50Z\",\n \"git_url\": \"git://github.com/github-org/SourceCodeRepo-1.git\",\n \"ssh_url\": \"git@github.com:github-org/SourceCodeRepo-1.git\",\n \"clone_url\": \"https://github.com/github-org/SourceCodeRepo-1.git\",\n \"svn_url\": \"https://github.com/github-org/SourceCodeRepo-1\",\n \"homepage\": null,\n \"size\": 86,\n \"stargazers_count\": 0,\n \"watchers_count\": 0,\n \"language\": \"Dockerfile\",\n \"has_issues\": true,\n \"has_projects\": true,\n \"has_downloads\": true,\n \"has_wiki\": true,\n \"has_pages\": false,\n \"has_discussions\": false,\n \"forks_count\": 0,\n \"mirror_url\": null,\n \"archived\": false,\n \"disabled\": false,\n \"open_issues_count\": 2,\n \"license\": null,\n \"allow_forking\": true,\n \"is_template\": false,\n \"web_commit_signoff_required\": false,\n \"topics\": [],\n \"visibility\": \"public\",\n \"forks\": 0,\n \"open_issues\": 2,\n \"watchers\": 0,\n \"default_branch\": \"main\",\n \"allow_squash_merge\": true,\n \"allow_merge_commit\": true,\n \"allow_rebase_merge\": true,\n \"allow_auto_merge\": false,\n \"delete_branch_on_merge\": false,\n \"allow_update_branch\": false,\n \"use_squash_pr_title_as_default\": false,\n \"squash_merge_commit_message\": \"COMMIT_MESSAGES\",\n \"squash_merge_commit_title\": \"COMMIT_OR_PR_TITLE\",\n \"merge_commit_message\": \"PR_TITLE\",\n \"merge_commit_title\": \"MERGE_MESSAGE\"\n }\n }\n } \n}", + "type": "dql" + }, + { + "builtin": false, + "description": "ext.vcs.change.pull_request.url | number", + "dqlScript": "parse pull_request, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{html_url}\n| fieldsAdd html_url, alias: ext.vcs.change.pull_request.url\n| fieldsRename ext.vcs.change.pull_request.number = number\n| fieldsRemove record_json, html_url", + "editable": true, + "enabled": true, + "id": "github:pull-request:ext.vcs.change.pull_request.url_number_1987", + "matcher": "isNotNull(pull_request)", + "sampleData": "{\n \"action\": \"closed\",\n \"number\": 20,\n \"pull_request\": {\n \"url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/pulls/20\",\n \"id\": 2076377099,\n \"node_id\": \"PR_kwDOMqhVdM57wwAL\",\n \"html_url\": \"https://github.com/github-org/SourceCodeRepo-1/pull/20\",\n \"diff_url\": \"https://github.com/github-org/SourceCodeRepo-1/pull/20.diff\",\n \"patch_url\": \"https://github.com/github-org/SourceCodeRepo-1/pull/20.patch\",\n \"issue_url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/issues/20\",\n \"number\": 20,\n \"state\": \"closed\",\n \"locked\": false,\n \"title\": \"Single PR\",\n \"body\": null,\n \"created_at\": \"2024-09-17T13:07:23Z\",\n \"updated_at\": \"2024-09-17T13:07:37Z\",\n \"closed_at\": \"2024-09-17T13:07:37Z\",\n \"merged_at\": \"2024-09-17T13:07:37Z\",\n \"merge_commit_sha\": \"cd90131bc139bfd2c5ec8ad19cd45ccad43bb438\",\n \"assignee\": null,\n \"assignees\": [],\n \"requested_reviewers\": [],\n \"requested_teams\": [],\n \"labels\": [],\n \"milestone\": null,\n \"draft\": false,\n \"commits_url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/pulls/20/commits\",\n \"review_comments_url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/pulls/20/comments\",\n \"review_comment_url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/pulls/comments{/number}\",\n \"comments_url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/issues/20/comments\",\n \"statuses_url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/statuses/3106e5d3ce7be63bc30784e98597108cda63fe98\",\n \"comments\": 0,\n \"review_comments\": 0,\n \"maintainer_can_modify\": false,\n \"commits\": 1,\n \"additions\": 1,\n \"deletions\": 1,\n \"changed_files\": 1\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "ext.task.merge.commits", + "dqlScript": "parse pull_request, \"JSON:record_json\" \n| fieldsFlatten record_json, fields:{commits}\n| fieldsAdd commits, alias: ext.task.merge.commits\n| fieldsRemove record_json, commits", + "editable": true, + "enabled": false, + "id": "github:pull-request:ext.task.merge.commits_4167", + "matcher": "isNotNull(pull_request)", + "sampleData": "{\n \"action\": \"closed\",\n \"number\": 20,\n \"pull_request\": {\n \"url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/pulls/20\",\n \"id\": 2076377099,\n \"node_id\": \"PR_kwDOMqhVdM57wwAL\",\n \"html_url\": \"https://github.com/github-org/SourceCodeRepo-1/pull/20\",\n \"diff_url\": \"https://github.com/github-org/SourceCodeRepo-1/pull/20.diff\",\n \"patch_url\": \"https://github.com/github-org/SourceCodeRepo-1/pull/20.patch\",\n \"issue_url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/issues/20\",\n \"number\": 20,\n \"state\": \"closed\",\n \"locked\": false,\n \"title\": \"Single PR\",\n \"body\": null,\n \"created_at\": \"2024-09-17T13:07:23Z\",\n \"updated_at\": \"2024-09-17T13:07:37Z\",\n \"closed_at\": \"2024-09-17T13:07:37Z\",\n \"merged_at\": \"2024-09-17T13:07:37Z\",\n \"merge_commit_sha\": \"cd90131bc139bfd2c5ec8ad19cd45ccad43bb438\",\n \"assignee\": null,\n \"assignees\": [],\n \"requested_reviewers\": [],\n \"requested_teams\": [],\n \"labels\": [],\n \"milestone\": null,\n \"draft\": false,\n \"commits_url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/pulls/20/commits\",\n \"review_comments_url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/pulls/20/comments\",\n \"review_comment_url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/pulls/comments{/number}\",\n \"comments_url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/issues/20/comments\",\n \"statuses_url\": \"https://api.github.com/repos/github-org/SourceCodeRepo-1/statuses/3106e5d3ce7be63bc30784e98597108cda63fe98\",\n \"comments\": 0,\n \"review_comments\": 0,\n \"maintainer_can_modify\": false,\n \"commits\": 1,\n \"additions\": 1,\n \"deletions\": 1,\n \"changed_files\": 1\n }\n}", + "type": "dql" + }, + { + "builtin": false, + "description": "Cleanup", + "dqlScript": "fieldsRemove action, number, pull_request", + "editable": true, + "enabled": true, + "id": "github:pull-request:remove_fields_3747", + "matcher": "isNotNull(pull_request)", + "sampleData": null, + "type": "dql" + } + ] + }, + "securityContext": { + "editable": true, + "processors": [] + }, + "storage": { + "catchAllBucketName": "default_events", + "editable": true, + "processors": [] + }, + "type": "default" + }, + { + "builtin": true, + "dataExtraction": { + "editable": false, + "processors": [] + }, + "displayName": "events.sdlc", + "editable": false, + "enabled": true, + "id": "default", + "metricExtraction": { + "editable": false, + "processors": [] + }, + "processing": { + "editable": false, + "processors": [] + }, + "securityContext": { + "editable": false, + "processors": [] + }, + "storage": { + "catchAllBucketName": "default_events", + "editable": false, + "processors": [] + }, + "type": "default" + } + ], + "routing": { + "catchAllPipeline": { + "editable": false, + "pipelineId": "default" + }, + "editable": true, + "entries": [ + { + "builtin": false, + "editable": true, + "enabled": true, + "matcher": "isNotNull(workflow_run)", + "note": "Route events to workflow pipeline", + "pipelineId": "github:workflow_6504" + }, + { + "builtin": false, + "editable": true, + "enabled": true, + "matcher": "isNotNull(workflow_job)", + "note": "Route events to job pipeline", + "pipelineId": "github:job_9528" + }, + { + "builtin": false, + "editable": true, + "enabled": true, + "matcher": "isNotNull(pull_request)", + "note": "Route events to PR pipeline ", + "pipelineId": "github:pull_request_8730" + } + ] + } +} \ No newline at end of file