Jenkins自动化打包生成二维码下载链接
Posted xiangzhihong8
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jenkins自动化打包生成二维码下载链接相关的知识,希望对你有一定的参考价值。
在自动化打包流程中,Jenkins是一个不错的工具,可以帮助我们省去很多的打包和部署问题,解放了双手。通常,使用Jenkins 打包好的 apk 文件,我们可以上传到tomcat或者httpd所在服务器,然后生成对应URL二维码供他人扫描。
当然,我们还可以配置到钉钉机器人模板消息通知中,也可以使用Jenkins生成二维码供他人下载,需要怎么做呢?
1,安装插件
打开Jenkins的管理员系统,然后搜索插件【 description setter 】,安装该插件并重启jenkins。
2,修改标记格式器
依次点击【Manage Jenkins】->【Configure Global Security】->【Markup Formatter】 中默认的“Plain text ”修改为 Safe html。
3,配置全局环境变量
依次选择【Manage jenkins】->【Config System】设置全局环境变量 PYTHON,值为python3 的安装位置,一般为 bin下的python文件的路径。
4,编写二维码脚本
4.1 Node脚本配置
编写javascript脚本用于生成二维码,生成的源码可以参考:Node.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
,那么使用上面的脚本生成二维码就存放在/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
上面脚步中有几个参数,需要根据自己的情况进行配置:
- 参数1:下载地址字符串,即jenkins构建打包生成的apk或ipa文件;
- 参数2:字符串转为二维码图片保存的路径;
- 参数3:二维码图片格式;
- 参数4:jenkins job名称,用于二维码文件名称;
- 参数5:构建number,用于二维码文件名称;
4.2 Python脚本配置
首先,需要你安装了Python环境并配置了环境变量。然后,安装Python二维码插件,安装的命令:
pip install qrcode
pip install Image
然后,编写python生成二维码图片的脚本。
import qrcode
import sys
data = sys.argv[1]
path=sys.argv[2]
img = qrcode.make(data)
img.save(path)
上面脚本需要两个参数:
- 参数1:下载地址字符串,即jenkins构建打包生成的apk或ipa文件;
- 参数2:字符串转为二维码图片保存的路径;
然后,我们在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
上面的命令主要分为三步:
- 设置变量BASE_PATH为apk的输出路径,即将apk文件在Tomcat下的路径。 例如:D:\\jack\\software\\apache-tomcat-7.0.70\\webapps\\apk\\82,BUILD_ID为jenkins自带的环境变量,表示此次构建生成的ID
- 设置变量BASE_URL为apk对外的访问路径,即链接地址。 例如:http://192.168.0.102:8080/apk/82。
- 创建目录。例如:D:\\jack\\software\\apache-tomcat-7.0.70\\webapps\\apk\\82
- 复制打包的apk到tomcat指定目录下(需要开放tomcat端口)。
- 调用python脚本,生成二维码图片。
- 打印二维码信息到log中,供后面的步骤使用。
接下来,jenkins job 在【Add post-build aciton】中选择添加【set build description】,比如添加下载效果。
最后,点击构建,构建完成之后就会自动输出一个下载的二维码,如下:
当然,我们还可以将打包后的二维码发送到钉钉和企业微信群,本文不做介绍。
以上是关于Jenkins自动化打包生成二维码下载链接的主要内容,如果未能解决你的问题,请参考以下文章
Jenkins+Gradle实现Android移动端自动打包+生成apk二维码
jenkins+gradle+上传蒲公英(Android持续集成)