示例:front-era(Node.js)
Traduction en coursCe guide est actuellement disponible en chinois simplifié. Une version traduite sera ajoutée ultérieurement.
本例演示 Monorepo 中的前端模块通过 Spark Managed NPM Build 生成静态文件,再包装为 Nginx 容器镜像并部署到 K8S。
1. 目标结果
os-front repository
→ apps/hiforce-ide/package.json
→ Yarn install + build
→ apps/hiforce-ide/build
→ generated Nginx runtime image
→ K8S namespace prod
这与 Static Artifact 不同。本例选择 Container Image,因此可以继续使用 Deploy to K8S。
2. 平台准备
- K8S Cluster 的 Harbor Config 已设置 Node.js Builder 和 Kaniko Image。
- NPM Config 提供构建需要的
.npmrc与缓存路径;私有 scope 的 Token 必须打码并受控保存。 - 创建 Node.js 兼容的 Deployment Template。
- 确认 builder 支持仓库 lockfile 对应的 Yarn 版本。
images/spark-pipeline-example-node-platform-01.webp3. App 与 Repository
App Name: 纪元Dev前端
App Code: front-era
Capabilities: Repository, Pipeline
Language: Node.js
Repository URL: https://e.coding.net/hiforce-inc/hiforce-front/os-front.git
Baseline Branch: master
Git Secret: <选择可读取该仓库的 Git Secret>
4. Production 环境
Environment Code: prod
Environment Name: Production
Environment Type: PROD
Cluster Type: K8S
Namespace: prod
关键 Deployment Configuration:
| 配置 | 示例值 |
|---|---|
| Container Name | front-era |
| Release Mode | CONTAINER_IMAGE |
| Build Mode | NPM |
| Package Manager | YARN |
| Frontend Build Path | apps/hiforce-ide |
| Frontend Output Path | build |
| Env Config File Path | ./envs/.env.eu.production |
| Image Repository | hiforce/front-era |
| Container / Service Port | 80 / 80 |
| Replicas | 1 |
| CPU Request / Limit | 100m / 1000m |
| Memory Request / Limit | 256Mi / 1024Mi |
images/spark-pipeline-example-node-deployment-02.webpFrontend Build Path 指向 package.json 所在目录;Frontend Output Path 相对于该目录,不是仓库根目录。环境文件路径也必须是仓库中的相对路径。
5. Nginx 与健康检查
Managed NPM Build 的 Container Image 模式需要 Nginx Config。至少应包含:
- 静态产物根目录
- SPA 的
try_files ... /index.html - 必需的 API/WebSocket 反向代理
- 与应用策略一致的缓存和安全 Header
健康检查必须与 Nginx 实际配置一致。如果配置没有提供 /health/startup、/health/liveness、/health/readiness,应增加这些 location,或把 Probe Path 改为一个真实返回成功的轻量路径,例如 /。不要复制一个不存在的后端健康端点。
6. Pipeline
Build Settings:
Build Context Path: .
Build Command: 由 Spark Node.js Managed NPM Build 执行
阶段:
1. Build Image
2. Test Gate
3. Deploy to K8S
Build Logs 应展示 package manager、registry、模块路径、环境文件、构建输出和镜像推送结果。
7. Gate 验证
- 安装阶段使用预期的 Registry 和 lockfile。
apps/hiforce-ide/build已生成且包含入口文件。.env.eu.production确实对应目标环境,且不包含不应打入浏览器包的 Secret。- Nginx 能加载 SPA 路由、静态资源、API 和 WebSocket。
- 浏览器没有因错误 base path、缓存或跨域配置出现白屏。
images/spark-pipeline-example-node-gate-03.webp8. 何时使用其他模式
- 仓库已有完整多阶段 Dockerfile时,可把 Build Mode 改为 Dockerfile。
- 只希望发布到 CDN/对象存储时,可选择 Static Artifact;当前不要再添加
Deploy to K8S。 - Monorepo 中不同前端使用不同 App 和 Frontend Build Path,可共享同一个 Repository,但各自维护环境、制品和发布历史。