微信开发工具是咱们开发微信小程序的重要工具,提供了预览、上传代码的功能,可是里面的上传代码在协做过程当中是很痛苦的,同时只能有一个预览版,这个预览版仍是跟某个开发者绑定的。想象下,5个开发者,里面可能要麻烦1我的专职负责发布。node
除此以外,小程序的发布严重依赖于开发者以及Ta的电脑,一旦有紧急状况可能就面临无人可发的问题。git
在咱们的团队中就遇到这样那样的问题,咱们都知道jenkins
用来作自动化构建,在不少项目中都会用它,因此最终开发了mimi-deploy脚本插件来配合jenkins
使用。github
固然mini-deploy
不只限于此,也能够在任何node.js
的环境中执行并和您的程序配套使用,想象力有多大,效率就有多大。shell
原本以在jenkins
中使用的角度来介绍mini-deploy
的使用,让咱们开始吧。express
要求以下:npm
windows
或Mac
系统的电脑jenkins
运行在该电脑假设咱们已经运行jenkins
,点击"新建任务"开始填写任务信息,输入任务名称并选择"构建一个自由风格的软件项目"。小程序
若是须要建立多个任务,能够最后的"复制"功能。windows
"源码管理"中配置项目代码,以Git
为例,须要配置两个参数:微信小程序
$branch
,指定为自定义构建参数在"General"中勾选"参数化构建过程",而后点击"添加参数",在候选列表中选择Git Parameter
,配置如下两项:sass
Name
: 可访问到的变量名称,如配置为branch后能够经过$branch拿到值Parameter Type
:选择Branch,也能够根据状况配置其余选项这样在前面"源码管理"中配置的$branch
就能够访问到仓库的全部分支。
另外还须要添加两个文本参数:upload_version
和upload_desc
(用于发布小程序时的版本号和描述)。
以及一个选项参数:build_type
(指定打包小程序的目标环境)。候选数据一行一条记录输入便可。
在"构建"中点击"增长构建步骤"按钮,在候选列表中选择"执行 shell"。
这一步是最关键之处,咱们会调用mini-deploy
来发布小程序,先贴出来我在用的shell
脚本:
#!/bin/bash
echo -------------------------------------------------------
echo 代码分支: ${GIT_BRANCH}
echo -------------------------------------------------------
# 准备工做
# 加速包安装以及node-sass
# 由于使用的是taro,因此会有node-sass
yarn config set registry https://registry.npm.taobao.org
yarn config set sass_binary_site https://npm.taobao.org/mirrors/node-sass
# 安装依赖
yarn install
# 删除dist并执行打包
if [ "$build_type" == "dev" ]
then
rm -rf dist && yarn run build
else
rm -rf dist && yarn run $build_type
fi
if [ "$build_type" == "prod" ] || [ "$build_type" == "build" ]
then
mini-deploy --mode=upload --ver=$upload_version --desc="$upload_desc" --login.format=image --login.qr='login.png' --no-resume
let "result |= $?"
if [ "$result" == "0" ]
then
# 发送通知到钉钉群
yarn run notify
fi
else
rm -rf ./preview.png
rm -rf ./login.png
mini-deploy --mode=preview --login.format=image --login.qr='login.png' --no-resume
let "result |= $?"
if [ "$result" == "2" ]
then
echo "need login"
fi
fi
复制代码
使用mini-deploy
时有两种方式:开发预览和上传代码,这里须要讲解下里面参数的用处。
用户扫码登陆微信开发工具后,过了一段时间可能被登陆失效,这个时候再调用上传和预览是无效的,咱们要再次扫码登陆。在mini-deploy
中须要登陆时会自动从新获取登陆二维码,login.format
和login.qr
就是指定二维码的存储方式和文件名,目前包含terminal
(命令行输出), base64
, image
三类。
由于jenkins
中没法实时获取执行结果,咱们须要配置no-resume
阻止mini=deploy
自从续传任务,获取到登陆二维码后直接完成任务。
另外,咱们配置二维码的格式为image
,而且输出到项目工做区的login.png
中,接下来再配合其余配置咱们就能够在jenkins
中看到登陆二维码。
# 上传代码
mini-deploy --mode=upload --ver=$upload_version --desc="$upload_desc" --login.format=image --login.qr='login.png' --no-resume
# 预览
mini-deploy --mode=preview --login.format=image --login.qr='login.png' --no-resume
复制代码
在"构建后操做"中点击"增长构建后操做步骤",选择Set build description
:
\[mini-deploy\] (.*)
\1
这里配置是为了把提醒信息显示出来,这样才能告知用户须要登陆,以及显示开发码、上传的成功信息。
// 日志中包含这样一条记录
[mini-deploy] 进入Build详情扫开发码进入小程序' // 匹配成功后,`\1`就表明如下信息 进入Build详情扫开发码进入小程序 复制代码
大功告成,最终咱们的运行结果以下:
本文同步发表于做者博客: 微信小程序和Jenkins不得不说的二三事