Jenkins 打包好的 apk
文件,上传到tomcat或者httpd所在服务器,并且生成对应URL二维码,进行扫码下,还可以配置到钉钉机器人模板消息通知中。
一、Jenkins配置
(一)Jenkins插件安装
Jenkins搜索插件 description setter 并安装插件重启jenkins
(二)修改标记格式器
1.Manage Jenkins => Configure Global Security =>Markup Formatter 中默认的Plain text 修改为 Safe HTML
系统管理》全局安全配置》标记格式器》纯文本改为Safe HTML
(三)jenkins 配置全局环境变量
Manage jenkins
-->Config System
设置全局环境变量 PYTHON
,值为你的python3
的位置,一般为 bin
下的python
文件的路径。
(四)二维码生成
【Nodejs】
1.编写JavaScript脚本
qr_test.js
//需要下载生成二维码依赖
var qr = require('qr-image');
//文件操作依赖
var fs = require('fs');
// 接收命令行参数
let arguments = process.argv.splice(2); // 参数数组
var stringUrl = arguments[0]; // 获取arg1 即:被转化成二维码内容的字符串,比如:apk下载地址
var saveQrImageUrl=arguments[1]; // 获取arg2 即:二维码图片生成后保存路径
var imageFormat= arguments[2]; // 获取arg3
var jobName= arguments[3]; // 获取arg4
var buildNumber= arguments[4]; // 获取arg5
// 生成二维码
var code = qr.image(stringUrl, { type: `${imageFormat}`, size: 10 });
console.log(code);
// 生成本地文件
var pic = code.pipe(fs.createWriteStream(`${saveQrImageUrl}/${jobName}_${buildNumber}.${imageFormat}`));
// 监听错误事件
pic.on('error', (err)=> {
console.log(err);
});
// 监听完成事件
pic.on('finish', ()=> {
console.log('二维码生成完毕');
});
假设:
构建打包生成的apk、ipa存放在/home/jenkins/workspace/appBuild/test.apk
生成二维码脚本qr_test.js存放在/var/jenkins_home/workspace/rq_make
node qr_test.js "/home/jenkins/workspace/appBuild/test.apk" "/var/jenkins_home/workspace/rq_make" "png" ${JOB_NAME} ${BUILD_ID}
脚本需要传入两个参数
第一个参数:下载地址字符串,即jenkins构建打包生成的apk或ipa文件;
第二个参数:字符串转为二维码图片保存的路径;
第三个参数:二维码图片格式
第四个参数:jenkins job名称,用于二维码文件名称
第五个参数:构建number,用于二维码文件名称
【Python】
Window环境
1.安装Python
安装Python(3.7.5版本)到电脑上,例如在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)
脚本需要传入两个参数
第一个参数:下载地址字符串,即jenkins构建打包生成的apk或ipa文件;
第二个参数:字符串转为二维码图片保存的路径;
4.jenkins中调用脚本生成二维码
windows批处理文件
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指定目录下(需要开放tomcat端口)
(5)调用python脚本,生成二维码图片
(6)打印二维码信息到log中,供后面的步骤使用
5.jenkins job 在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)