Jenkins自动化打包生成二维码下载链接

2022-07-30 10:45:44 浏览数 (1)

在自动化打包流程中,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如何生成二维码图片,参考如下:

代码语言:javascript复制
//需要下载生成二维码依赖
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

代码语言:javascript复制
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二维码插件,安装的命令:

代码语言:javascript复制
  pip install qrcode
  pip install Image

然后,编写python生成二维码图片的脚本。

代码语言:javascript复制
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环境

代码语言:javascript复制
set BASE_PATH=%TOMCAT_HOME%webappsapk%BUILD_ID%
set BASE_URL=http://192.168.0.102:8080/apk/%BUILD_ID%
mkdir �SE_PATH%
copy %WORKSPACE%appbuildoutputsapkdebug*.apk �SE_PATH%
python D:myqrcode.py �SE_URL%/app-debug.apk �SE_PATH%qrcode.png
echo DESC_INFO:�SE_URL%/qrcode.png,�SE_URL%/app-debug.apk

Linux Shell脚本

代码语言:javascript复制
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:jacksoftwareapache-tomcat-7.0.70webappsapk82,BUILD_ID为jenkins自带的环境变量,表示此次构建生成的ID
  2. 设置变量BASE_URL为apk对外的访问路径,即链接地址。 例如:http://192.168.0.102:8080/apk/82。
  3. 创建目录。例如:D:jacksoftwareapache-tomcat-7.0.70webappsapk82
  4. 复制打包的apk到tomcat指定目录下(需要开放tomcat端口)。
  5. 调用python脚本,生成二维码图片。
  6. 打印二维码信息到log中,供后面的步骤使用。

接下来,jenkins job 在【Add post-build aciton】中选择添加【set build description】,比如添加下载效果。

最后,点击构建,构建完成之后就会自动输出一个下载的二维码,如下:

当然,我们还可以将打包后的二维码发送到钉钉和企业微信群,本文不做介绍。

0 人点赞