Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
e14ab36
feat: add script to check repository metrics via GitHub GraphQL API
Sep 22, 2025
461c5fc
chore: update permissions for metrics_check.sh script
Sep 22, 2025
c6ad63d
fix: make bash script more verbose with detailed GraphQL queries, res…
Sep 22, 2025
f9a09d7
refactor: Update script to gather comprehensive repository metrics in…
Sep 22, 2025
8717274
feat: Rewrite metrics check script in Python with GraphQL API integra…
Sep 22, 2025
60e46dd
feat: add metrics calls
Sep 22, 2025
9085fe3
feat: added files for simple demo environ... not tested thoroughly...…
janhalen Sep 22, 2025
2f1dc4f
refactor: extract graphql queries and modularize metrics check functions
Sep 22, 2025
632fd14
refactor: separate data retrieval and presentation logic in metrics_c…
Sep 22, 2025
50da3bb
fix: convert output to newline-delimited JSON format
Sep 22, 2025
c0eb9f0
refactor: convert metrics output to individual JSONL files per metric
Sep 22, 2025
a8f5448
refactor: Implement pagination and one-year date filtering for all Gi…
Sep 22, 2025
eb4bbe4
refactor: extract pagination logic into generic helper function and r…
Sep 22, 2025
7768cbd
feat: add comprehensive logging to monitor script execution and perfo…
Sep 22, 2025
8e99e2b
refactor: Separate concerns into distinct modules for GitHub client, …
Sep 22, 2025
a372d04
feat: add YAML configuration support for GitHub client and update met…
Sep 22, 2025
ed7f754
feat: add requirements.txt file
Sep 22, 2025
13c85a0
fix: add PyYAML to requirements and handle import error gracefully
Sep 22, 2025
eabf74e
fix: use smaller test repo
Sep 22, 2025
dddd9ec
refactor: extract configuration management into separate class
Sep 22, 2025
632fb7c
feat: make config file name configurable via parameter
Sep 22, 2025
348e9a7
feat: make output file names and directory paths configurable
Sep 22, 2025
074ccd7
refactor: Make GitHub API configuration values configurable through C…
Sep 22, 2025
c8f0187
fix: Pass required configuration object to GitHubClient constructor
Sep 22, 2025
3287b39
refactor: restructure config.yaml to use nested repo and output sections
Sep 22, 2025
99760c8
feat: Add support for repo owner/name and config file from environmen…
Sep 22, 2025
e13fc20
feat: put output in folder by default
Sep 22, 2025
d5819a1
feat: refactor folder structure
Sep 22, 2025
b7171c4
docs: add comprehensive README with installation, configuration, and …
Sep 22, 2025
c156f95
docs: update README to clarify markdown file collection and Python ve…
Sep 22, 2025
9823f10
feat: convert into single README file
Sep 22, 2025
565e5eb
fix: move GITHUB_TOKEN access from GitHubClient to Configuration class
Sep 22, 2025
a322fc6
feat: add support for GITHUB_TOKEN_FILE environment variable to read …
Sep 22, 2025
a963479
feat: ignore .token file
Sep 22, 2025
11095fc
feat: add Dockerfile for project containerization
Sep 22, 2025
5807a67
feat: security
Sep 22, 2025
625f86a
docs: add Docker container usage instructions to README.md
Sep 22, 2025
24ba3b1
feat: fix podman command
Sep 22, 2025
9a6a6f0
feat: add secret protection
Sep 23, 2025
9ee4230
feat: add rudimentary pipeline script
Sep 23, 2025
cdd20e4
feat: load all JSONL files from raw_data into corresponding tables
Sep 23, 2025
5339f56
refactor: prepend 'raw_' to each table name in duckdb import script
Sep 23, 2025
99da562
feat: move SQL script to separate pipeline.sql file for duckdb loading
Sep 23, 2025
7e97f82
fix: use -f instead of --init for duckdb command
Sep 23, 2025
0300f46
feat: add Kubernetes pod declaration for project health pipeline
Sep 23, 2025
1a5f9a1
fix: move health-analyzer to init container to run first
Sep 23, 2025
87145a4
fix: move volumes definition to correct location in pipeline.yaml
Sep 23, 2025
1908bdc
fix: remove incorrect subPath from volume mounts in pipeline.yaml
Sep 23, 2025
9ce1ddf
feat: convert existing containers to initContainers and add nginx tod…
Sep 23, 2025
ef9d814
feat: pipeline.sh runs podman kube play
Sep 23, 2025
67a16ac
fix: convert pipeline.sh to proper bash script with execution flags
Sep 23, 2025
dd1a0a1
feat: increase stability, load database
Sep 23, 2025
dfb5c8f
feat: add secret protection
Sep 23, 2025
d4d23dd
feat: add secret protection
Sep 23, 2025
989b623
fix: add further local files to .gitignore
Sep 23, 2025
79eadb8
fix: Add SQL queries for repository metrics analysis
Sep 23, 2025
b7adb57
feat: add boolean columns for pass/fail test results in all queries
Sep 23, 2025
79dc7f4
fix: replace datetime() with CURRENT_DATE - INTERVAL for DuckDB compa…
Sep 23, 2025
208308d
feat: add project health dashboard page with release, contributor, co…
Sep 23, 2025
65f8c65
docs: add SQL queries to project health dashboard markdown file
Sep 23, 2025
bcc48ff
feat: make evidence.dev present analysis results
Sep 23, 2025
4e3f999
Merge branch 'duckdb-evidence-connection' into duckdb-connection
Sep 23, 2025
704372d
Merge branch 'sql-queries' into duckdb-connection
Sep 23, 2025
07bbc37
Merge branch 'metrics-check'
Sep 23, 2025
90d1c89
refactor: simplify folder structure
Sep 23, 2025
fa73961
fix: replace todo container with evidence-app as final pipeline stage
Sep 23, 2025
9e7880e
fix: folder locations
Sep 23, 2025
224a008
fix: partially remove reliance on .local folder
Sep 23, 2025
f7ddf70
feat: make raw data available in evidence.dev
Sep 23, 2025
b2fa0ef
fix: update pipeline to use config/config.yaml for metrics-checker
Sep 23, 2025
262aade
doc: configurability using config/config.yaml
Sep 23, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .evidence/customization/custom-formatting.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"version": "1.0",
"customFormats": []
}
20 changes: 20 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
.env
.token
.local
**/.local
.aider*
.evidence/template
.svelte-kit
build
node_modules
.DS_Store
static/data
*.options.yaml
.vscode/settings.json
.evidence/meta
.npm/
.npm-cache/
npm-debug.log*
.vite/
.evidence/temp/

7 changes: 7 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
repos:
- repo: https://github.com/Yelp/detect-secrets
rev: v1.5.0
hooks:
- id: detect-secrets
args: ['--baseline', '.secrets.baseline']
additional_dependencies: ['gibberish-detector']
131 changes: 131 additions & 0 deletions .secrets.baseline
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
{
"version": "1.5.0",
"plugins_used": [
{
"name": "ArtifactoryDetector"
},
{
"name": "AWSKeyDetector"
},
{
"name": "AzureStorageKeyDetector"
},
{
"name": "Base64HighEntropyString",
"limit": 4.5
},
{
"name": "BasicAuthDetector"
},
{
"name": "CloudantDetector"
},
{
"name": "DiscordBotTokenDetector"
},
{
"name": "GitHubTokenDetector"
},
{
"name": "GitLabTokenDetector"
},
{
"name": "HexHighEntropyString",
"limit": 3.0
},
{
"name": "IbmCloudIamDetector"
},
{
"name": "IbmCosHmacDetector"
},
{
"name": "IPPublicDetector"
},
{
"name": "JwtTokenDetector"
},
{
"name": "KeywordDetector",
"keyword_exclude": ""
},
{
"name": "MailchimpDetector"
},
{
"name": "NpmDetector"
},
{
"name": "OpenAIDetector"
},
{
"name": "PrivateKeyDetector"
},
{
"name": "PypiTokenDetector"
},
{
"name": "SendGridDetector"
},
{
"name": "SlackDetector"
},
{
"name": "SoftlayerDetector"
},
{
"name": "SquareOAuthDetector"
},
{
"name": "StripeDetector"
},
{
"name": "TelegramBotTokenDetector"
},
{
"name": "TwilioKeyDetector"
}
],
"filters_used": [
{
"path": "detect_secrets.filters.allowlist.is_line_allowlisted"
},
{
"path": "detect_secrets.filters.common.is_ignored_due_to_verification_policies",
"min_level": 2
},
{
"path": "detect_secrets.filters.gibberish.should_exclude_secret",
"limit": 3.7
},
{
"path": "detect_secrets.filters.heuristic.is_indirect_reference"
},
{
"path": "detect_secrets.filters.heuristic.is_likely_id_string"
},
{
"path": "detect_secrets.filters.heuristic.is_lock_file"
},
{
"path": "detect_secrets.filters.heuristic.is_not_alphanumeric_string"
},
{
"path": "detect_secrets.filters.heuristic.is_potential_uuid"
},
{
"path": "detect_secrets.filters.heuristic.is_prefixed_with_dollar_sign"
},
{
"path": "detect_secrets.filters.heuristic.is_sequential_string"
},
{
"path": "detect_secrets.filters.heuristic.is_swagger_file"
},
{
"path": "detect_secrets.filters.heuristic.is_templated_secret"
}
],
"results": {},
"generated_at": "2025-09-23T04:15:11Z"
}
19 changes: 19 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
FROM python:3.13-slim

WORKDIR /app

COPY requirements.txt .

# Run as non-root user
RUN useradd --create-home --shell /bin/bash appuser \
&& mkdir -p output \
&& chown -R appuser:appuser output

USER appuser

RUN pip install --no-cache-dir -r requirements.txt

COPY src/ ./src/
COPY config/ ./config/

ENTRYPOINT ["python", "./src/metrics_check.py"]
Loading