Validate data against YAML contracts in your CI pipeline. A solemn vow on your data.
- uses: ludovicschmetz-stack/datavow-action@v1
with:
contracts: contracts/
source: data/That's it. DataVow validates your data against your YAML contracts and fails the build on CRITICAL violations.
name: Data Contract Validation
on: [push, pull_request]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ludovicschmetz-stack/datavow-action@v1
with:
contracts: contracts/
source: data/- uses: ludovicschmetz-stack/datavow-action@v1
id: datavow
with:
contracts: contracts/ # Directory or glob (contracts/*.yaml)
source: data/ # Source directory (matched by name convention)
fail-on: critical # critical | warning | never
python-version: "3.12" # Python version
datavow-version: latest # Pin a specific version: "0.1.0"
generate-report: "true" # Upload HTML reports as artifact
report-format: html # html | markdown
comment-on-pr: "true" # Post Vow Score on PRs- uses: ludovicschmetz-stack/datavow-action@v1
id: datavow
with:
contracts: contracts/
source: data/
fail-on: never # Don't fail — handle it yourself
- name: Check score
run: |
echo "Score: ${{ steps.datavow.outputs.score }}"
echo "Verdict: ${{ steps.datavow.outputs.verdict }}"
if [ "${{ steps.datavow.outputs.score }}" -lt 80 ]; then
echo "::warning::Vow Score below 80 — review data quality"
fi| Input | Description | Required | Default |
|---|---|---|---|
contracts |
Path to contracts directory or glob | Yes | contracts |
source |
Path to data sources directory | Yes | data |
fail-on |
Fail threshold: critical, warning, never |
No | critical |
python-version |
Python version | No | 3.12 |
datavow-version |
DataVow version (latest or pinned) |
No | latest |
generate-report |
Generate and upload HTML reports | No | true |
report-format |
Report format: html or markdown |
No | html |
comment-on-pr |
Post Vow Score as PR comment | No | false |
| Output | Description | Example |
|---|---|---|
score |
Average Vow Score (0-100) | 92 |
verdict |
Overall verdict | Vow Strained |
exit-code |
Validation exit code | 0 |
report-path |
Path to reports directory | datavow-reports |
DataVow matches contracts to data sources by filename:
contracts/orders.yaml → data/orders.csv
contracts/users.yaml → data/users.parquet
contracts/events.yaml → data/events.json
Supported formats: .csv, .parquet, .json, .jsonl, .ndjson, .tsv
Set comment-on-pr: "true" to get automatic Vow Score comments on pull requests:
## ⚠️ DataVow — Vow Strained
**Vow Score:** 87/100
▸ Validation details (expandable)
Comments are updated on each push — no duplicate comments.
When generate-report is enabled, HTML reports are uploaded as a build artifact named datavow-reports. Download them from the Actions tab to share with stakeholders.
Apache 2.0 — same as DataVow.