mirror of
https://gitee.com/spark-store-project/spark-store
synced 2026-04-26 01:10:16 +08:00
## 文档(全部中文) - AGENTS.md - 完整的 AI 编码指南(中文版) - CONTRIBUTING.md - 贡献指南 - DEVELOPMENT.md - 开发文档 - DEPLOYMENT.md - 部署文档 - TESTING.md - 测试文档 - TROUBLESHOOTING.md - 问题排查指南 - FAQ.md - 常见问题 - WORKFLOW.md - 标准开发流程文档 ## AI 工作流(9个详细工作流) - feature-development.md - 新功能开发流程 - bug-fix.md - Bug 修复流程 - code-review.md - 代码审查流程 - testing.md - 测试编写流程 - release.md - 发布流程 - refactoring.md - 代码重构流程 - documentation.md - 文档更新流程 - performance-optimization.md - 性能优化流程 - security-audit.md - 安全审计流程 ## 测试基础设施 - vitest.config.ts - Vitest 单元测试配置 - playwright.config.ts - Playwright E2E 测试配置 - src/__tests__/setup.ts - 测试环境设置 - src/__tests__/unit/downloadStatus.test.ts - 示例单元测试 - e2e/basic.spec.ts - 示例 E2E 测试 ## CI/CD - .github/workflows/test.yml - 新建测试 CI 工作流 - .github/workflows/build.yml - 更新构建工作流,添加测试步骤 ## Issue 模板 - 更新 bug_report.md 为标准 Bug 报告模板 - 更新 help_wanted.md 为标准功能请求模板 ## 配置更新 - package.json - 添加测试依赖和 7 个新的 npm 脚本 - .gitignore - 添加测试相关忽略项 ## 新增 npm 脚本 - test - 运行单元测试 - test:watch - 监听模式 - test:coverage - 生成覆盖率报告 - test:e2e - 运行 E2E 测试 - test:e2e:ui - E2E UI 模式 - test:e2e:debug - E2E 调试模式 - test:all - 运行所有测试 ## 新增测试依赖 - @playwright/test ^1.40.0 - @testing-library/jest-dom ^6.1.5 - @testing-library/vue ^8.0.1 - @vitest/coverage-v8 ^1.0.0 - @vue/test-utils ^2.4.3 - jsdom ^23.0.1 - vitest ^1.0.0
144 lines
3.6 KiB
YAML
144 lines
3.6 KiB
YAML
name: Build
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
tags:
|
|
- "*"
|
|
paths-ignore:
|
|
- "**.md"
|
|
- "**.spec.js"
|
|
- ".idea"
|
|
- ".vscode"
|
|
- ".dockerignore"
|
|
- "Dockerfile"
|
|
- ".gitignore"
|
|
- ".github/**"
|
|
- "!.github/workflows/build.yml"
|
|
- "!.github/workflows/test.yml"
|
|
pull_request:
|
|
branches: [main]
|
|
paths-ignore:
|
|
- "**.md"
|
|
- "**.spec.js"
|
|
- ".idea"
|
|
- ".vscode"
|
|
- ".dockerignore"
|
|
- "Dockerfile"
|
|
- ".gitignore"
|
|
- ".github/**"
|
|
- "!.github/workflows/build.yml"
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v6
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v6
|
|
with:
|
|
node-version: 20
|
|
|
|
- name: Install dependencies
|
|
run: npm ci
|
|
|
|
- name: Run tests
|
|
run: npm run test
|
|
|
|
- name: Run lint
|
|
run: npm run lint
|
|
|
|
build:
|
|
needs: test
|
|
runs-on: ${{ matrix.os }}
|
|
container: ${{ matrix.docker_image }}
|
|
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest]
|
|
package: [deb, rpm]
|
|
architecture: [x64, arm64]
|
|
include:
|
|
- package: deb
|
|
docker_image: "debian:12"
|
|
- package: rpm
|
|
docker_image: "almalinux:8"
|
|
|
|
steps:
|
|
- name: Install Build Dependencies
|
|
if: matrix.package == 'deb'
|
|
run: |
|
|
apt-get update
|
|
apt-get install -y curl git wget devscripts fakeroot equivs lintian python3
|
|
apt-get install -y build-essential
|
|
|
|
- name: Install Build Dependencies
|
|
if: matrix.package == 'rpm'
|
|
run: |
|
|
dnf install -y curl git wget rpm-build rpmdevtools rpmlint python3
|
|
dnf group install -y "Development Tools"
|
|
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v6
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v6
|
|
with:
|
|
node-version: 20
|
|
|
|
- name: Install Dependencies
|
|
run: |
|
|
npm install
|
|
|
|
- name: Download host-spawn
|
|
shell: bash
|
|
run: |
|
|
if [ "${{ matrix.architecture }}" == "x64" ]; then
|
|
curl -fsSL -o ./extras/host-spawn https://github.com/1player/host-spawn/releases/latest/download/host-spawn-x86_64
|
|
elif [ "${{ matrix.architecture }}" == "arm64" ]; then
|
|
curl -fsSL -o ./extras/host-spawn https://github.com/1player/host-spawn/releases/latest/download/host-spawn-aarch64
|
|
fi
|
|
chmod +x ./extras/host-spawn
|
|
|
|
- name: Build Release Files
|
|
shell: bash
|
|
run: |
|
|
if [ "${{ matrix.package }}" == "deb" ]; then
|
|
npm run build:deb -- --${{ matrix.architecture }}
|
|
elif [ "${{ matrix.package }}" == "rpm" ]; then
|
|
npm run build:rpm -- --${{ matrix.architecture }}
|
|
fi
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Upload Artifact
|
|
uses: actions/upload-artifact@v6
|
|
with:
|
|
name: release_for_${{ matrix.package }}_${{ matrix.architecture }}
|
|
path: release/**/*.${{ matrix.package }}
|
|
retention-days: 5
|
|
|
|
release:
|
|
needs: build
|
|
runs-on: ubuntu-latest
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
steps:
|
|
- name: Download all artifacts
|
|
uses: actions/download-artifact@v7
|
|
with:
|
|
path: artifacts
|
|
|
|
- name: Upload to GitHub Release
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
tag_name: ${{ github.ref_name }}
|
|
files: |
|
|
artifacts/**/*.deb
|
|
artifacts/**/*.rpm
|
|
generate_release_notes: true
|