小程序自动化构建部署平台
No Data
有问题欢迎在issues中提出
😈 如果你同时维护着多个小程序项目,那你每天是否花费了大量的时间在做这样一件时间,切换git分支 -> 执行编译 -> 打开小程序开发者工具 -> 发布。
🧐 同时维护着5个小程序(两个微信小程序、两个支付宝小程序、一个字节跳动小程序),我发现我每天要花大量的时间做发布小程序的工作。为此我想到了打造一个类似Jenkins的小程序自动化构建平台,将发布小程序的任务移交给测试同事(是的,我就是这么懒)。
tips: 图片无法加载的话,可以下载项目后看read-image文件夹
该项目后端采用nestjs + typescript技术,ORM使用sequelize,数据库采用mysql。前端采用vue2全家桶,搭配SSR技术,通过socket广播发布日志到所有前端用户中。
技术详解请看(二次开发必看): 开发须知
在/lib/configure文件中将redisCFG与mysql字段中的配置改为自己的配置,主要修改host字段即可
{ // redis用户记录session数据,不使用的话可以在/server/server.ts文件中找到session中间件,并注释掉store字段,即可删除所有与redisCFG配置相关的内容 // 配置含义见connect-redis库 redisCFG: { prefix: 'mp_release_platform_sess:', host: '0.0.0.0', port: 6379, db: 8, }, // 配置含义见sequelize库 mysql: { port: 3306, host: '0.0.0.0', user: 'mp', password: 'mp2020', database: 'mp_release_platform', connectionLimit: 10, }, }
找到/server/utils/CI/utils/ci-configure.ts文件,按照注释修改配置即可
# cd至项目根路径 # 安装所需包 npm i新建终端(command + t),并运行redis
redis-server
运行项目
npm run start:dev
浏览器中访问 http://localhost:8088 or https://localhost:8089
部署项目需要先安装docker,安装完成后再继续下面的步骤
# 自行安装git并设置好github的SSH # 克隆小程序自动化构建平台项目 git clone [email protected]:lizijie123/mp_release_platform.git # 进入项目目录 cd mp_release_platform # 将小程序自动化构建平台打包为docker镜像 make # 通过docker服务编排同时生成并启动,小程序自动化构建平台容器、redis容器、mysql容器 docker-compose up
创建mysql的容器之前,需要设置字符集为utf8
# 完整配置 mysql: restart: always image: mysql:5.6 volumes: - ./data:/var/lib/mysql command: [ '--character-set-server=utf8', '--collation-server=utf8_general_ci', --default-authentication-plugin=mysql_native_password, ] environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=mp_release_platform - MYSQL_USER=mp - MYSQL_PASSWORD=mp2020 ports: - "3306:3306"
对于已经创建了mysql容器的项目,只需要进入mysql中,删掉数据库并重新创建一个即可
# 单独启动mysql docker-compose up -d mysql # 查看mysql容器的id docker ps # 进入mysql容器 docker exec -it mysql容器id bash # 连接mysql mysql -ump -pmp2020 # 删除数据库 DROP DATABASE mp_release_platform # 创建数据库并执行字符集 CREATE DATABASE mp_release_platform DEFAULT CHARSET utf8 COLLATE utf8_general_ci
公司gitlab一般只允许内网访问,部署在云服务器上的项目会出现无法访问gitlab项目的问题,需要运维同事帮忙在gitlab项目中设置访问白名单。
当环境变量NODEENV为production时(也就是我们的小程序自动化构建平台这个项目运行时,设置的NODEENV),npm install或yarn install只会安装dependencies,而不会安装devDependencies列表中的包,需要将安装命令改为npm install --dev或yarn install --production=false
首先排查k8s分配给docker容器的内存大小是否足够,若k8s分配给docker容器的内存足够大,依然报内存溢出,则可能是系统分配给node的内存不足(tips: 分配给node程序的内存64位系统下约为1.4GB,32位系统下约为0.7GB),这时候可以通过increase-memory-limit这个包解决。
github: lizijie123