微信开发者工具中虽然集成了预览、上传功能,但是在微信小程序的管理后台,每个开发者上传的版本都是独立的。
如果是多人协作开发,其中一个开发者在修复了 BUG,或者新增了功能,想要上传体验版给测试时,还要登陆后台重新设置体验版,然后再把体验版的二维码发给测试。
每次都要这么操作一番,效率又低,还打断开发者的思路。
万一你请假了,同事帮你改点东西,有可能还没办法上传,还得在你的休息日夺命连环 call 你。更是体验极差。
所以我们采用 Jenkins 持续部署的方式来自动部署上传小程序,免去人工的烦恼。
大家可以看一看大佬已经部署成功的文章 微信小程序集成 Jenkins
由于需求跟上面大佬的不太一样,我们公司使用的是 Taro 框架来开发小程序,并且同一个项目下有多个分支都需要进行发布部署。因此也需要进行一些修改。
Taro 是京东旗下凹凸实验室推出的一款使用React语法进行多端统一开发的解决方案。
支持微信小程序、H5、百度小程序、支付宝小程序、快应用、ReactNative、字节跳动小程序、QQ 轻应用。可以说是目前小程序开发框架中支持最齐全的了。
下面我们就来讲解如何在Jenkins里集成多分支Taro小程序项目
在集成部署中需要微信开发者工具,目前微信开发者工具只有 macOS 和 Windows 两种版本,上文的大佬用的是 macOS 系统,本文采用 Windows 系统进行部署,使用的是PowerShell,希望能对 Windows 系统的小伙伴们提供一些帮助。
下面讲解下具体步骤
这个步骤和上文大佬的文章是一样的
Jenkins 依赖 java1.8,需要首先在我们的服务器上安装 java1.8 版本。之后 直接下载最新的稳定 Jenkins WAR 包 ,
然后 以管理员身份运行 PowerShell ,并执行以下命令启动 Jenkins
java -jar Jenkins.war --httpPort=8888
其中, --httpPort=8888
为设置服务端口号,默认端口号为 8080 。
注意执行时 PowerShell 所在的文件夹地址要对
这里与上面大佬的文章就有区别了。
为了让每个分支都可以有自己的部署策略,所以我们选择使用多分支流水线任务的方式来部署任务
我们在Branch Sources中选择git源。填入仓库地址,选择适合你的验证方式。
在Behaviours中,我们可以通过新增 Filter by name
的配置项来筛选分支,例如我们现在只希望自动部署以dev开头的分支,那么就填写 dev*
。
如图所示,我们使用Jenkinsfile来配置流水线。
触发器间隔选择1分钟。相当于每隔一分钟Jenkins会查看一下你的git仓库中有没有更新。如果有更新就会触发自动部署流程。你可以选择合适你的触发间隔。
现在我们的Jenkins任务配置就已经完成了,点击保存按钮即可。
Jenkinsfile是Jenkins流水线任务的声明方法之一,具体可以大家可以查看 Jenkinsfile介绍
首先我们在git项目的根目录下创建一个Jenkinsfile文件
如果想创建在其他位置,那么需要调整上面配置触发器部分的 脚本路径
选项
// Jenkinsfile内容 pipeline { agent any options{ retry(3) timeout(time:10, unit: 'MINUTES') } stages { stage('start') { steps { echo '构建开始...' } } stage('build') { // 在这里也可以设置一些条件,例如分支名称过滤等 when { branch 'dev*' } steps { // Windows下使用bat启动脚本,linux或manOS下使用sh启动脚本 bat 'powershell ./deploy.ps1' } } } post { success { echo '构建成功' } failure { echo '构建失败' } } }
上面的Jenkinsfile中我们可以看到,在build阶段我们启动了一个名字叫做deploy.ps1的PowerShell脚本。我们的部署、编译、上传等步骤都放在脚本中进行。
在我们实际应用中开发们可以直接使用开发者工具进行预览,测试们使用体验版进行测试,所以不需要预览二维码,如果需要预览二维码请参考上文大佬的文章。
首先确认服务器中已经安装了nodejs、微信开发者工具
微信开发者工具必须是已经登陆的状态。最好可以申请一个自动构建专用的微信账号。
在微信开发者工具的安全设置中开启服务端口
Taro的cli需要在项目本地安装
微信小程序在上传时可以填写版本号,版本号也可以有效的帮助我们区分当前体验版的版本,因此我们在根目录下新建一个 version
文件,将版本号写进去,脚本会自动读取版本号并上传
1.0.0
项目根目录下新增 deploy.ps1
文件
# deploy脚本代码 Write-Output "下载npm包" npm i --registry=http://registry.npm.taobao.org Write-Output "开始编译" # 这里使用的是开发模式编译,如果需要生产模式,将末尾的 --env development 去掉就可以了 ./node_modules/.bin/taro build --type weapp --env development Write-Output "读取版本和编译地址" $version = Get-Content ./version Write-Output $version Write-Output "上传代码" $path = (Get-Location).Path + "/dist" $p1 = $version + "@" + $path Write-Output $path Write-Output $p1 # 需要修改为你自己的微信web开发者工具安装目录 & 'C:/Program Files (x86)/Tencent/微信web开发者工具/cli' -o $path Start-Sleep -Seconds 10 & 'C:/Program Files (x86)/Tencent/微信web开发者工具/cli' -u $p1 --upload-desc '自动构建' Write-Output "关闭当前项目" & 'C:/Program Files (x86)/Tencent/微信web开发者工具/cli' --close $path & 'C:/Program Files (x86)/Tencent/微信web开发者工具/cli' --quit
在这里我遇到了一个微信开发者工具的BUG,由于是多分支模式,每个分支必然会长的比较像。也可能存在某些页面或文件在分支A中存在,分支B中不存在。这时候假如分支A上传成功,我们又触发了分支B的自动部署,命令行模式下的微信开发者工具会报错说找不到分支A的某些文件。GUI手动模式下则没有问题。解决办法是将微信开发者工具完全关闭再重新打开。
Windows10的自动更新已经饱受诟病多时了。Windows10强制要求每35天系统至少更新并重启一遍,每次重启我们还需要手动开启Jenkins也是一件很麻烦的事。因此我们给它配置一个开机自启动。
首先创建一个Jenkins的启动脚本 JenkinsAutoStar.ps1
java -jar "D:/Java/Jenkins.war" --httpPort=8888
计算机启动时
启动程序
程序或脚本中填写 C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe 添加参数中填写 C:/Users/your PC/Desktop/JenkinsStar.ps1
单击万成时打开此任务属性对话框
并点击完成
用户账户使用 Administrator
勾选 使用最高权限运行
点击确定
现在我们已经成功部署了Jenkins的开机启动
以上就是Jenkins集成多分支Taro小程序的全部内容,作者水平有限,如有不清楚的地方或者错误欢迎大家批评指正~