Skip to content

ludovicschmetz-stack/datavow-action

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

DataVow Action

Validate data against YAML contracts in your CI pipeline. A solemn vow on your data.

GitHub Marketplace

Quick start

- 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.

Usage

Minimal

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/

Full options

- 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

Use outputs in subsequent steps

- 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

Inputs

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

Outputs

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

Name convention

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

PR comments

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.

Reports

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.

License

Apache 2.0 — same as DataVow.

About

GitHub Action for data contract validation with DataVow. Validate, score, gate, report.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors