Skip to main content

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.

Overview

This tool replaces the MongoDB-based ado-pull-request-metrics with a lightweight, file-based solution that:

  • Stores data in SQLite - No external database required
  • Runs as an Azure DevOps Pipeline Task - Scheduled daily extraction
  • Preserves the PowerBI CSV contract - Same filenames, columns, and ordering
  • Supports incremental + backfill extraction - Efficient daily updates with periodic convergence

Quick Start

Installation

pip install ado-git-repo-insights

CLI Usage

First Run (Extract Data)

ado-insights extract \
  --organization MyOrg \
  --projects "ProjectOne,ProjectTwo" \
  --pat $ADO_PAT \
  --database ./ado-insights.sqlite

Generate CSVs

ado-insights generate-csv \
  --database ./ado-insights.sqlite \
  --output ./csv_output

Backfill Mode (Weekly Convergence)

ado-insights extract \
  --organization MyOrg \
  --projects "ProjectOne,ProjectTwo" \
  --pat $ADO_PAT \
  --database ./ado-insights.sqlite \
  --backfill-days 60

Configuration

Create a config.yaml file:

organization: MyOrg

projects:
  - ProjectOne
  - ProjectTwo
  - Project%20Three  # URL-encoded names supported

api:
  base_url: https://dev.azure.com
  version: 7.1-preview.1
  rate_limit_sleep_seconds: 0.5
  max_retries: 3
  retry_delay_seconds: 5
  retry_backoff_multiplier: 2.0

backfill:
  enabled: true
  window_days: 60

Then run:

ado-insights extract --config config.yaml --pat $ADO_PAT

Azure DevOps Pipeline Integration

See sample-pipeline.yml for a complete example.

Scheduled Daily Extraction

schedules:
  - cron: "0 6 * * *"  # Daily at 6 AM UTC
    displayName: "Daily PR Extraction"
    branches:
      include: [main]
    always: true

Weekly Backfill

schedules:
  - cron: "0 6 * * 0"  # Weekly on Sunday
    displayName: "Weekly Backfill"
    branches:
      include: [main]
    always: true

CSV Output Contract

The following CSVs are generated with exact schema and column order for PowerBI compatibility:

File Columns
organizations.csv organization_name
projects.csv organization_name, project_name
repositories.csv repository_id, repository_name, project_name, organization_name
pull_requests.csv pull_request_uid, pull_request_id, organization_name, project_name, repository_id, user_id, title, status, description, creation_date, closed_date, cycle_time_minutes
users.csv user_id, display_name, email
reviewers.csv pull_request_uid, user_id, vote, repository_id

Governance

This project is governed by authoritative documents in agents/:

Development

# Setup
python -m venv .venv
source .venv/bin/activate  # or .venv\Scripts\activate on Windows
pip install -e .[dev]

# Lint + Format
ruff check .
ruff format .

# Type Check
mypy src/

# Test
pytest

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

ado_git_repo_insights-1.0.5.tar.gz (453.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ado_git_repo_insights-1.0.5-py3-none-any.whl (23.9 kB view details)

Uploaded Python 3

File details

Details for the file ado_git_repo_insights-1.0.5.tar.gz.

File metadata

  • Download URL: ado_git_repo_insights-1.0.5.tar.gz
  • Upload date:
  • Size: 453.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ado_git_repo_insights-1.0.5.tar.gz
Algorithm Hash digest
SHA256 ffa533bf19a006046358076bb8c1189513f41260402ec8f71e1d75d800094510
MD5 bd5fbb11ba4902361a2b9271d9040aff
BLAKE2b-256 c124b95d4d1b59bd7fdae6244e2a205cba2aa0e39c2fdd06a11c09342ac12a67

See more details on using hashes here.

Provenance

The following attestation bundles were made for ado_git_repo_insights-1.0.5.tar.gz:

Publisher: release.yml on oddessentials/ado-git-repo-insights

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ado_git_repo_insights-1.0.5-py3-none-any.whl.

File metadata

File hashes

Hashes for ado_git_repo_insights-1.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 9f611a369b60eca47a357391df51176e7d9c203749fcc6c96d65088b89d4b6bf
MD5 bac33bdbbeab17e0087247ca25c55e40
BLAKE2b-256 eb247a6a2410f94aa729e6e0105af24dd87de2f608cc09994fc0878baf1bd5a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for ado_git_repo_insights-1.0.5-py3-none-any.whl:

Publisher: release.yml on oddessentials/ado-git-repo-insights

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page