CI Validation
Integrate sql-splitter validation into your CI/CD pipeline.
Basic CI Gate
Section titled “Basic CI Gate”#!/bin/bashset -euo pipefail
sql-splitter validate "dumps/*.sql" --strict --fail-fast --progressExit codes:
0: All dumps valid1: Validation errors or warnings (with--strict)
GitHub Actions
Section titled “GitHub Actions”name: Validate SQL Dumps
on: push: paths: - "dumps/**/*.sql" pull_request: paths: - "dumps/**/*.sql"
jobs: validate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4
- name: Install sql-splitter run: cargo install sql-splitter
- name: Validate dumps run: | sql-splitter validate "dumps/**/*.sql" \ --strict \ --fail-fast \ --json > validation-results.json
- name: Upload results if: always() uses: actions/upload-artifact@v4 with: name: validation-results path: validation-results.jsonGitLab CI
Section titled “GitLab CI”validate-dumps: stage: test image: rust:latest before_script: - cargo install sql-splitter script: - sql-splitter validate "dumps/**/*.sql" --strict --fail-fast rules: - changes: - dumps/**/*.sqlJSON Output for Reporting
Section titled “JSON Output for Reporting”sql-splitter validate "dumps/*.sql" --json | jq '.results[] | select(.passed == false)'Example output:
{ "file": "dumps/broken.sql", "passed": false, "errors": [ { "type": "syntax_error", "line": 42, "message": "Unexpected token near 'CREAT'" } ], "warnings": []}Parallel Validation
Section titled “Parallel Validation”For many dump files:
find dumps -name '*.sql.gz' -print0 | \ xargs -0 -n1 -P4 sql-splitter validate --strictPre-commit Hook
Section titled “Pre-commit Hook”#!/bin/bash# Find staged SQL filesstaged_sql=$(git diff --cached --name-only --diff-filter=ACM | grep '\.sql$' || true)
if [ -n "$staged_sql" ]; then echo "Validating SQL files..." echo "$staged_sql" | xargs sql-splitter validate --strictfiValidation in Docker
Section titled “Validation in Docker”FROM rust:latest as builderRUN cargo install sql-splitter
FROM debian:bookworm-slimCOPY --from=builder /usr/local/cargo/bin/sql-splitter /usr/local/bin/ENTRYPOINT ["sql-splitter"]docker build -t sql-splitter .docker run -v $(pwd):/data sql-splitter validate /data/dump.sql --strictBest Practices
Section titled “Best Practices”- Use
--strict- Treat warnings as errors - Use
--fail-fast- Stop on first error for faster feedback - Use
--json- Machine-readable output for reporting - Run on PRs - Catch issues before merge
- Cache the binary - Speed up CI runs