微信小程序和Jenkins不得不说的二三事

微信开发工具是咱们开发微信小程序的重要工具,提供了预览、上传代码的功能,可是里面的上传代码在协做过程当中是很痛苦的,同时只能有一个预览版,这个预览版仍是跟某个开发者绑定的。想象下,5个开发者,里面可能要麻烦1我的专职负责发布。node

除此以外,小程序的发布严重依赖于开发者以及Ta的电脑,一旦有紧急状况可能就面临无人可发的问题。git

在咱们的团队中就遇到这样那样的问题,咱们都知道jenkins用来作自动化构建,在不少项目中都会用它,因此最终开发了mimi-deploy脚本插件来配合jenkins使用。github

固然mini-deploy不只限于此,也能够在任何node.js的环境中执行并和您的程序配套使用,想象力有多大,效率就有多大。shell

原本以在jenkins中使用的角度来介绍mini-deploy的使用,让咱们开始吧。express

1. 准备要求

要求以下:npm

  • 运行在windowsMac系统的电脑
  • jenkins运行在该电脑
  • 微信开发工具安装在该电脑
  • 一个微信号

2. 如何配置

2.1 建立任务

假设咱们已经运行jenkins,点击"新建任务"开始填写任务信息,输入任务名称并选择"构建一个自由风格的软件项目"。小程序

若是须要建立多个任务,能够最后的"复制"功能。windows

2.2 配置任务

2.2.1 源码管理

"源码管理"中配置项目代码,以Git为例,须要配置两个参数:微信小程序

  • Repositories 仓库地址和认证方式
  • Branches to build 分支,咱们填入$branch,指定为自定义构建参数

2.2.2 参数化构建过程

在"General"中勾选"参数化构建过程",而后点击"添加参数",在候选列表中选择Git Parameter,配置如下两项:sass

  • Name: 可访问到的变量名称,如配置为branch后能够经过$branch拿到值
  • Parameter Type:选择Branch,也能够根据状况配置其余选项

这样在前面"源码管理"中配置的$branch就能够访问到仓库的全部分支。

另外还须要添加两个文本参数:upload_versionupload_desc(用于发布小程序时的版本号和描述)。

以及一个选项参数:build_type(指定打包小程序的目标环境)。候选数据一行一条记录输入便可。

2.2.3 添加构建执行Shell

在"构建"中点击"增长构建步骤"按钮,在候选列表中选择"执行 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.formatlogin.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
复制代码

2.2.4 二维码结果展现

在"构建后操做"中点击"增长构建后操做步骤",选择Set build description

  • Regular expression : \[mini-deploy\] (.*)
  • Description : \1

这里配置是为了把提醒信息显示出来,这样才能告知用户须要登陆,以及显示开发码、上传的成功信息。

// 日志中包含这样一条记录
[mini-deploy] 进入Build详情扫开发码进入小程序' // 匹配成功后,`\1`就表明如下信息 进入Build详情扫开发码进入小程序 复制代码

3. 运行结果

大功告成,最终咱们的运行结果以下:

  • 开发预览版能够再构建历史扫描二维码进入
  • 须要登陆时就显示登陆二维码
  • 上传代码成功则只提示信息

本文同步发表于做者博客: 微信小程序和Jenkins不得不说的二三事

相关文章
相关标签/搜索