skillhub/.github/workflows/pr-tests.yml
dongmucat 18a7fb1f77 chore(deps): bump brace-expansion and add docs-build PR check
web/:
- pnpm.overrides force brace-expansion>=1.1.13 and >=2.0.3
  to address GHSA-f886-m6hf-6m8v (transitive via eslint/typescript-eslint -> minimatch)
- pnpm-lock.yaml resolves brace-expansion 1.1.15 / 2.1.1

ci:
- add docs-build job to pr-tests.yml, gated by docs/skillhub/** path filter
  so docs-only PRs and dependency overrides on docs are exercised before merge
2026-05-28 09:47:39 +08:00

101 lines
2.4 KiB
YAML

name: PR Tests
on:
pull_request:
types:
- opened
- synchronize
- reopened
- ready_for_review
workflow_dispatch:
concurrency:
group: pr-tests-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
web-tests:
name: Web Build And Test
if: ${{ github.event_name != 'pull_request' || !github.event.pull_request.draft }}
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up pnpm
uses: pnpm/action-setup@v4
with:
version: 9
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: pnpm
cache-dependency-path: web/pnpm-lock.yaml
- name: Build frontend
run: make build-frontend
- name: Run frontend unit tests
run: make test-frontend
server-tests:
name: Server Unit Tests
if: ${{ github.event_name != 'pull_request' || !github.event.pull_request.draft }}
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 21
cache: maven
- name: Ensure Maven wrapper is executable
run: chmod +x server/mvnw
- name: Run backend unit tests
run: make test-backend
docs-build:
name: Docs Build
if: ${{ github.event_name != 'pull_request' || !github.event.pull_request.draft }}
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Detect docs changes
id: changed
uses: dorny/paths-filter@v3
with:
filters: |
docs:
- 'docs/skillhub/**'
- '.github/workflows/pr-tests.yml'
- name: Set up Node.js
if: steps.changed.outputs.docs == 'true'
uses: actions/setup-node@v4
with:
node-version: 24
cache: npm
cache-dependency-path: docs/skillhub/package-lock.json
- name: Install docs dependencies
if: steps.changed.outputs.docs == 'true'
run: cd docs/skillhub && npm ci
- name: Build VitePress site
if: steps.changed.outputs.docs == 'true'
run: cd docs/skillhub && npm run build