jenkins发布预览微信小程序(windows_slave)

2019-05-31

微信小程序开发工具目前只支持mac和windows,所以jenkins的slave也只能使用这两种系统,这里我已windows为例。构建批处理仅作了功能实现,更多的判断逻辑自行添加。

微信工具提供了客户端HTTP服务两种方式给外部调用,这里以http方式为例

jenkins添加windows端slave

修改全局安全设置

”JNLP代理协议的TCP端口“ 配置成 ”随机选取“,点开”代理协议...“,勾选“Java Web Start Agent Protocol/4(TLS加密)”。我这里选择固定端口是因为在阿里云做了端口限制,只放开指定端口
image.png
找到“隐藏的安全警告”,将“Enable Agent → Master Access Control”的复选框打勾
image.png

添加slave节点:系统管理->节点管理->新建节点

image.png
image.png
点击launch按钮下载slave-agent.jnlp文件,点击slave.jar下载该jar包,并复制到slave机器的jenkins目录
1.png
运行slave-agent.jnlp
2.png
快捷键win+r输入services.msc,找到jenkins-agent修改配置
我这里使用了管理员账户,也可以使用上面的本地系统账户,但要记得勾选允许服务与桌面交互
image.png

安装依赖工具

想要运行slave,windows节点需要先安装java,构建环节还会用到一些其他工具,如gitcurl直接下载安装,记得要设置对应的环境变量

在slave节点配置中配置环境变量,直接把windows机器的path环境变量拷贝过来即可
这里在path变量补充一个"C:\Windows\SysWOW64;",否则一些内置命令也会无法调用
image.png
image.png
image.png

安装微信开发者工具,然后设置计划任务自动运行,以便提供http服务
image.png
名称:mp_ide
触发器:计算机启动时
操作:启动程序
image.png
image.png
image.png
如果不重启,记得自己手动启动一次

jenkins配置

安装插件:

description setter plugin
Git Parameter Plug-In

修改全局安全配置:

image.png

创建自由风格任务

image.png

勾选参数化构建

添加Git Parameter

image.png
image.png

添加2个文本参数

image.png
image.png

限制项目的运行节点在windows-slave

image.png

配置git地址

image.png

构建环节

第一次增加批处理

image.png

:: 获取服务端口
set /p PORT=<"C:\Users\test-ops\AppData\Local\微信开发者工具\User Data\Default\.ide"
echo "微信开发者工具运行在%PORT%端口"

:: 获取状态码判断服务是否启动成功
curl -sL -w %%{http_code} http://127.0.0.1:%PORT%/open

:: 获取登录二维码
curl http://127.0.0.1:%PORT%/login?format=base64 > qrcode.txt
python "D:\jenkins\base64tojepg.py" qrcode.txt qrcode.jpg
echo [QRCode generated succeed]%BUILD_NUMBER%

python脚本:base64tojepg.py

import os,base64,sys 

if len(sys.argv) == 3:
    inputFileName=sys.argv[1]
    outputFileName=sys.argv[2]
    allstr=open(inputFileName).read()
    idx=allstr.find(',')
    bstr=allstr[idx+1:]
    imgdata=base64.b64decode(bstr)
    file=open(outputFileName,'wb')
    file.write(imgdata)
    file.close()
else:
    print('Useage: python base64tojpeg.py inputFileName outputFileName')

第一次添加 build description用于显示登录二维码

image.png
image.png
Regular expression

\[QRCode generated succeed\](.*)

Description

<img src= "${JOB_URL}ws/qrcode.jpg?t=_\1" height= "200" width= "200" /><br/>微信扫码登录

第二次添加批处理

:: 延迟15秒,等待扫码登陆,否则无法进行代码上传
@ping 127.0.0.1 -n 15 >nul

:: 获取服务端口
set /p PORT=<"C:\Users\test-ops\AppData\Local\微信开发者工具\User Data\Default\.ide"
echo "微信开发者工具运行在%PORT%端口"

:: 获取预览二维码
del /f /s /q qrcode.txt qrcode.jpg
curl -o preview.jpg http://127.0.0.1:%PORT%/preview?projectpath=%WORKSPACE%
echo [QRCode preview generated succeed]%BUILD_NUMBER%

:: 上传代码
for /f "delims=" %%i in ('python D:\jenkins\urlencode.py %upload_desc%') do set desc=%%i
curl "http://127.0.0.1:%PORT%/upload?projectpath=D:\mp&version=%upload_version%&desc=%desc%"
echo "上传成功!请到微信小程序后台设置体验版或提交审核!"

python脚本:urlencode.py

from urllib.parse import quote
import sys

data = sys.argv[1]
print(quote(data))

第二次添加 build description用于显示开发预览二维码

Regular expression

\[QRCode preview generated succeed\](.*)

Description

<img src= "${JOB_URL}ws/preview.jpg?t=_\1" height= "200" width= "200" /><br/>微信扫码预览

执行构建

构建过程中,可以直接显示二维码
这个是用来登录小程序开发工具的,如果不登录无法进行代码上传
image.png
这个是预览小程序的二维码,由于预览要求源码目录大小不能超过2M,所以在生成预览二维码前,先把之前的登录二维码相关文件删除,尽可能保证源码目录大小
image.png


标题:jenkins发布预览微信小程序(windows_slave)
作者:fish2018
地址:http://www.devopser.org/articles/2019/05/31/1559285817839.html