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?
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.
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":""
}
}
}
]
]
}
'