Extract Azure DevOps Pull Request metrics to SQLite and generate PowerBI-compatible CSVs.
Project description
ado-git-repo-insights
Extract Azure DevOps Pull Request metrics to SQLite and generate PowerBI-compatible CSVs.
Quick Start
Choose your path:
| I want to... | Use |
|---|---|
| Analyze PRs for my team via Azure DevOps pipelines | ADO Extension |
| Run analysis locally or integrate into custom CI/CD | Python CLI |
Azure DevOps Extension
The ADO Extension provides a self-contained pipeline task with a built-in PR Insights Dashboard directly in your Azure DevOps project.
What you get:
- Pipeline task that extracts PR metrics automatically
- Interactive dashboard in your ADO project navigation
- No Python installation required
- PowerBI-compatible CSV exports
Get started: Extension User Guide
Minimal Pipeline Example
variables:
- group: ado-insights-secrets # Contains PAT_SECRET
steps:
- task: ExtractPullRequests@2
inputs:
organization: 'MyOrg'
projects: 'Project1,Project2'
pat: '$(PAT_SECRET)'
- publish: $(Pipeline.Workspace)/aggregates
artifact: aggregates
Python CLI
The Python CLI provides full control for local analysis, custom scripts, and non-ADO CI/CD systems.
pip install ado-git-repo-insights
What you get:
- Command-line tool for extraction and CSV generation
- Local dashboard server
- Configuration file support
- Works anywhere Python runs
Get started: CLI User Guide
Basic Usage
# Extract PR data
ado-insights extract \
--organization MyOrg \
--projects "Project1,Project2" \
--pat $ADO_PAT \
--database ./ado-insights.sqlite
# Generate CSVs for PowerBI
ado-insights generate-csv \
--database ./ado-insights.sqlite \
--output ./csv_output
# View local dashboard
ado-insights build-aggregates --db ./ado-insights.sqlite --out ./dataset
ado-insights dashboard --dataset ./dataset --open
Documentation
For End Users
| Document | Description |
|---|---|
| Extension User Guide | Complete setup for ADO Extension users |
| CLI User Guide | Complete setup for Python CLI users |
| Troubleshooting | Common issues and solutions |
Reference
| Document | Description |
|---|---|
| CLI Command Reference | All CLI commands and options |
| Task Input Reference | Extension task configuration |
| CSV Schema | PowerBI-compatible output format |
| Dataset Contract | Dashboard data format specification |
| Architecture | System design and data flow diagrams |
Operations
| Document | Description |
|---|---|
| Runbook | Monitoring, recovery, and operational procedures |
| Data Retention | Storage model and security posture |
For Developers
| Document | Description |
|---|---|
| Contributing Guide | How to contribute to this project |
| Development Setup | Setting up the development environment |
| Testing Guide | Running and writing tests |
| UI Bundle Sync | Dashboard UI synchronization process |
| Changelog | Version history and release notes |
Governance
| Document | Description |
|---|---|
| Invariants | 25 non-negotiable system invariants |
| Definition of Done | Completion criteria for features |
| Victory Gates | Verification checkpoints |
Feature Comparison
| Feature | CLI | Extension |
|---|---|---|
| Installation | pip install |
ADO Marketplace |
| Requires Python | Yes | No (bundled) |
| Pipeline syntax | Script steps | Task step |
| Works outside ADO | Yes | No |
| PR Insights Dashboard | Local server | Built into ADO |
| Configuration | YAML file or CLI args | Task inputs |
| Flexibility | Higher | Standard |
How It Works
- Extract — Fetches completed PRs from Azure DevOps REST API
- Store — Persists data in SQLite with UPSERT semantics
- Generate — Produces PowerBI-compatible CSVs and dashboard aggregates
- Visualize — View metrics in the PR Insights Dashboard
The system uses incremental extraction by default (daily) with optional backfill mode to catch late changes (reviewer votes, status updates).
Security
- PAT with Code (Read) scope — Minimum required permission
- PATs are never logged — Secrets are redacted from all output
- No secrets stored at rest — Database contains only PR metadata
- Dashboard access — Requires Build Read permission on the analytics pipeline
Support
- Issues & Features: GitHub Issues
- Publisher: OddEssentials
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ado_git_repo_insights-5.1.0.tar.gz.
File metadata
- Download URL: ado_git_repo_insights-5.1.0.tar.gz
- Upload date:
- Size: 970.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ad9e2a1bb852e05f2fe79ed517b48a2bbf00de9b8390fa276712d3af316f985
|
|
| MD5 |
5d093f813d5aa9894e4fb586212e2981
|
|
| BLAKE2b-256 |
ae4799920d1becf402ba522fe5f2aca2fbe8d78a2b43bafcbcb69b2fb92c1aed
|
Provenance
The following attestation bundles were made for ado_git_repo_insights-5.1.0.tar.gz:
Publisher:
release.yml on oddessentials/ado-git-repo-insights
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ado_git_repo_insights-5.1.0.tar.gz -
Subject digest:
3ad9e2a1bb852e05f2fe79ed517b48a2bbf00de9b8390fa276712d3af316f985 - Sigstore transparency entry: 849714069
- Sigstore integration time:
-
Permalink:
oddessentials/ado-git-repo-insights@9346bb5c254702505040e4c281765b20f6c3f83f -
Branch / Tag:
refs/heads/main - Owner: https://github.com/oddessentials
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9346bb5c254702505040e4c281765b20f6c3f83f -
Trigger Event:
push
-
Statement type:
File details
Details for the file ado_git_repo_insights-5.1.0-py3-none-any.whl.
File metadata
- Download URL: ado_git_repo_insights-5.1.0-py3-none-any.whl
- Upload date:
- Size: 123.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d61e00f5a79d73c0e21940d3c4c96ec359e21252f0c7f1627a04b1fa6f691322
|
|
| MD5 |
3f696945e20692ebec4b89af31a024f6
|
|
| BLAKE2b-256 |
c54a8b8099083201a49c715b37e07420b03fcd844b6c9b1d8ab2ba184ddd1095
|
Provenance
The following attestation bundles were made for ado_git_repo_insights-5.1.0-py3-none-any.whl:
Publisher:
release.yml on oddessentials/ado-git-repo-insights
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ado_git_repo_insights-5.1.0-py3-none-any.whl -
Subject digest:
d61e00f5a79d73c0e21940d3c4c96ec359e21252f0c7f1627a04b1fa6f691322 - Sigstore transparency entry: 849714087
- Sigstore integration time:
-
Permalink:
oddessentials/ado-git-repo-insights@9346bb5c254702505040e4c281765b20f6c3f83f -
Branch / Tag:
refs/heads/main - Owner: https://github.com/oddessentials
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9346bb5c254702505040e4c281765b20f6c3f83f -
Trigger Event:
push
-
Statement type: