工程化
3 min read构建可扩展的小程序 CI/CD 流水线
2024-12-20by LZG
#MiniProgram#DevOps#CI/CD
背景
随着公司 SaaS 业务的发展,我们需要维护上百个客户的小程序。传统的人工发布模式效率低下且容易出错。
方案设计
核心工具
- Jenkins: 任务调度与流水线管理。
- miniprogram-ci: 微信官方提供的命令行工具,支持代码上传、预览等。
- Docker: 构建环境隔离。
架构图
graph LR
Git --> Jenkins
Jenkins --> Docker[Docker Container]
Docker --> Build[npm install & build]
Build --> Upload[miniprogram-ci upload]
Upload --> Wechat[微信后台]
关键实现
1. 动态注入配置
我们需要在构建时动态注入 project.config.json 中的 appid 和环境变量。
const ci = require('miniprogram-ci')
const projectConfig = require('./project.config.json')
// 从环境变量获取 AppID
const appId = process.env.APP_ID || projectConfig.appid
const project = new ci.Project({
appid: appId,
type: 'miniProgram',
projectPath: './dist',
privateKeyPath: `./keys/private.${appId}.key`,
ignores: ['node_modules/**/*'],
})
2. 版本号管理
使用语义化版本号,并自动生成 Changelog。
成果
- 效率提升:单个小程序发布时间从 30 分钟缩短至 5 分钟。
- 质量保障:消除了人工操作导致的环境配置错误。
- 可追溯:每一次发布都有据可查,支持一键回滚。
展望
未来计划引入 AI Code Review,在流水线中自动检查代码规范和潜在 Bug。