@@ -331,11 +331,31 @@ tasks:
331331 cmds :
332332 - task : workflow:validate
333333
334- workflow:validate :
335- desc : Validate GitHub Actions workflows against JSON schema
334+ # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/check-workflows-task/Taskfile.yml
335+ ci:validate :
336+ desc : Validate GitHub Actions workflows against their JSON schema
337+ vars :
338+ # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/github-workflow.json
339+ WORKFLOW_SCHEMA_URL : https://json.schemastore.org/github-workflow
340+ WORKFLOW_SCHEMA_PATH :
341+ sh : mktemp -t workflow-schema-XXXXXXXXXX.json
342+ WORKFLOWS_DATA_PATH : " ./.github/workflows/*.{yml,yaml}"
336343 cmds :
337- - wget --output-document={{ .WORKFLOW_SCHEMA_PATH }} https://json.schemastore.org/github-workflow
338- - npx ajv-cli validate --strict=false -s {{ .WORKFLOW_SCHEMA_PATH }} -d "./.github/workflows/*.{yml,yaml}"
344+ - |
345+ wget \
346+ --quiet \
347+ --output-document="{{.WORKFLOW_SCHEMA_PATH}}" \
348+ {{.WORKFLOW_SCHEMA_URL}}
349+ - |
350+ npx \
351+ --package=ajv-cli \
352+ --package=ajv-formats \
353+ ajv validate \
354+ --all-errors \
355+ --strict=false \
356+ -c ajv-formats \
357+ -s "{{.WORKFLOW_SCHEMA_PATH}}" \
358+ -d "{{.WORKFLOWS_DATA_PATH}}"
339359
340360 # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/check-general-formatting-task/Taskfile.yml
341361 general:check-formatting :
@@ -396,7 +416,5 @@ vars:
396416
397417 PRETTIER : prettier@2.1.2
398418
399- WORKFLOW_SCHEMA_PATH : " $(mktemp -t gha-workflow-schema-XXXXXXXXXX.json)"
400-
401419 CODESPELL_SKIP_OPTION : ' --skip "./.git,go.mod,go.sum,./arduino-lint,./arduino-lint.exe,./internal/rule/rulefunction/testdata/libraries/MisspelledSentenceParagraphValue/library.properties,./site"'
402420 CODESPELL_IGNORE_WORDS_OPTION : " --ignore-words ./etc/codespell-ignore-words-list.txt"
0 commit comments