开发者工具提供了命令行与 HTTP 服务两种接口供外部调用,开发者能够经过命令行或 HTTP 请求指示工具进行登陆、预览、上传等操做。
传送门: "developers.weixin.qq.com/miniprogram…"css
经过命令行与 HTTP 服务能够想到一下几种思路html
为何我不用第一种和第二种?一是由于搞这种现成的配置式的东西弄出来没什么成就感,用第三个思路写顺即可以练练Node,二是由于虽然思路有了,但配置还没玩明白,等我研究明白了再单独写吧。emmmm.....前端
你正在认真coding,和某个bug激烈战斗,已经有了头绪正准备一鼓作气干掉它。忽然被别人打断并告诉你须要为他提供一个测试环境的二维码...
为了这个二维码你作了如下事情 node
在后端功能的实现上用了如下框架和模块git
mac系统上开发者工具会默认的安装路径是/Applications/wechatwebdevtools.app
, 经过process模块执行shell命令open /Applications/wechatwebdevtools.app
便可打开开发者工具。web
上传接口是这个系统的核心,虽然很简单但要实现这个接口仍是须要你对小程序工具的http调用有必定了解,接下来详细说一下如何完成此功能:
上文说到小程序开发者工具提供了命令行与 HTTP 服务两种接口供外部调用,开发者能够经过命令行或 HTTP 请求指示工具进行登陆、预览、上传等操做。shell
第一步(开启http服务)
打开你的开发者工具 设置——>安全设置——>服务端口
,由于调用开发者工具提供的http服务必定要拼接本地的端口号,因此后续全部的操做都是要基于开发者工具开启且服务端口开启的状态下进行操做的,默认状况下服务端口是关闭的,http 服务在工具启动后自动开启,HTTP 服务端口号在用户目录下记录,可经过检查用户目录、检查用户目录下是否有端口文件及尝试链接来判断工具是否安装。 express
macOS : ~/Library/Application Support/微信web开发者工具/Default/.ide
微信web开发者工具/User Data/Default/.ide
注意!!!
像是在mac中直接去读取这个默认路径是获取不到的,由于mac中通常会将工具安装在你的当前帐户文件夹下,因此若是发现没法读取的状况能够到Uers的文件夹找找看。 好比个人mac上要想访问端口文件完整路径是这样的:
const portPath = '../../Users/admin/Library/Application\ Support/微信web开发者工具/Default/.ide';
gulp
读取端口的功能封装,后续会用到 小程序
第三步(上传)
接口定义:
经过调用获取端口号的方法,请求上传接口拼接端口,指定项目上传目录,就是编译出来的dist文件夹目录,将接收的描述和版本号一并拼接发送上传请求便可。
这个接口的实现主要是经过Node接收项目地址而后执行git clone的shell命令实现, 须要用到Node的child_process子进程模块用来执行shell脚本。
代码实现
Gitlab有一个很是强大的API系统,几乎全部的功能都有相应的API接口,为了使用API,须要从Gitlab中获取私有token。
成功拿到token以后只需在请求的时候做为query参数传递便可:
项目分支信息API api/v3/projects/ [projectId] /repository/branches
小程序项目tagaAPI api/v3/projects/ [projectId] /repository/tags
分支和tag接口实现的思路是同样的,接到前端请求后执行各类git命令完成
cd ./project
代码实现
示例为分支切换的相关代码,tag实现的思路是同样的,只不过要把相关git命令替换便可。
这里须要注意一下,这个接口的实现是很是灵活的,须要根据你当前项目的编译文件进行配置,好比个人项目开发时使用gulp打包编译环境到dist,其编译命令分别为:
gulp build:Dev(联调环境)
gulp build:Test(测试环境)
gulp build:Slave(预发布环境)
gulp build:Prod(线上环境)
那么同理,配置好dist输出文件目录,收到请求后执行事先实现好的shell命令便可完成打包这一步,若是你不太了解环境编译打包这块内容,能够参考我上一篇文章"《武装你的小程序——开发流程指南》";
代码实现
目前为止咱们已经实现了六个后端功能,并生成了对应路由,分别为:
/open
实现拉起开发者工具的接口;/up
上传小程序后台接口;/clone
拉取git项目到本地的接口;/checkoutBranch || /checkoutTag
获取gitlab项目信息,分支及tag的接口;/branches || /tags
获取gitlab项目信息,分支及tag的接口;/branches
项目编译打包的接口;前端页面我就不提供示例代码了,ui框架和开发框架根据你们的喜爱决定,由于有了上面这些接口咱们就已经能够愉快的对前端页面进行你须要的一些定制了,这个时候须要咱们考虑的就是一些前端的交互逻辑了,如何利用好这些接口将起串起来组成条完整的流程,如何利用gitlab的其余api扩展你须要的其余功能,好比加一个提交记录页面...
前面的流程图已经大体画出了个人思路,下面我将个人前端实现思路详细描述一下,供你们参考:
/clone
接口将代码拉取到项目中,同时将端口号路径储存起来后面用。/open
接口拉起开发者工具/branchs
和/tag
接口获取分支和tag信息,将其展现在页面上。/checkoutBranch 或 /checkoutTag
接口传递分支名,后端调用相应的git命令。/build
接口传递环境变量进行构建。/up
接口传递版本号和描述发送上传请求,上传成功页面将描述,提交人,时间,环境等必要信息展现出来。到这里一个简单的小程序发布系统就完成了,本文只是记录了个人一个开发思路但愿能对你们有所启发,有不少地方考虑的仍是不够完善但基本能用了,你们能够发散思惟实现一个本身的发布系统,也欢迎交流想法和指正个人错误,同时欢迎你们关注公众号前端小苑,我会按期在这里发表原创文章。