name: Quality on: pull_request: push: branches: - main schedule: - cron: "17 3 * * 1" workflow_dispatch: permissions: contents: read concurrency: group: quality-${{ github.ref }} cancel-in-progress: true jobs: docs: name: Docs quality gates runs-on: ubuntu-latest permissions: contents: read issues: write env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" steps: - name: Check out repository uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.x" - name: Check Markdown formatting uses: DavidAnson/markdownlint-cli2-action@v17 with: globs: "**/*.md" - name: Check Awesome list standards run: npx --yes awesome-lint - name: Check license text run: python scripts/check_license.py - name: Check resource type labels run: python scripts/check_resource_labels.py README.md - name: Check loop contract examples run: | python scripts/check_loop_contract_examples.py python scripts/preview_loop_contract.py examples/pr-babysitter-loop.json >/tmp/pr-babysitter-preview.md - name: Check Pages metadata run: python scripts/check_pages_metadata.py - name: Check internal links run: python scripts/check_internal_links.py - name: Check translation sync markers run: python scripts/check_translation_sync.py - name: Check links run: python scripts/verify_urls.py . --timeout 12 --workers 20 - name: Check main commit identity if: github.event_name == 'push' && github.ref == 'refs/heads/main' run: python scripts/check_commit_identity.py - name: Open an issue when a scheduled run fails if: failure() && github.event_name == 'schedule' env: GH_TOKEN: ${{ github.token }} run: | gh issue create \ --repo "$GITHUB_REPOSITORY" \ --title "Scheduled quality run failed on $(date -u +%Y-%m-%d)" \ --body "The weekly quality workflow failed, most likely a dead link or a stale translation sync marker. See the run: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"