本篇文章讲的不是如何把一个项目部署上线,而是如何自动化上线。
开发了一个需求管理和发布系统。
通过这个系统,可以创建需求、创建发布计划、创建分支、部署到测试环境、部署到生产环境、正式上线、合并代码等。
一、功能设计
9.9元的阿里云服务器真的很慢,但还是足够折腾完这个项目。
用3个目录来模拟不同的环境。
| 目录 | 存放 |
|---|---|
| project | 存放所有的项目,比如本系统的前后端代码。 |
| pre-dir | 预发环境,当然是用来测试的。 |
| pro-dir | 生产环境,测试没问题,部署上线。 |
一图胜千言。

二、系统页面
我的任务
接到一个新的需求,可以新建一个需求,并创建开发分支。

发布队列
开发结束之后,便可以到发布队列中,部署到预发环境进行测试。 测试通过指定Cookie 就可以访问到测试的代码。最终再进行线上部署。

项目信息
二、技术栈
前端技术栈
Vue + elementUI,具体代码在Github,感兴趣的可以看下并点个star哈~✨
服务端技术栈
非常常见的Node.js(Koa2) + Mysql + Redis + Pm2。
具体代码在Github,感兴趣的可以看下并点个star哈~✨
三、Redis和Session配置
// utils/Store.js
const Redis = require("ioredis");
const { Store } = require("koa-session2");class RedisStore extends Store {
constructor() {
super();
this.redis = new Redis();
}
async get(sid, ctx) {
let data = await this.redis.get(`SESSION:${sid}`);
return JSON.parse(data);
}
async set(session, { sid = this.getID(24), maxAge = 1000 * 60 * 60 } = {}, ctx) {
try {
console.log(`SESSION:${sid}`);
// Use redis set EX to automatically drop expired sessions
await this.redis.set(`SESSION:${sid}`, JSON.stringify(session), 'EX', maxAge / 1000);
} catch (e) {}
return sid;
}
async destroy(sid, ctx) {
return await this.redis.del(`SESSION:${sid}`);









