Jenkins生成APP二维码下载链接
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,用于二維碼文件名稱
Nodejs生成二維碼圖片文件_u013302168的博客-CSDN博客https://github.com/liyinchigithub/qr_makehttps://github.com/liyinchigithub/qr_maketest2.js//需要下載生成二維碼依賴var qr = require('qr-image'); //文件操作依賴var fs = require('fs'); // 接收命令行參數let arguments = process.argv.splice(2);// 參數數組var url_string = argumehttps://blog.csdn.net/u013302168/article/details/121461813
【Python】
Window環境
1.安裝Python
安裝Python(3.7.5版本)到電腦上,例如在C:\Python37;
配置環境變量將C:\Python37和C:\Python37\Scripts添加到Path環境變量中;
2.安裝Python二維碼插件
執行命令
? pip install qrcodepip install Image3. 編寫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 sysdata=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)總結
以上是生活随笔為你收集整理的Jenkins生成APP二维码下载链接的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Swift 中的类与结构体
- 下一篇: python利用pyinstaller打
