sharp 0.35.5 requires Node >=20.9.0, so the node:18-alpine image failed to load the linuxmusl-arm64 binary and the production build broke. Move the image and both CI workflows to Node 24 (current Active LTS), raise the engines floor to the version sharp actually needs, and declare packageManager to silence the corepack warning. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
72 lines
1.8 KiB
YAML
72 lines
1.8 KiB
YAML
name: Code Quality Check
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
- master
|
|
- develop
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
- master
|
|
- develop
|
|
|
|
jobs:
|
|
quality-check:
|
|
name: Lint & Type Check
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: '24'
|
|
|
|
- name: Setup pnpm
|
|
uses: pnpm/action-setup@v4
|
|
with:
|
|
version: 10
|
|
|
|
- name: Get pnpm store directory
|
|
shell: bash
|
|
run: |
|
|
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
|
|
|
|
- name: Setup pnpm cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ${{ env.STORE_PATH }}
|
|
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-pnpm-store-
|
|
|
|
- name: Install dependencies
|
|
run: pnpm install --frozen-lockfile
|
|
|
|
- name: Run ESLint
|
|
run: pnpm run lint
|
|
|
|
- name: Run TypeScript type check
|
|
run: pnpm run typecheck
|
|
|
|
- name: Comment PR on failure
|
|
if: failure() && github.event_name == 'pull_request'
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
github.rest.issues.createComment({
|
|
issue_number: context.issue.number,
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
body: '❌ Code quality check failed. Please run `./windsurf-commands.sh lintfix` and `./windsurf-commands.sh typecheck` locally to fix issues.'
|
|
})
|
|
|
|
- name: Notify on failure
|
|
if: failure()
|
|
run: |
|
|
echo "::error::Code quality check failed. Please fix linting and type errors before merging."
|