Move the consolidated labs to the Caldova scenario #38
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Content checks | |
| # Tier 0: fast, static checks that need no Azure resources and no credentials. | |
| # These catch the failure modes that actually reach learners - a code block that | |
| # won't parse, frontmatter that breaks the site build, a link to a page that was | |
| # renamed, or line endings drifting back to CRLF. | |
| on: | |
| # No path filter: the whole suite takes about ten seconds, and filtering | |
| # only creates blind spots. A change to _includes or a root markdown file | |
| # can break every lab page, so it should be checked too. | |
| pull_request: | |
| push: | |
| branches: [main] | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| jobs: | |
| content-checks: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| # Matches what the labs tell learners to install ("Python 3.13 or | |
| # later") and what they are tested against. Testing on anything else | |
| # risks passing on a configuration no learner uses. | |
| python-version: "3.13" | |
| - name: Install check dependencies | |
| run: pip install --disable-pip-version-check -r tools/checks/requirements.txt | |
| # Each check runs as its own step so a failure is obvious in the UI, and | |
| # always() means one failing check doesn't hide the others. | |
| - name: Frontmatter is valid | |
| if: always() | |
| run: python tools/checks/check_frontmatter.py | |
| - name: Python code blocks parse | |
| if: always() | |
| run: python tools/checks/check_code_blocks.py | |
| - name: Links and media resolve | |
| if: always() | |
| run: python tools/checks/check_links.py | |
| - name: Line endings match .gitattributes | |
| if: always() | |
| run: python tools/checks/check_line_endings.py | |
| - name: Generated blocks in the lab pages are current | |
| if: always() | |
| run: python tools/generate_lab_blocks.py --check | |
| - name: Shared lab infrastructure is in sync | |
| if: always() | |
| run: python Labfiles/_shared/sync.py --check |