说起打包,我们的QA简直是要抓狂,这个确实我也很同情他们。项目最开始打包是另一个同事做的,打包步骤是有些繁琐,但是项目上线后,不敢轻易动啊!每次他们打包总要跟我抱怨,国内版本打包步骤要10多步还能忍,不能忍的是越南版本一下子21步,所以他们也总是调侃我们程序!

QA:"大佬,什么时候能优化下打包流程,说好的一键呢?"

我:"大约在冬季,下个项目肯定一键,如果有可能给你做个语音的,直接说打包就行了"。

最后纯属开玩笑,好了,废话不多说了,切入今天正题,如何做到一键打包?

1,你了解Jenkins吗?

  Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。主要功能包括:1、持续的软件版本发布/测试项目。2、监控外部调用执行的工作。这么说比较官方,说白了,它就是一种集承了多种常用的插件于一身的工具平台,通过这个平台你能很方便的管控你的项目!它的强大之处在于它能直接调用外部的shell指令和bat,那么今天我们一起去解开一点点它的什么面纱,为什么说是一点点呢?因为它太强大了,太深了!

1.1,Jenkins是如何安装的?

  我使用的是2.164.2,下载地址在这里:https://jenkins.io/download/ 下载后直接解压安装即可,使用需要先安装jdk,这个就不再废话了!

  

1.2, 安装完成,如何使用呢?

  打开你的浏览器输入:http://localhost:8080/  please wait for monment......

    

  根据提示,找到该路径下的密码,复制到这里就可以了,接下来是初始化插件,需要等待1-2分钟

  

  初始化插件完成后是创建用户和密码,这看你高兴了,爱怎么创建就怎么创建了,我在这里就创建了用户名:admin  密码:123456 的用户,那么准备工作基本完成了!

1.3,如何用Jenkins创建我们第一个任务呢?

    

  任务创建好了,接下来该如何配置这个任务呢?

  

  将你的ssh私钥添加进来不然去gothub上无法checkout你的project

  
  到此,一个简单的从GitHub上拉取工程的任务已经好了,构建下任务,也就是执行下我们创建的任务,你会惊喜的发现,github上的工程check下来了,目录在E:\Jenkins\workspace\Task_BuildAPK,就是你安装Jenkins的路径,下面会自动创建工作区间workspace下级目录就是你的任务名称,所有关于本任务的操作都会在这个目录下!大家可能会说这也忒简单了吧,那么来个稍微复杂点的,通过Jenkins传入参数来控制AssetBundle的打包方式,我们项目的打包分为全部资源打包和增量打包,这两种方式我们来尝试下!

2,小试牛刀,Jenkins参数打包

  目标:通过Jenkins参数控制打包方式

  2.1,如何通过Jenkins创建参数并将参数传入Editor下的打包指令中呢?

    我们就先定义几个常用的参数,例如:资源版本号,打包渠道和AssetBundle的打包方式!

    

     参数设置完成最后显示是这个样子的

      接下来如何将参数传递,由于%UnityPath% -projectPath %projectPath% -quit -batchmode -executeMethod AssetBundleFramework.AssetBundleBuilder.BuildAssetBundleCommond -logFile %filename%_buildAssetbundle.log也只能调用Editor下的静态方法,所以我先将设置好的参数按照一定的格式写到本地,执行打包指令时再去解析这些参数列表!这样就能完美的听从Jenkins参数去执行打包命令了!

    

打包主要调用了BuildWithParameter.bat,主要完成jenkins参数本地化,assetbundle资源打包和apk打包

@echo offset UnityPath=E:\Unity5.6.6\Unity\Editor\Unity.exeset filename=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%set "filename=%filename: =0%"REM 1,打AssetBudle资源;    2,生成APK;    3,Copy资源到目标路径REM 接受Jenkins传入的参数set parameter=%1echo parameter:%parameter%REM 将Jenkins传入的参数写到本地,Editor下读取在jenkins中设置的版本号和渠道名称echo %parameter%>parameter.txtecho Start Build AssetBundleREM BuildAssetBundle%UnityPath% -projectPath E:\Jenkins\workspace\Task_BuildAPK\AssetBundleFramework\AssetBundleFramework-master -quit -batchmode -executeMethod AssetBundleFramework.AssetBundleBuilder.BuildAssetBundleCommond -logFile %filename%_buildAssetbundle.logecho Build AssetBundle Finishedecho Start Build APKREM Build APK%UnityPath% -projectPath E:\Jenkins\workspace\Task_BuildAPK\AssetBundleFramework\AssetBundleFramework-master -quit -batchmode -executeMethod PerformBuild.CommandLineBuildAndroid -logFile %filename%_buildApk.logREM %1 -projectPath %2 -quit -batchmode -executeMethod APKBuild.Build -logFile build.logif not %errorlevel%==0 ( goto fail ) else ( goto success ) :successecho Build APK OKREM Copr Dirgoto end :failecho Build APK Failgoto end :end

  2.1,这样到底可行吗?一起构建一次我们最新的任务看下结果!

  

  不好意思,命令全部走完了,也没报错,就是没生成出来apk,,,最后看日志才知道是这里的问题,坑了我1个多小时.

  

解决方案:将sdk的路径添加到全局属性中的环境变量即可!

  

再次构建后,打包后生成了参数文件,打包日志文件和apk文件!

3.0,打包成功,Jenkins还能再做点什么呢?

  工具之所以成为工具,就是因为你想要的它都能满足你,这个时候能来个通知就完美了!

  3.1,构建结果,通过邮件通知你,怎么配置邮件呢?

  邮件主题设置:

    【构建通知】PROJECT_NAME - Build #" role="presentation" style="display: inline; line-height: 1.8; word-spacing: normal; word-wrap: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial;">PROJECT_NAME - Build #PROJECT_NAME - Build #BUILD_NUMBER - $BUILD_STATUS!
  邮件内容模板内容:      

    <html>    <head>    <meta charset="UTF-8">    <title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志title>    head>    <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"        offset="0">        <table width="95%" cellpadding="0" cellspacing="0"  style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">            <tr>                本邮件由系统自动发出,无需回复!<br/>                        各位同事,大家好,以下为${PROJECT_NAME }项目构建信息br>             <td><font color="#CC0000">构建结果 - ${BUILD_STATUS}font>td>           tr>            <tr>                <td><br />                <b><font color="#0B610B">构建信息font>b>                <hr size="2" width="100%" align="center" />td>            tr>            <tr>                <td>                    <ul>                        <li>项目名称 : ${PROJECT_NAME}li>                        <li>构建编号 : 第${BUILD_NUMBER}次构建li>                        <li>触发原因: ${CAUSE}li>                        <li>构建状态: ${BUILD_STATUS}li>                        <li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}consolea>li>                        <li>构建  Url : <a href="${BUILD_URL}">${BUILD_URL}a>li>                        <li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}wsa>li>                        <li>项目  Url : <a href="${PROJECT_URL}">${PROJECT_URL}a>li>                    ul>    <h4><font color="#0B610B">失败用例font>h4><hr size="2" width="100%" />$FAILED_TESTS<br/><h4><font color="#0B610B">最近提交(#$SVN_REVISION)font>h4><hr size="2" width="100%" /><ul>${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %mli>"}ul>详细提交: <a href="${PROJECT_URL}changes">${PROJECT_URL}changesa><br/>            td>            tr>        table>    body>    html>

  将邮件通知配置到我们的任务中
    设置完成,再次构建下我们的任务,AssetBundle打包完成,apk生成完毕,邮件发送事件被触发,Nice!!!

    

    接下来,检查下邮件上都发送了什么?

    
    意不意外,惊不惊喜,好不好玩?这些我也只是花了2天时间学习的,如果有什么地方写的不好或者是不正确欢迎指正和交流!大家有问题可以找我交流!

From cnblogs/wuzhang

More:【微信公众号】 u3dnotes 

免责声明:部分资源收集整理自网络,版权归原作者所有,仅作学习交流使用,不用于任何商业途径,如不慎该资源侵犯了您的权利,请通知我及时删除,谢谢。

html打包apk_将打包彻底一键化!Unity和Jenkins真是绝配相关推荐

  1. html一键打包iOS,GDB苹果网页一键打包工具(IOS,IPA,苹果应用网页打包,Windows平台)...

    工具简介 GDB苹果网页一键打包工具(IOS,IPA,苹果应用网页打包,Windows平台)可以把本地HTML项目或者网站打包为一个苹果应用IPA文件,无需编写任何代码,支持在苹果设备上安装运行.作为 ...

  2. mac unity一键化打ipa_2 编写sh脚本和unity脚本

    参考博客:https://www.xuanyusong.com/archives/2734 主要就是查API,编写 jenkins调用sh脚本->mac的sh脚本调用unity的C#脚本 关于插 ...

  3. android百度多渠道打包,Android多渠道打包方案的实践与优化

    目前使用过的多渠道打包方式有两种 ,一种是通过gradle打包,还有一种是美团的多渠道打包方案具体详情见这里 1.Gradle打包 1.1.在Androidmanifest.xml中添加 androi ...

  4. android 打包版本号,Android打包版本号设置

    之前没有设置过打包的命名,每次打包都是默认的"app-realease.apk",之后手动修改名字来显示出它是一个新版本. 晚上学习了如何配置打包名称,很简单,修改build.gr ...

  5. java打包_java工程打包(方式一)

    1.新建工程myproject package cn.zj; public class TestMain { public static void main(String[] args) { Syst ...

  6. Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子

    Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子 目录 Python打包工具Pyintealler打包py文件为windows exe文件过程 ...

  7. android 自定义apk名,Android Studio多渠道打包、自定义打包APK名称

    现在为了推广产品,会在多个渠道应用市场发布应用,为了统计不同渠道的数据,需要在应用中表明渠道,如果一个一个去修改打包效率会很低.AS为我们提供了简便的方法,可以多渠道打包,一次打包所有的渠道包. 1. ...

  8. 【Android 安装包优化】APK 打包流程 ( 文件结构 | 打包流程 | 安装流程 | 安卓虚拟机 )

    文章目录 一.APK 文件结构 二.APK 打包流程 三.APK 安装流程 四.安卓虚拟机 一.APK 文件结构 Android 应用的安装包时 以 " .apk " 为后缀的 A ...

  9. python打包exe之打包深度学习模型踩坑记录及其解决办法。

    在现实生活中,有时候我们写的程序需要发给小伙伴用,而小伙伴没有python,这时候我们需要将程序打包成exe文件发给小伙伴用. 今天讲下打包深度学习模型 打包一般要用到cmd命令行,要求cmd能执行p ...

最新文章

  1. 大年夜排查bug:竟然是同事把Redis用成这鬼样子,坑了我
  2. mysql 自定义函数之判断
  3. 渝粤教育 陕西师范大学 《初级微观经济学》作业
  4. Linux IPC实践(12) --System V信号量(2)
  5. 一种牛逼的网站分享插件实现
  6. 使用静态容器防止并发修改同一对象
  7. 最新基于CentOS 5.5 ,集成lamp,lnmp终级安装版
  8. js 设置cookie和获取cookie
  9. 【原创】Python 网易易盾滑块验证
  10. 什么是Apache?Apache是什么意思?
  11. 如何对谷歌地图的火星坐标进行纠偏校正
  12. 003_创建simulink文件
  13. java实验学校与教师_java实验
  14. BBN: Bilateral-Branch Network with Cumulative Learning for Long-Tailed Visual Recognition
  15. X特效 html+css+js
  16. 无线CE认证中的DFS测试
  17. 中国元宇宙+赋能实体经济峰会暨中国民协元宇宙工委会员发布仪式
  18. 校园网自动拨号联网的方式
  19. Linux Framebuffer驱动剖析之一—软件需求
  20. win10 字体渲染优化 色彩调整

热门文章

  1. pycharm英语怎么读_PyCharm常用设置
  2. python动态心形代码_父亲节,程序员几条代码硬核示爱
  3. java中的强制类型转换注意事项_浅谈Java中强制类型转换的问题
  4. win2003安装邮箱服务器,windows2003邮件服务器
  5. Spring Cloud 中的@FeignClient注解中的contextId属性
  6. MyEclipse中流程定义文件保存时自动生成流程图
  7. m-qam matlab,基于matlab的M_QAM通信系统仿真.doc
  8. vb 软件时间限制_带时间限制的软件加密锁
  9. excel清空sheet内容 poi_java – 从POI中的WorkBook中删除工作表
  10. echart雷达图数据图形的填充颜色_数据可视化,职场数据分析都需要哪些常用的图表?...