test comment #87
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: CI | |
| on: | |
| push: | |
| branches: [beta] | |
| pull_request: | |
| branches: [beta] | |
| permissions: | |
| contents: read | |
| jobs: | |
| lint: | |
| name: Lint & Format | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Check set:html safety | |
| run: | | |
| if grep -r "set:html" src --include="*.astro" | grep -Ev "set:html=\{(safeMarkdown\.|DOMPurify\.sanitize)"; then | |
| echo "Error: Found set:html usage without safeMarkdown or DOMPurify.sanitize" | |
| exit 1 | |
| fi | |
| echo "All set:html usages are safe" | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: "22" | |
| cache: "pnpm" | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: ESLint - TypeScript validity | |
| run: pnpm lint | |
| - name: Stylelint - CSS compatibility | |
| run: pnpm lint:css | |
| - name: Prettier - Code formatting | |
| run: pnpm format:check | |
| - name: Type check | |
| run: pnpm check | |
| build: | |
| name: Build | |
| runs-on: ubuntu-22.04 | |
| needs: [lint] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: "22" | |
| cache: "pnpm" | |
| - name: Install production dependencies | |
| run: pnpm install --frozen-lockfile --prod | |
| - name: Build site | |
| run: pnpm build | |
| - name: Upload build artifacts | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: site-build | |
| path: dist/ | |
| retention-days: 1 | |
| validate: | |
| name: Validate HTML | |
| runs-on: ubuntu-22.04 | |
| needs: [build] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: "22" | |
| cache: "pnpm" | |
| - name: Download build artifacts | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: site-build | |
| path: dist/ | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Validate built HTML | |
| run: pnpm exec htmlhint 'dist/**/*.html' |