那一天我二十一岁,在我一生的黄金时代,我有好多奢望。我想爱,想吃,还想在一瞬间变成天上半明半暗的云,后来我才知道,生活就是个缓慢受锤的过程,人一天天老下去,奢望也一天天消逝,最后变得像挨了锤的牛一样。可是我过二十一岁生日时没有预见到这一点。我觉得自己会永远生猛下去,什么也锤不了我。
前言
现在是凌晨一点,可能是在夜里的时候人会变得比较感性,所以突然想到了王小波在黄金时代中写下的这段话,没有理由的在这篇技术文章中将它作为引言。希望大家在自己的黄金时代永远的生猛下去,什么也锤不了你。
书归正传,咱们上回书说到在我的第一版小程序发布系统被服务器拍倒在沙滩上后,我把目光从web转移到了app上,并准备使用Electron来构建一套app安装在电脑上用来解决服务器不支持部署小程序开发者工具的坑,接下来我将此次开发过程的思考和问题进行总结,从多个角度来介绍本项目。
J.A.R.V.I.S是做什么的?
它是一个安装在Mac或Windows上的app程序,可以随时从Git上拉取最新代码选取分支和tag并自动打包构建不同环境上传至小程序后台的发布系统。
为什么叫J.A.R.V.I.S?
老贾是唐尼的智能管家,项目启动的时候正值复联四热映,主要是为了纪念一下唐尼吧,在星期五和Jarvis两个名字中犹豫了好久,最后还是觉得Jarvis比较酷一点,嗯,就是这么随意。
设计思路
工作原理
electron本质上就是一个将web打包成桌面应用的 Node. js 的变体,在开启app的同时就会启动一个node服务,通过node可以实现很多前端无法实现的事情,一个发布系统整个流程都是千篇一律的,无非就是拉代码、拉分支、切分支、构建开发包、上传后台。其中拉代码、切分支、构建这种平时在命令行内进行的操作,可以将它交给nodeJs提供的child-process衍生子进程的功能进行不同目录下的shell脚本执行,最关键的上传则需要通过node请求微信开发中工具提供的api为渲染层提供上传接口进行相应操作。最后将electron项目打包为app,分别装在开发者的电脑上就可以实现一个基础版的小程序上传系统。
工作流程
配置
打包构建
切换分支
配置完基础信息后调用gitlabApi拉取该项目的分支和tag信息,渲染到下拉列表选择切换本地分支,同时在面板展示分支的基础信息,项目名称、当前分支名称、提交时间、提交描述、提交成员、提交id......
项目编译
接下来需要填写本次上传的版本号和版本描述并选择打包环境,然后进行项目构建。这里选择环境选择的是需要打包项目的根目录中的构建命令,比如我的小程序项目使用gulp构建,gulpfile中定义了四种打包命令,那么在点击开始项目构建后,程序会自动切换到黑盒中的项目根目录下执行对应命令并打包为dist文件。
上传
打包完之后的文件通过微信官方提供的http调用接口,先获取到开发者工具在本地的端口号文件,通过调用upload的api拼接端口号、项目路径、描述、版本号进行上传。上传成功后在面板上展示上传信息和上传状态并且通过钉钉群同步推送上传消息,包含发布版本、描述、发布人,最后在微信公众平台选择设置体验版。到此,一个完整的编译打包上传流程全部完成。
谈谈基础架构
整体使用vue)




