基于Python和Jenkins的Unity自动化打包方案总结(4)

390 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第27天,点击查看活动详情

前言

前几篇中,我们完成了C#端的打包接口,实现了打包的实际功能。如果只有C#端的打包代码,我们也只能从命令行去手动运行。由于我们的打包参数很多,并且还有更新svn等操作,因此我们选择使用Jenkins作为这套系统的前端。Jenkins提供了非常方便的界面去配置参数和构建流程,并原生支持svn和git,这样拉取代码的工作就不需要自己写脚本完成了。本篇中将使用图文,详解介绍如何配置Jenkins的构建项目。

Jenkins 安装

请移步官方文档:www.jenkins.io/zh/doc/book… 我安装的是Windows版本,因为要将Unity编辑器安装在同一台服务器上,通过Jenkins运行Unity进行打包,没必要使用Mac。

Jenkins (windows版)服务停止和启动

  • 以管理员身份运行cmd.exe
  • 进入到自己的jenkins安装目录:cd C:\Program Files\Jenkins
  • 停止服务:jenkins.exe stop
  • 启动服务:jenkins.exe start
  • 重启服务:jenkins.exe restart

Jenkins项目配置

项目建立

在Dashboard中新建Item, 选择一个项目名字,并选择Freestyle project,点击确定。

image.png

添加参数

在General页,勾选 This project is parameterized,点击“添加参数”

image.png 根据我们的需求添加所需要的参数,例如:

SVN版本号参数

使用 String Parameter

image.png

构建类型参数

使用 Choice Parameter

image.png

游戏版本号参数

image.png

版本类型参数

image.png

debug模式参数

使用 Boolean Parameter image.png

构建场景参数

使用 Multi-line String Parameter

image.png

这些参数有些可以直接在Jenkins配置中使用,例如SVN_VERSION_NO;有些是在Python脚本中读取使用。参数类型基本就是string, boolean, choice和multi-line这几种。其中boolean类型得到的值是truefalse的字符串。choice类型得到的预定义的字符串中的一个。而multi-line类型得到的是一个字符串,需要自己分割,一般使用\n分割。

配置源码

我们使用的是svn,当然git也是支持的。

image.png

  • URL中填写Unity项目的svn路径,路径需要到Unity项目根目录那一层(包含Assets)。在路径尾使用@${参数名}添加需要获取的svn版本号。这儿参数名是上面定义的SVN_VERSION_NO
  • Credentials那边需要配置访问svn的用户名密码
  • 注意Check-out Strategy: 选择图中的策略,即保证了拉取项目的速度,也避免项目在打包过程中有修改导致拉取失败,或者影响做版本。

构建环境

image.png

这儿我将svn版本号合并到Build Name中,这样可以方便查看每次build的版本号,当然每次build的参数也可以在参数列表中查看,只是这么做更方便,一目了然。

构建命令

image.png

执行服务器上的一个python脚本进行构建,下一篇中将详解这个脚本的实现。之前我曾经是使用windows批处理实现,非常麻烦,还是用python比较好。

构建后操作

我只是启用了Editable Email Notification邮件通知,默认使用Jenkins配置中的邮件设置,这儿定义了触发条件为Always。

image.png image.png

执行构建

以上配置完成保存后,就可以使用Build with Parameters来启动构建,这会打开一个参数页面:

image.png

在这儿填充和选择你需要的参数,最后点击开始构建进行构建。按照我们定义的构建流程,会首先进行svn更新,然后执行python脚本,最后发送邮件。