Files
ttstd-infinite-canvas/.github/workflows/quality.yml

110 lines
3.4 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: Quality checks
on:
pull_request:
workflow_call:
permissions:
contents: read
jobs:
backend:
name: Backend checks
runs-on: ubuntu-latest
defaults:
run:
working-directory: backend
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: backend/go.mod
cache-dependency-path: backend/go.sum
cache: true
- name: Check formatting
run: test -z "$(gofmt -l .)"
- name: Run Go tests
shell: bash
run: |
set -o pipefail
go test -json ./... | tee "$RUNNER_TEMP/go-tests.jsonl"
- name: Upload Go test timings
if: always()
uses: actions/upload-artifact@v4
with:
name: go-test-timings
path: ${{ runner.temp }}/go-tests.jsonl
if-no-files-found: ignore
payment-plugins:
name: Payment plugin artifacts
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Verify canonical payment packages
env:
PAYMENT_PLUGIN_SMOKE_TEST: "1"
run: sh plugin-packages/verify-payment-packages.sh --all linux amd64
# 发布时 backend/Dockerfile 会在两种架构的原生 Runner 上执行 smoke。
# PR 仍独立验证双架构,不能因没有发布任务而遗漏 ARM64 验收。
- uses: docker/setup-qemu-action@v3
if: github.event_name == 'pull_request'
- uses: docker/setup-buildx-action@v3
if: github.event_name == 'pull_request'
- name: Build and execute payment packages for every image platform
if: github.event_name == 'pull_request'
uses: docker/build-push-action@v6
with:
context: .
platforms: linux/amd64,linux/arm64
target: payment-package-smoke
file: backend/Dockerfile
cache-from: type=gha,scope=payment-smoke
cache-to: type=gha,mode=max,scope=payment-smoke
web:
name: Web checks
runs-on: ubuntu-latest
defaults:
run:
working-directory: web
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: oven-sh/setup-bun@v2
with:
bun-version: 1.3.9
- name: Reject leftover package manager lockfiles
working-directory: ${{ github.workspace }}
run: |
leftover=0
for file in web/pnpm-lock.yaml web/package-lock.json web/yarn.lock; do
if [ -f "$file" ]; then
echo "forbidden lockfile: $file"
leftover=1
fi
done
if [ "$leftover" -ne 0 ]; then
echo "web installs from bun.lock only"
exit 1
fi
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Check formatting
env:
BASE_SHA: ${{ github.event.pull_request.base.sha || github.event.before }}
run: bun scripts/check-changed-formatting.mjs
- name: Typecheck
run: bun run typecheck
- name: Lint retired Ant Design APIs
run: bun run lint
- name: Run tests
run: bun run test
# ubuntu-latest 预装 google-chrome;脚本的解析顺序已覆盖该路径,
# 因此不引入第三方 setup action,也不需要任何 secret。
- name: Director P0 Chrome E2E
run: |
google-chrome --version || chromium --version
bun run test:director:e2e