This file contains various examples of how to use the JSON Validator TypeScript Action.
name: Validate JSON Files
on: [push, pull_request]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: woeterman94/json-validator-typescript-action@v1name: Validate Configuration Files
on: [push, pull_request]
jobs:
validate-config:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Validate config files
uses: woeterman94/json-validator-typescript-action@v1
with:
folder: 'config'name: Validate Data Files
on: [push, pull_request]
jobs:
validate-data:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Validate data files
uses: woeterman94/json-validator-typescript-action@v1
with:
folder: 'data'
schema: 'schemas/data.schema.json'name: Validate with Custom Ignore
on: [push, pull_request]
jobs:
validate-custom:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Validate with custom ignore patterns
uses: woeterman94/json-validator-typescript-action@v1
with:
folder: '.'
ignore: |
**/node_modules/**
**/dist/**
**/build/**
**/.git/**
**/test/**
**/fixtures/**name: Validate All JSON
on: [push, pull_request]
jobs:
validate-multiple:
runs-on: ubuntu-latest
strategy:
matrix:
folder: ['config', 'data', 'schemas']
steps:
- uses: actions/checkout@v4
- name: Validate ${{ matrix.folder }}
uses: woeterman94/json-validator-typescript-action@v1
with:
folder: ${{ matrix.folder }}name: Validate and Report
on: [push, pull_request]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Validate JSON files
id: validation
uses: woeterman94/json-validator-typescript-action@v1
with:
folder: '.'
- name: Display results
if: always()
run: |
echo "✅ Valid files: ${{ steps.validation.outputs.valid-files }}"
echo "❌ Invalid files: ${{ steps.validation.outputs.invalid-files }}"name: Conditional Validation
on:
pull_request:
paths:
- '**.json'
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Validate only if JSON files changed
uses: woeterman94/json-validator-typescript-action@v1name: JSON Validation Report
on: [push, pull_request]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Validate JSON files (report only)
uses: woeterman94/json-validator-typescript-action@v1
with:
folder: '.'
fail-on-invalid: falseWith fail-on-invalid: false, invalid files are reported but the action exits successfully. The output format is the same as when fail-on-invalid: true (the default).
Here's an example JSON schema file that you can use:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"version": {
"type": "string",
"pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$"
},
"description": {
"type": "string"
},
"author": {
"type": "string"
}
},
"required": ["name", "version"]
}To test the action locally before committing:
# Install dependencies
npm install
# Build the action
npm run build
npm run package
# Test with environment variables
export INPUT_FOLDER="path/to/folder"
export INPUT_SCHEMA="path/to/schema.json" # optional
node dist/index.js