大家好,我是杨成功。传统意义上的持续集成就是在Web端以自动化的方式将项目打包上传到服务器,而这个过程需要Git参与。持续集成的目的是省去人工打包、人工上传等繁琐易错的步骤,提高部署效率和安全性。小程序的部署方式与web端不同。不需要在本地打包。点击开发者工具中的上传按钮,即可发布版本。版本可以在小程序管理后台看到。当其他人需要测试时,将某个版本设置为试用版,然后分享试用版的二维码。为什么小程序也需要持续集成?在实际开发中,我们遇到过这样一个问题:每个前端人员上传后都会生成一个新版本,不同的人上传后需要测试时,需要登录管理后台切换试用版。这个过程在频繁的测试场景下是非常困难的。麻烦。那么如何处理呢?解决办法是设置一个固定的版本号作为试用版(比如上图中的v1.1.0),大家在这个版本号下上传,这样就不用在后台切换版本了。多人在同一个版本号下上传,这是开发者工具做不到的。在这种情况下,需要集成CI的能力。Taro集成CI我们的小程序是基于Taro开发的,Taro官方提供了一个插件@tarojs/plugin-mini-ci来支持持续集成。使用方式也很方便,文档在【这里】。(https://docs.taro.zone/docs/plugin-mini-ci)我们以微信小程序为例,介绍接入持续集成的正确姿势。注意:小程序的持续集成至少需要Tarov3.6.2。之前的版本会报错,请注意升级。1、小程序后台升级为上传键。通过代码上传小程序,微信必须提供一个凭证,就是上传密钥。在小程序后台找到【开发->开发管理->开发设置】,会看到“小程序代码上传”面板。单击“生成”按钮,按照步骤创建密钥并下载。下载后,将密钥命名为private.key,保存在项目的config目录下。2.安装插件并配置在终端执行命令:$yarnadd@tarojs/plugin-mini-ci-D在配置文件config/index.js中引入插件并配置:constciPlugin={//微信小程序weapp:{appid:'xxxxx',privateKeyPath:'config/private.key',},//版本号version:'1.1.0',//版本发布说明desc:'CI自动发布',}constconfig={...plugins:[['@tarojs/plugin-mini-ci',ciPlugin]],}配置中的weapp选项表示微信小程序的配置,传入的小程序的appid,属性privateKeyPath表示下载的上传密钥的路径(相对路径)。简单两步,配置完成。3、添加上传命令Taro在编译微信小程序时,可以通过命令tarobuild--typeweapp来实现。如果想在编译后自动上传代码,也就是触发我们上一步集成的CI插件,只需要加一个--upload参数即可。我们将编译上传作为一条命令,在package.json中设置如下:{"scripts":{"upload":"tarobuild--typeweapp--upload"}}在执行yarnrunupload命令终端,控制台开始执行打包。完成后会自动上传代码并设置为试用版,控制台会自动打印试用版的二维码,如图:现在我们可以直接截图分享二维码了,永远不需要登录管理后台。@tarojs/plugin-mini-ci原理解密使用这个插件在Taro中集成CI非常简单,但是如果你的小程序不是使用Taro开发的,应该如何实现持续集成呢?下面就来分析一下插件的原理。1、miniprogram-ci小程序代码上传是微信支持的功能。微信团队发布了一个名为miniprogram-ci的NPM包,支持上传Node.js中的小程序代码。我们在使用@tarojs/plugin-mini-ci插件时传入的配置其实就是miniprogram-ci的配置。在Node.js中,miniprogram-ci的用法如下:constci=require('miniprogram-ci');//ci工程实例constproject=newci.Project({appid:'wxsomeappid',type:'miniProgram',projectPath:'the/project/path',privateKeyPath:'the/path/to/privatekey',});//开始上传constuploadResult=awaitci.upload({project,version:'1.1.0',desc:'CI自动发布',onProgressUpdate:console.log,});控制台日志(上传结果);上传代码后,我们还需要生成体验代码并输出到控制台。2.生成体验码,在小程序中扫描体验码,即可打开当前小程序的体验版页面。其实这个页面是一个H5页面,地址如下:https://open.weixin.qq.com/sns/getexpappinfo?appid=xxx#wechat-redirect在链接中换成自己的appid,然后可以从链接生成二维码并输出到控制台。在这里,使用另一个NPM包qrcode来实现这一点。首先安装二维码:$yarnaddqrcode然后写一个方法从链接生成二维码输出到控制台:import*asQRCodefrom'qrcode';constprintQrcode=async(url)=>{letterminalStr=awaitQRCode.toString(url,{type:'terminal',small:true});console.log(terminalStr);};//生成二维码输出到控制台consturl='https://open.weixin.qq.com/sns/getexpappinfo?appid=xxx#wechat-redirect';打印二维码(url);代码上传后,调用printQrcode()方法打印出体验码。小结本文介绍在Taro中如何使用插件集成CI,并讲解插件原理,帮助您在非Taro环境下进行集成。整体实现难度不大。但是小程序有自己的场景。一般CI只针对试用版。我们将上传代码封装为上传命令,您可以在本地执行,也可以在GitHubAction等自动化管道中执行。如果有朋友对Taro跨终端开发感兴趣,欢迎加我微信ruidoc拉你进前端工程架构群,或者关注我的公众号程序员成功查看更多文章。再次感谢阅读~
