Skip to content

Commit

Permalink
Create a new tile for Mergify built-in integration
Browse files Browse the repository at this point in the history
  • Loading branch information
DouglasBlackwood committed Oct 7, 2024
1 parent e169599 commit 2dfe9f5
Show file tree
Hide file tree
Showing 9 changed files with 389 additions and 0 deletions.
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@
/modal/ @modal-labs [email protected] @irfansharif [email protected]
/mendix/ @mendix/cloud @DataDog/agent-integrations @DataDog/ecosystems-review
/mergify/ @Mergifyio/oss-integrations
/mergify_oauth/ @Mergifyio/oss-integrations
/n2ws/ @eliadeini [email protected] @DataDog/ecosystems-review
/neo4j/ @davidfauth [email protected] @DataDog/ecosystems-review
/neoload/ @Neotys-Labs/r-d @DataDog/ecosystems-review
Expand Down
7 changes: 7 additions & 0 deletions mergify_oauth/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# CHANGELOG - Mergify

## 1.0.0 / 2024-10-02

***Added***:

* Initial Release
63 changes: 63 additions & 0 deletions mergify_oauth/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Mergify

## Overview

This integration monitors merge queue length for each configured repository in [Mergify][1] and tracks Mergify's global availability. By sending metrics to your Datadog account, you can set up monitors for anomaly alerts and analyze merge queue performance. You can maintain awareness of Mergify service availability and optimize your development workflow using this Datadog integration.

## Setup

- **In Datadog**: Go to **Integrations**, select the Mergify tile and click **Install Integration**.
- Click **Connect Accounts** to begin authorization of this integration. You will be redirected to the [Mergify dashboard][3].
- **In the Mergify dashboard**: Log in, select the organization you would like to set up the **Datadog Integration** for and click **Connect the integration**.

Your Mergify statistics now appear in Datadog.

## Uninstallation

1. Go to the [Mergify dashboard][3], log in, and navigate to **Integrations**.
2. Click the **Disconnect** button in the **Datadog** tile.

Once this integration has been uninstalled, any previous authorizations are revoked.

Note: Ensure that all API keys associated with this integration have been disabled by searching for the integration name on the Datadog [API Keys page][4].

## Data Collected

### Metrics

See [metadata.csv][2] for a list of metrics provided by this check.

For the metric `mergify.queue_checks_outcome`, the available `outcome_type` tags are :

- `PR_DEQUEUED`: The number of PRs that have been manually removed from the queue
- `PR_AHEAD_DEQUEUED`: The number of PRs that have been removed from the queue because a PR ahead of it was removed from the queue
- `PR_AHEAD_FAILED_TO_MERGE`: The number of PRs that have been removed from the queue because a PR ahead of it failed to merge
- `PR_WITH_HIGHER_PRIORITY_QUEUED`: The number of PRs that have been removed from the queue because a PR with higher priority has been queued
- `PR_QUEUED_TWICE`: The number of PRs that have been removed from the queue because they have been queued twice
- `SPECULATIVE_CHECK_NUMBER_REDUCED`: The number of PRs that have been removed from the queue because the number of speculative checks in the config was changed
- `CHECKS_TIMEOUT`: The number of PRs that have been removed from the queue because the speculative checks have timed out
- `CHECKS_FAILED`: The number of PRs that have been removed from the queue because the speculative checks have failed
- `QUEUE_RULE_MISSING`: The number of PRs that have been removed from the queue because the queue rule that was used to queue the PR has been removed from the config
- `UNEXPECTED_QUEUE_CHANGE`: The number of PRs that have been removed from the queue because a user made an operation on the queued pull request
- `PR_FROZEN_NO_CASCADING`: The number of PRs that have been removed from the queue because they were frozen by a freeze with no cascading effect
- `TARGET_BRANCH_CHANGED`: The number of PRs that have been removed from the queue because the PR's target branch was changed
- `TARGET_BRANCH_MISSING`: The number of PRs that have been removed from the queue because the PR's target branch does not exist anymore
- `PR_UNEXPECTEDLY_FAILED_TO_MERGE`: The number of PRs that have been removed from the queue because they unexpectedly failed to get merged
- `BATCH_MAX_FAILURE_RESOLUTION_ATTEMPTS`: The number of PRs that have been removed from the queue because the maximum batch failure resolution attempts have been reached

### Service Checks

Mergify does not include any service checks.

### Events

Mergify does not include any events.

## Support

Need help? Contact [Mergify support][1].

[1]: https://mergify.com
[2]: https://github.com/DataDog/integrations-extras/blob/master/mergify/metadata.csv
[3]: https://dashboard.mergify.com
[4]: https://app.datadoghq.com/organization-settings/api-keys?filter=Mergify
226 changes: 226 additions & 0 deletions mergify_oauth/assets/dashboards/mergify_overview.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,226 @@
{
"title": "Mergify Overview",
"description": "# Faster and Safer Code Merge\n\n**Merge Queue**: Queue, Update and Merge your Pull Requests.\n**Workflow Automation**: Automate your code merge processes.\n\nSave Time. Save Money. Secure your code.\nImprove your developer experience.\n\nThis is an example of Datadog merge queue dashboard you can get from https://mergify.com/.",
"widgets": [
{
"id": 6714248528946580,
"definition": {
"type": "image",
"url": "https://dka575ofm4ao0.cloudfront.net/pages-transactional_logos/retina/228695/mergify-logo-title-horizontal-w200.png",
"sizing": "contain",
"margin": "md",
"has_background": false,
"has_border": false,
"vertical_align": "center",
"horizontal_align": "center"
},
"layout": {
"x": 0,
"y": 0,
"width": 4,
"height": 2
}
},
{
"id": 6680129273384530,
"definition": {
"type": "note",
"content": "# Faster and Safer Code Merge\n\n**Merge Queue**: Queue, Update and Merge your Pull Requests.\n\n**Workflow Automation**: Automate your code merge processes.\n\nSave Time. Save Money. Secure your code.\nImprove your developer experience.\n\nThis is an example of Datadog merge queue dashboard you can get from https://mergify.com/.",
"background_color": "white",
"font_size": "14",
"text_align": "left",
"vertical_align": "top",
"show_tick": false,
"tick_pos": "50%",
"tick_edge": "left",
"has_padding": true
},
"layout": {
"x": 4,
"y": 0,
"width": 8,
"height": 2
}
},
{
"id": 4473883965068244,
"definition": {
"title": "Merge Queue Length",
"title_size": "16",
"title_align": "left",
"show_legend": true,
"legend_layout": "horizontal",
"legend_columns": [
"avg",
"min",
"max",
"value",
"sum"
],
"type": "timeseries",
"requests": [
{
"formulas": [
{
"formula": "query1"
}
],
"queries": [
{
"name": "query1",
"data_source": "metrics",
"query": "max:mergify.merge_queue_length{$repository} by {branch,repository}"
}
],
"response_format": "timeseries",
"style": {
"palette": "dog_classic",
"line_type": "solid",
"line_width": "normal"
},
"display_type": "line"
}
]
},
"layout": {
"x": 0,
"y": 2,
"width": 12,
"height": 2
}
},
{
"id": 295070581551368,
"definition": {
"title": "Median Time to Merge Per Repository, Per Branch, and Per Queue",
"type": "treemap",
"requests": [
{
"response_format": "scalar",
"queries": [
{
"name": "query2",
"data_source": "metrics",
"query": "avg:mergify.time_to_merge.median{$repository} by {repository,branch,queue}",
"aggregator": "last"
}
],
"formulas": [
{
"formula": "query2"
}
]
}
]
},
"layout": {
"x": 0,
"y": 4,
"width": 12,
"height": 3
}
},
{
"id": 5619028571653368,
"definition": {
"title": "Queue Checks Outcomes",
"title_size": "16",
"title_align": "left",
"requests": [
{
"response_format": "scalar",
"formulas": [
{
"formula": "query1",
"limit": {
"order": "desc"
}
}
],
"queries": [
{
"query": "sum:mergify.queue_checks_outcome{$repository} by {outcome_type}",
"data_source": "metrics",
"name": "query1",
"aggregator": "last"
}
],
"style": {
"palette": "datadog16"
}
}
],
"type": "sunburst",
"legend": {
"type": "automatic"
}
},
"layout": {
"x": 0,
"y": 7,
"width": 12,
"height": 4
}
},
{
"id": 5315420267683440,
"definition": {
"title": "Queue Freeze Duration",
"title_size": "16",
"title_align": "left",
"show_legend": true,
"legend_layout": "auto",
"legend_columns": [
"avg",
"min",
"max",
"value",
"sum"
],
"time": {},
"type": "timeseries",
"requests": [
{
"formulas": [
{
"formula": "query1"
}
],
"queries": [
{
"name": "query1",
"data_source": "metrics",
"query": "avg:mergify.queue_freeze.duration{$repository} by {queue,repository}"
}
],
"response_format": "timeseries",
"style": {
"palette": "dog_classic",
"order_by": "values",
"line_type": "solid",
"line_width": "normal"
},
"display_type": "line"
}
]
},
"layout": {
"x": 0,
"y": 11,
"width": 12,
"height": 3
}
}
],
"template_variables": [
{
"name": "repository",
"prefix": "repository",
"available_values": [],
"default": "*"
}
],
"layout_type": "ordered",
"notify_list": [],
"reflow_type": "fixed"
}
20 changes: 20 additions & 0 deletions mergify_oauth/assets/oauth_clients.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"integration": {
"scopes": [
"api_keys_write"
],
"client_role": "integration",
"name": "Mergify Integration OAuth Client",
"onboarding_url": "https://dashboard.mergify.com/datadog-oauth",
"description": "Mergify Integration OAuth Client",
"redirect_uris": [
"https://dashboard.mergify.com/front/integrations/callback/datadog-US1",
"https://dashboard.mergify.com/front/integrations/callback/datadog-US3",
"https://dashboard.mergify.com/front/integrations/callback/datadog-US5",
"https://dashboard.mergify.com/front/integrations/callback/datadog-EU1",
"https://dashboard.mergify.com/front/integrations/callback/datadog-US1-FED",
"https://dashboard.mergify.com/front/integrations/callback/datadog-AP1"
],
"id": "7e609702-7d7d-11ef-9fee-da7ad0900002"
}
}
1 change: 1 addition & 0 deletions mergify_oauth/assets/service_checks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[]
Binary file added mergify_oauth/images/dashboard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
65 changes: 65 additions & 0 deletions mergify_oauth/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
{
"manifest_version": "2.0.0",
"app_uuid": "3b53fe32-b47e-4a29-881f-b90397a11589",
"app_id": "mergify-oauth",
"display_on_public_website": true,
"tile": {
"overview": "README.md#Overview",
"configuration": "README.md#Setup",
"support": "README.md#Support",
"uninstallation": "README.md#Uninstallation",
"changelog": "CHANGELOG.md",
"description": "Monitor your Mergify merge queue stats",
"title": "Mergify",
"media": [
{
"media_type": "image",
"caption": "Mergify - Dashboard",
"image_url": "images/dashboard.png"
}
],
"classifier_tags": [
"Supported OS::Linux",
"Supported OS::Windows",
"Supported OS::macOS",
"Submitted Data Type::Metrics",
"Category::Developer Tools",
"Offering::Integration"
]
},
"assets": {
"dashboards": {
"Mergify Merge Queue Overview": "assets/dashboards/mergify_overview.json"
},
"integration": {
"source_type_name": "Mergify OAuth",
"configuration": {},
"events": {
"creates_events": false
},
"metrics": {
"metadata_path": "metadata.csv",
"check": [
"mergify.merge_queue_length",
"mergify.time_to_merge.median",
"mergify.time_to_merge.mean",
"mergify.queue_checks_outcome",
"mergify.queue_freeze.duration"
],
"prefix": "mergify."
},
"service_checks": {
"metadata_path": "assets/service_checks.json"
},
"source_type_id": 10350,
"auto_install": true
},
"oauth": "assets/oauth_clients.json"
},
"author": {
"support_email": "[email protected]",
"name": "Mergify",
"homepage": "https://mergify.com",
"sales_email": "[email protected]"
}
}
Loading

0 comments on commit 2dfe9f5

Please sign in to comment.