GitHub
Summary​
This plugin collects GitHub data through REST API and GraphQL API. It then computes and visualizes various DevOps metrics from the GitHub data, which helps tech leads, QA and DevOps engineers, and project managers to answer questions such as:
- Is this month more productive than last?
- How fast do we respond to customer requirements?
- Was our quality improved or not?
Supported Versions​
Available for GitHub Cloud. Check this doc for more details.
Entities​
Check out the GitHub entities collected by this plugin.
Data Refresh Policy​
Check out the data refresh policy of this plugin.
Metrics​
Metrics that can be calculated based on the data collected from GitHub:
- Requirement Count
- Requirement Lead Time
- Requirement Delivery Rate
- Requirement Granularity
- Bug Age
- Bug Count per 1k Lines of Code
- Incident Age
- Incident Count per 1k Lines of Code
- Commit Count
- Commit Author Count
- Added Lines of Code
- Deleted Lines of Code
- PR Count
- PR Cycle Time
- PR Coding Time
- PR Pickup Time
- PR Review Time
- PR Deploy Time
- PR Time To Merge
- PR Merge Rate
- PR Review Depth
- PR Size
- Build Count
- Build Duration
- Build Success Rate
- DORA - Deployment Frequency
- DORA - Lead Time for Changes
- DORA - Median Time to Restore Service
- DORA - Change Failure Rate
Configuration​
- Configuring GitHub via Config UI
- Configuring GitHub via Config UI's advanced mode.
- Configurable via Environment Variables.
API Sample Request​
You can trigger data collection by making a POST request to /pipelines.
curl 'http://localhost:8080/pipelines' \
--header 'Content-Type: application/json' \
--data-raw '
{
"name": "project1-BLUEPRINT",
"blueprintId": 1,
"plan": [
[
{
"plugin": "github",
"options": {
"connectionId": 1,
"scopeId": "384111310",
"transformationRules":{
"deploymentPattern":"",
"productionPattern":"",
"issueComponent":"",
"issuePriority":"(high|medium|low)$",
"issueSeverity":"",
"issueTypeBug":"(bug)$",
"issueTypeIncident":"",
"issueTypeRequirement":"(feature|feature-request)$",
"prBodyClosePattern":"",
"prComponent":"",
"prType":""
}
}
}
]
]
}
'
or
curl 'http://localhost:8080/pipelines' \
--header 'Content-Type: application/json' \
--data-raw '
{
"name": "project1-BLUEPRINT",
"blueprintId": 1,
"plan": [
[
{
"plugin": "github",
"options": {
"connectionId": 1,
"owner": "apache",
"repo": "incubator-devlake",
"transformationRules":{
"deploymentPattern":"",
"productionPattern":"",
"issueComponent":"",
"issuePriority":"(high|medium|low)$",
"issueSeverity":"",
"issueTypeBug":"(bug)$",
"issueTypeIncident":"",
"issueTypeRequirement":"(feature|feature-request)$",
"prBodyClosePattern":"",
"prComponent":"",
"prType":""
}
}
}
]
]
}
'