Jenkins +Python 参数化构建Unity打包流程

写在最前:

有时候会有频繁的出包需求,比如版本迭代频繁,或者策划改动频繁,从而导致程序需要不停的去打包机去打包。这个时候就可以简单配置一个让策划操作方便,界面化友好的打包工具,用Jenkins+Python,实现一个远程可登陆的打包工具,让策划在自己的工位上可以分分钟自己操作打包。

一、流程图

想了想,好像也没什么可细化的地方,大概流程如下:

二丶Jenkins端

构建流水线工程的操作就不再赘述,简单记录一下我用到的参数吧。

Homepage-Project-Configure-General:

勾选参数化构建,然后新建一些需要的参数,比如string类型,bool类型等。

不过这里有一个小坑:bool类型的值Python在接收的时候也会识别为string类型,所以这里要自己处理一下。

我是在这里配置了打包要用的unity的路径,打包工程地址,和是否执行svn的更新啊等等一些参数,具体哪些参数需要动态配置的,需要暴露给策划去填的,可以自己按需配置下。

参数配置完成之后便需要配置打包操作,下拉至Build选项,可以新建一些打包操作,比如执行Windows下的批处理,或者shell的命令行操作等等,如果这里没有你需要的操作,可以转至Jenkins的插件中心,去下载相应的插件,之后再回到这里,便可以添加你需要的操作。

我这里直接添加的shell命令,执行的就是本地写好的python脚本:

 

之后回到构建的工程里,点击Build with Parameters,将会看到自己所配置的所有参数。

参数填写正确之后,点击Build即可开始打包!

三、Python端

大概分为以下几个脚本:

 

打包配置类:config_autoPackage.py

里面主要配置打包需要的参数,需要暴露给策划的,然后从Jenkins接收的参数,都用下面的方法来接收,剩下的都直接写死在了Python脚本里。

os.getenv(str)

这个可以按需配置下:

然后整个流程大概分为:

1.svn更新:预更新,获取svn版本号,更新至指定版本。

我这边做的是,如果开启svn更新,同时不指定版本文件的话,直接默认更新至最新,同时生成最新版本的一个配置文件(一个jason字符串,存了代码资源的版本号),上传至svn。部分代码仅供参考:

 

2.AutoBundle.py,打assetbundle:os.system(cmd),调用C#静态方法,打ab包。

 

3.AutoPackage.py,开始打包:方法同上。

四、unity端

unity端主要做的事情就是给Python提供一个静态方法,以供调用,准确的说是两个方法吧,一个用来打ab资源,一个用来打包(因为有时候需要重新打ab,有时候不需要,所以这里做一下细分)。

同理,unity打包时也需要很多参数,比如包名,版本号,是否开启IL2CPP啊等一些列设置,其实这些如果需要策划手动配置的话,也可以直接在Jenkins里参数化构建,然后在调用C#脚本时传进去。

我这里用的方法比较偷懒,是直接在本地写了一个Jason字符串,每次打包的时候,自动去读这个字符串,然后从里面获取打包时的各种参数。

主要用到的关键字就是:

static、PlayerSettings、BuildPlayerOptions、

BuildPipeline.BuildAssetBundles()//打AssetBundles

BuildPipeline.BuildPlayer()//打包

具体打包代码都搜得到,就不贴出来了。

五、总结

写在最后,其实也没什么好记录的,总体步骤无非就是:Jenkins-Python-C#,参数化构建-脚本化-unity编译并执行static方法:出包!然后打完包有其他需求的话可以在构建选项后添加构建成功操作,比如把打出来的包发送至指定邮箱等等,发送邮件可以参考这个:https://blog.csdn.net/qq302756113/article/details/106501080

 


记录几个坑吧:

1.bool类型的值在从Jenkins传入Python时会识别为string类型,还是小写的true和false,需要自己处理下。

2.由于我是在mac上配置的Jenkins,Jenkins在执行python xxx.py时,执行的python版本可能会和mac本身shell终端的python不是一个版本,而且我折腾来折腾去发现,Jenkins的python版本始终是非常古老的2.7版本,各种编译失败,各种路径问题,就很头疼,最后搞了半天也没指定mac上3.8的版本,后放弃。

3.由于最近unity官方打击破解版力度比较大,频繁需要激活认证,要是莫名其妙打包失败,记得看一下是不是unity未激活- -。

4.mac上有个后缀名为.DS _Store的隐藏文件,在执行默认bundle打包时,如果把这个打进去,可能会导致bundle加载失败,建议在打bundle时过滤掉这个。

5.一定要手动指定Jenkins工程的工作空间,不然Jenkins会自动指定工作空间,可能会出现一些诡异的问题。

6.Jenkins一定要用brew安装,否则可能会有权限问题!!!

7.Jenkins一定要用brew安装,否则可能会有权限问题!!!

8.Jenkins一定要用brew安装,否则可能会有权限问题!!!

暂时想不起来别的了,先这样吧。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

国家一级摸鱼选手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值