Jenkins生成APK链接的二维码
Jenkins配置
1. 安装插件description setter plugin
2. Manage Jenkins => Configure Global Security =>Markup Formatter 中默认的Plain text 修改为 Safe HTML
Window环境
1.下载安装Python如3.7.5版本,安装Python到电脑上如C:\Python37,将C:\Python37,C:\Python37\Scripts添加到Path环境变量中
2.安装Python二维码插件,命令如下:
pip install qrcode
pip install Image
3. 编写python脚本,如下:
import qrcode import sys data = sys.argv[1] path=sys.argv[2] img = qrcode.make(data) img.save(path)
此脚本传入两个参数,第一个参数为下载地址字符串,第二个参数为二维码图片保存路径
4.在jenkins中调用脚本生成二维码
Widows bat批处理如下:
set BASE_PATH=%TOMCAT_HOME%\webapps\apk\%BUILD_ID% set BASE_URL=http://192.168.0.102:8080/apk/%BUILD_ID% mkdir %BASE_PATH% copy %WORKSPACE%\app\build\outputs\apk\debug\*.apk %BASE_PATH% python D:\myqrcode.py %BASE_URL%/app-debug.apk %BASE_PATH%\qrcode.png echo DESC_INFO:%BASE_URL%/qrcode.png,%BASE_URL%/app-debug.apk
Linux Shell脚本如下:
BASE_PATH=${TOMCAT_HOME}/webapps/apk/${BUILD_ID} BASE_URL=http://192.168.0.102:8080/apk/${BUILD_ID} mkdir ${BASE_PATH} cp ${WORKSPACE}/app/build/outputs/apk/release/*.apk ${BASE_PATH} python /root/app/myqrcode.py ${BASE_URL}/app-debug.apk ${BASE_PATH}/qrcode.png
echo DESC_INFO:${BASE_URL}/qrcode.png,${BASE_URL}/app-debug.apk
上面的命令做了以下事情:
(1)设置变量BASE_PATH为apk的输出路径,即将apk文件在Tomcat下的路径,如D:\jack\software\apache-tomcat-7.0.70\webapps\apk\82,BUILD_ID为jenkins自带的环境变量,表示此次构建生成的ID
(2)设置变量BASE_URL为apk对外的访问路径,即链接地址,如http://192.168.0.102:8080/apk/82
(3)创建目录,如D:\jack\software\apache-tomcat-7.0.70\webapps\apk\82
(4)复制打包的apk到tomcat指定目录下
(5)调用python脚本,生成二维码图片
(6)打印二维码信息到log中,供后面的步骤使用
5.在Add post-build aciton中选择添加set build description,如下:
<img src="\1" height="200" width="200" /> <a href="\2">点击下载</a>
最后构建的结果如下:
如需在二维码中添加Logo,可参考以下脚本
from PIL import Image import qrcode import sys data=sys.argv[1] path=sys.argv[2] img=qrcode.make(data) img=img.convert("RGBA") icon=Image.open("xx/logo.png") img_w,img_h=img.size factor=5 size_w=int(img_w/factor) size_h=int(img_h/factor) icon_w,icon_h=icon.size if icon_w>size_w: icon_w=size_w if icon_h>size_h: icon_h=size_h icon=icon.resize((icon_w,icon_h),Image.ANTIALIAS) w=int((img_w-icon_w)/2) h=int((img_h-icon_h)/2) icon = icon.convert("RGBA") img.paste(icon,(w,h),icon) img.save(path)
生成的二维码如下: