您的当前位置:官网首页 > 新闻动态 > 项目动态 >

微信小程序自动化构建方案

时间:2019-12-21

jenkins是一款CI CD的开源软件,用于自动化各种使命,包含构建、测验和布置软件。jenkins支撑各种运转方法,可经过体系包、Docker或许一个独立的java程序。

咱们经过在jenkins上创立job来完成小程序的自动化构建。将上述提审进程的2,3,4,5,6完成自动化一键编译、布置、上传,解放人力。

cat ~/.jenkins/secrets/initialAdminPassword

在jenkins初始化的进程中,会引导用户装置相应插件,用户依据自己的需求装置即可;

jenkins中能够创立多种类型的job,如下图:

咱们创立一个FreeStyle Project就能够。job的创立进程能够参阅jenkins官网。

关于一个继续承继打包渠道来说,每次打包都有需求四进程,触发构建、拉取代码、履行构建、构建后处理

代码Done-》本地build-》登录微信开发者东西-》上传-》微信后台提审-》发布

在这个进程中,小程序的正式发版必需求经过小程序开发者东西进行,而小程序开发者东西供给了指令行和http服务两种接口供外部调用。所以咱们能够在构建脚本中经过上述两种方法来完成。

1、job信息装备

这儿写清楚当时创立的job主要用途是什么。

2、参数化构建进程

小程序在上传进程中需求填写“版本号”以及“上线内容”这两条信息,以及假如需求在不同分支上线的话需求分支称号,故需求参数化构建进程,从用户处获取上述信息。

代码长途库房设置 这儿设置需求拉取哪个库房的代码进行构建,一般仅仅需求填写长途库房地址即可。

留意:假如需求用git办理代码,则需求装置git plugin插件,装备git途径,不然源码办理是不会有git选项的。

构建脚本 接下来便是构建脚本的编写。正常的流程应该是: 判别当时参数是否为空-》为空则return-》不然判别当时构建分支-》拉取长途库房代码-》履行npm install-》履行npm run build-》指令行调用翻开微信开发者东西-》指令行完成上传-》微信后台提审

上述流程乍一看根本没有任何问题,可是它正常上传的条件是在小程序开发者东西正常登陆的情况下,也便是说当小程序开发者东西失效的话则会上传失利,所以有必要在构建进程中参加小程序开发者东西的登录流程。

小程序开发者东西只要扫描二维码这一种登录途径,因而只要将登录二维码集成到jenkins中才干处理登录问题。

指令行供给了两种登录方法,一是将登录二维码转成base64给用户;二是将二维码打印在指令行中。 在iterm终端履行指令 /Applications/wechatwebdevtools.app/Contents/Resources/app.nw/bin/cli -l 则会在终端打印出登录二维码,条件是需求翻开开发者东西的端口设置。

设置-》安全设置-》服务端口-》敞开

可是直接在脚本中履行这句指令并不能在jenkins的console output中输出二维码,而是会输出一堆unicode字符,此计划不太可行。

所以能够经过http的方法拿到base64的二维码,然后经过一段python脚本将其转为图片文件。 以下是这段的shell脚本

echo '生成微信开发者东西登录二维码'
WX_CLI=/Applications/wechatwebdevtools.app/Contents/Resources/app.nw/bin/cli
$WX_CLI -o
PORT=$
curl http://127.0.0.1:$PORT/login?format=base64 ~/qrcode.txt
$
echo [QRCode generated succeed]$BUILD_NUMBER
仿制代码

base64tojepg.py的脚本

#!/usr/bin/python
import os,base64,sys 
if len == 3:
 inputFileName=sys.argv[1]
 outputFileName=sys.argv[2]
 allstr=open.read
 idx=allstr.find
 bstr=allstr[idx+1:]
 imgdata=base64.b64decode
 file=open
 file.write
 file.close
else:
 print
仿制代码

在build构建进程之后添加set build description,将刚刚生成的二维码图片设置到build构建界面中

抹黑的部分分别是ip地址以及项目称号

留意:此处需求装置description setter plugin插件

上传必须在登录之后调用,所以在上述set build description之后再添加一个build的构建进程,作为上传部分的shell

#sh ~/wechat_cli.sh
WX_CLI=/Applications/wechatwebdevtools.app/Contents/Resources/app.nw/bin/cli
echo "版本号是${UPLOAD_VERSION}"
echo "描绘是${UPLOAD_DESC}"
PRO_ROOT=$/build/ZZWAMain
echo "PRO_ROOT是${PRO_ROOT}"
PORT=$
$WX_CLI -l --login-qr-output base64@qrcode.txt
echo '上传到微信后台'
$WX_CLI -u ${UPLOAD_VERSION}@/Users/用户名/.jenkins/workspace/项目名/项目名 --upload-desc ${UPLOAD_DESC}