Jenkins配置
1. 安裝插件description setter plugin
2. Manage Jenkins => Configure Global Security =>Markup Formatter 中默認的Plain text 修改為 Safe HTML
Window環境
1.下載安裝Python如3.7.5版本,安裝Python到電腦上如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)
此腳本傳入兩個參數,第一個參數為下載地址字符串,第二個參數為二維碼圖片保存路徑
4.在jenkins中調用腳本生成二維碼
Widows bat批處理如下:
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指定目錄下
(5)調用python腳本,生成二維碼圖片
(6)打印二維碼信息到log中,供后面的步驟使用
5.在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)
生成的二維碼如下: