# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/check-taskfiles.md name: Check Taskfiles # See: https://docs.github.com/en/actions/reference/events-that-trigger-workflows on: push: paths: - ".github/workflows/check-taskfiles.ya?ml" - "**/Taskfile.ya?ml" pull_request: paths: - ".github/workflows/check-taskfiles.ya?ml" - "**/Taskfile.ya?ml" schedule: # Run every Tuesday at 8 AM UTC to catch breakage resulting from changes to the JSON schema. - cron: "0 8 * * TUE" workflow_dispatch: repository_dispatch: jobs: validate: name: Validate ${{ matrix.file }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: file: # TODO: add paths to any additional Taskfiles here - ./**/Taskfile.yml steps: - name: Checkout repository uses: actions/checkout@v4 - name: Download JSON schema for Taskfiles id: download-schema uses: carlosperate/download-file-action@v2 with: # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/taskfile.json file-url: https://taskfile.dev/schema.json location: ${{ runner.temp }}/taskfile-schema - name: Install JSON schema validator run: | sudo npm install \ --global \ ajv-cli \ ajv-formats - name: Validate ${{ matrix.file }} run: | # See: https://github.com/ajv-validator/ajv-cli#readme ajv validate \ --all-errors \ --strict=false \ -c ajv-formats \ -s "${{ steps.download-schema.outputs.file-path }}" \ -d "${{ matrix.file }}"