Android jenkins 打包发布

来源:互联网 发布:淘宝上卖的一碗泄油汤 编辑:程序博客网 时间:2024/06/05 06:52

前言

app 提测阶段,需要实时更新apk供测试人员测试。开发人员去实时打包,肯定浪费人力。
如果测试人员打包呢,又会有限制,毕竟不是每位测试都懂代码!真没有办法了吗?

环境:

Jenkins ver. 2.60.3

发布到 linux ,以下下环境是在linux 下配置的


这里只介绍打包完成后,apk如何上传到蒲公英,并从蒲公英拉取二维码链接到本地,然后展示到jenkins 构建界面

这里写图片描述

详情页面

这里写图片描述

1.首先进入项目配置界面

general 选下卡下 设置 –>项目名称,描述,构建方式(本例采用参数化构建,version-name,version-code对外开放给测试人员)etc。

这里写图片描述

2.切换源码管理配置源码路径

本例采用svn作为源码仓库,这里svn项目配置成动态可调整的

这里写图片描述

3.选项卡切换到构建触发器选项

配置触发规则,根据具体需求动态配置如下五种触发规则

触发远程构建 (例如,使用脚本)

 Build after other projects are built Build periodically   GitHub hook trigger for GITScm polling Poll SCM

本例配置为 Build periodically 规则为 50 7 * * 1-5 ,每天早上 7:50 ,周一~周五去自动打包发布。

4.选项卡切换到构建环境选项

这里写图片描述

5.选项卡切换到构建选项

   配置gradle,配置打包脚本如下图

图5

选择 Execute Shell 设置打包发布脚本

注意:这里linux环境,和window 环境的脚本不太一样需要转换成相应平台的编码方式

蒲公英集成jenkins 文档入口 https://www.pgyer.com/doc/view/jenkins

我们这里写的脚本在蒲公英提供的shell脚本基础上增加拉取二维码链接,并保存到本地的步骤

#java -jar /usr/local/android/qrtools/QRcode.jar url=http://10.7.0.201:8080/jenkins/apk/npl-${APP_VERSION}-${Channel}.apk image=latestapk.jpg save=/root/.jenkins/workspace/npl_trunk/# 脚本自动上传到蒲公英-拉取最新二维码        cd ..        cd updateshell        ./needparameter.sh   ../npl_trunk/app/build/outputs/apk        #./needparameter.sh /usr/tomcat/apache-tomcat-8.0.36/webapps/jenkins/apk        echo " start decode image ======================"        # use jq tools to download pgy image  to local disk, get data from pgy.json        RESULT=$(jq -r .data.appQRCodeURL /root/.jenkins/workspace/updateshell/pgy.json)        curl -s $RESULT > /usr/tomcat/apache-tomcat-8.0.36/webapps/jenkins/apk/npl.png         # image File save path  npl_trunk/npl.png        curl -s $RESULT > ${WORKSPACE}/npl.png         # delay one second        sleep 1

6. 选项卡切换到构建后操作选项

设置Archive the aritifacts 存档文件类型 需要插件

设置 set Build Description 需要插件,这个就是显示到build界面二维码设置入口

设置通知邮件 etc

这里着重介绍下shell脚本的编写,以及过程中遇到的问题

1.shell脚本解析蒲公英返回json串

2.如何存储json串到本地

3.根据解析出来的二维码图片,如何发起网络请求并下载二维码图片!

4.图片保存/读取

未解决问题

二维码链接想通过邮件形式发送给构建者,没能解决,邮件模板中不能读取到本地json串中内容!

个人想法:修改邮件模板,使用groovy脚本+jetty模板,将解析出来
的json串中二维码嵌入到邮件模中。

#!/bin/bash#MAIN_MODULE AndroidStudio project directory under the main moduleMAIN_MODULE="."#The test address separately#MAIN_MODULE="./app" # pgy  API accountPGYER_USER_KEY="蒲公英key"PGYER_API_KEY="蒲公英Api"#APK path#APK_PATH="${MAIN_MODULE}/build/outputs/apk"#Receive the external transfer apk pathAPK_PATH=$1echo "=============================================="#echo "current path: `pwd`"echo "APK_PATH=${APK_PATH}"APK_LIST=`ls -t ${APK_PATH}`echo "${APK_LIST}"#ind the latest apk packagefor APK_FILE in ${APK_LIST}; do    APK_NAME=${APK_FILE}    echo "apk file name= $APK_NAME  File=$APK_FILE"done#-------------------------------------------------if [ -n "$APK_NAME" ]; then # Determine whether is empty    echo "upload $APK_FILE pgy"    #upload pgy updateDescription(version descript)    RESULT=$(curl -F "file=@${APK_PATH}/${APK_NAME}" -F "uKey=${PGYER_USER_KEY}" -F "_api_key=${PGYER_API_KEY}" https://qiniu-storage.pgyer.com/apiv1/app/upload)        echo  $RESULT > pgy.json#-------------------send mail-------------------------    echo "send mail to" 279642707@qq.com    echo "${RESULT}" | mail -s "${APK_NAME} already unload pgy" 279642707@qq.com     #http://www.pgyer.com/apiv1/app/uploadfi

workspace 目录

这里写图片描述

包含脚本

这里写图片描述

注:
APK_PATH=$1 接受apk编译出来apk路径的。这样一套脚本可以对所有项目使用

 上面代码字面意思就是,根据传的apkpath,去循环路径下的apk,然后上传到蒲公英。这里需要配合build中的构建脚本,   assemblyDebug/Release

然后读取 RESULT(蒲公英平台返回的json串)

 {    "code": 0,    "message": "",    "data": {        "appKey": "--------------",        "userKey": "-----------------",        "appType": "2",        "appIsLastest": "1",        "appFileSize": "15076147",        "appName": "\u8bfa\u79d2\u8d37",        "appVersion": "1.1.0",        "appVersionNo": "5",        "appBuildVersion": "19",        "appIdentifier": "--------------",        "appIcon": "f63573b31ed8ddd4df14dcc4da09060c",        "appDescription": "\n    \u8bfa\u79d2\u8d37\u662f\u4e00\u6b3e\u57fa\u4e8e\u79fb\u52a8\u4e92\u8054\u7f51\u5168\u7a0b\u5728\u7ebf\u7533\u8bf7\u7684\u7f51\u7edc\u501f\u6b3eAPP\uff0c \u4e3b\u8981\u89e3\u51b3\u90fd\u5e02\u5e74\u8f7b\u767d\u9886\u4e0e\u84dd\u9886\u5728\u65e5\u5e38\u751f\u6d3b\u4e2d\u7684\u5c0f\u989d\u501f\u6b3e\u9700\u6c42\u3002\u8bfa\u79d2\u8d37\u91c7\u7528\u4e92\u8054\u7f51\u5927\u6570\u636e\u65b9\u5f0f\uff0c\u5927\u5927\u7f29\u77ed\u4e86\u501f\u6b3e\u6240\u9700\u7684\u65f6\u95f4\uff0c\u65e8\u5728\u63d0\u4f9b\u4e00\u4e2a\u7b80\u5355\u65b9\u4fbf\u3001\u7075\u6d3b\u5feb\u6377\u7684\u501f\u6b3e\u65b0\u6a21\u5f0f\u3002\n",        "appUpdateDescription": "",        "appScreenshots": "9a6e655c02cdca2d83e141e3ae1d295d,ad25de9276b4633ec8d299827d3d6294,fb8e5a80514353a1bacc692a39866210,51ca54f8edaf6eba71e2b77264a14dfa,c76cf279c24fb40c30b3c4cdee3380a0,8a64c38cfdeb11cb4e9aa5fa31a60d98",        "appShortcutUrl": "6yS4",        "appCreated": "2017-12-06 10:42:46",        "appUpdated": "2017-12-06 10:42:46",        "appQRCodeURL": "https:\/\/www.pgyer.com\/app\/qrcodeHistory\/------------------"    }}

保存到指定目录

echo $RESULT > pgy.json //当前目录

后面需要解析json,解析出 “appQRCodeURL”: “https:\/\/www.pgyer.com\/app\/qrcodeHistory\/——————”,拿到 appQRCodeURL去下载图片到本地

下面这段脚本放入到 needparameter.sh 中取执行,竟然报错。迫不得已拉出来执行,执行位置在build shell 中前面已经贴出来

     echo " start decode image ======================"        # use jq tools to download pgy image  to local disk, get data from pgy.json        RESULT=$(jq -r .data.appQRCodeURL /root/.jenkins/workspace/updateshell/pgy.json)        curl -s $RESULT > /usr/tomcat/apache-tomcat-8.0.36/webapps/jenkins/apk/npl.png         # image File save path  npl_trunk/npl.png        curl -s $RESULT > ${WORKSPACE}/npl.png         # delay one second        sleep 1

注: 这里面使用linux平台 jq解析工具,语法查看 https://stedolan.github.io/jq/

下面处理就很顺利了。读取json,解析iappQRCodeURL链接,通过 curl 命令去服务器下载,存到指定位置。通过uri 路径写死。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微商收钱不发货怎么办 微信红包收不到怎么办 苹果手机进了水怎么办 手机进水开不了机怎么办 u盘外壳坏了怎么办 鱼刺刺手指肿了怎么办 做小保健射的快怎么办 宝宝被跳骚_咬了怎么办 北京被仙人跳了怎么办 cnc刀库卡住了怎么办 经常熬夜月经不来怎么办 三星a7手机发热严重怎么办 三星s6电池坏了怎么办 苹果7磨砂黑氧化怎么办 索尼z2一直重启怎么办 备份是无限重启怎么办 网上套现被骗了怎么办 魅族手机摔弯了怎么办 手机不带nfc功能怎么办 三星s7后盖脱胶怎么办 小米6听筒声音小怎么办 红米4听筒声音小怎么办 索尼z5太耗电了怎么办 索尼z5密码忘了怎么办 高清线头子坏了怎么办 金立m5开不了机怎么办 旅行箱拉链坏了怎么办 青芒果切开没熟怎么办 拉链头掉了一侧怎么办 新秀丽箱子坏了怎么办 拉杆箱秘密忘了怎么办 双肩包带子太滑怎么办 双肩包背带老掉怎么办 剃须刀刀网坏了怎么办 期望工资说高了怎么办 年龄大的辅警怎么办 夷陵中学老校区怎么办 点我达同城直送怎么办 苏州市民卡b丢了怎么办 医保卡换市民卡怎么办 乐清市民卡丢了怎么办