34 lines
950 B
YAML
34 lines
950 B
YAML
name: "Validate JSON by JSON Schema"
|
|
description: "Validates JSON files using their $schema reference"
|
|
author: "Timo Behrendt <t.behrendt@t00n.de>"
|
|
|
|
inputs:
|
|
json-file:
|
|
description: "The JSON file to validate"
|
|
required: true
|
|
|
|
runs:
|
|
using: "composite"
|
|
steps:
|
|
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
|
|
with:
|
|
node-version: "latest"
|
|
- name: Extract schema
|
|
shell: bash
|
|
run: |
|
|
schema=$(jq -r '.["$schema"]' < ${{ inputs.json-file }})
|
|
if [ -n "$schema" ]; then
|
|
curl -s $schema > schema.json
|
|
else
|
|
echo "No schema found"
|
|
exit 0
|
|
fi
|
|
- name: Update the schema to the latest version
|
|
shell: bash
|
|
run: |
|
|
npx ajv-cli migrate -s schema.json -o schema.json
|
|
- name: Validate JSON
|
|
shell: bash
|
|
run: |
|
|
npx ajv-cli validate -s schema.json -d ${{ inputs.json-file }} --strict=false
|