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

上面的命令主要分为三步:

  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中,供后面的步骤使用。

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



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

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

以上是关于Jenkins自动化打包生成二维码下载链接的主要内容,如果未能解决你的问题,请参考以下文章

jenkins 安卓打包生成二维码下载

Jenkins+Gradle实现Android移动端自动打包+生成apk二维码

jenkins+gradle+上传蒲公英(Android持续集成)

gitlab+jenkins自动化打包IOS

最强打包插件,支持fir,蒲公英上传, 360加固 ,自动生成二维码

最强打包插件,支持fir,蒲公英上传, 360加固 ,自动生成二维码