使用的版本

系统:Windows 11
Jenkins:2.361.2
Unity:2021.3.4f1
git: 2.34.1

Jenkins安装

官网

https://www.jenkins.io/zh/

安装中的注意事项
Logon Type 登录类型可以设置为LocalSystem(not recommended) 可以后续再更改
端口的设置要是选一个未被占用的
开启和关闭jenkins的dos命令行

net start jenkins
net stop jenkins

用浏览器进入 localhost:安装设置的端口
第一次登入会提示解锁Jenkins,密码是在当前页面直接提示的计算机位置,找到之后,用文档格式打开,粘贴即可。
插件安装
安装推荐的插件即可,部分需科学上网,或者跳过。
我们需要用的插件主要是Unity3d plugin、git相关的插件
设置账户密码,登录。
或者在登录之后主页Manager Jenkins>Manager Plugins 也可以安装卸载插件

Jenkins 全局配置
Manager Jenkins>Global Tool Configuration
JDK:需要配置系统Path 环境变量,然后把Java_home填入
Git:安装后自动获取
Unity3d: 安装目录选择Editor目录的根目录,如 C:\Unity\2021.3.4f1c1

dos批处理操作Unity的一些命令

-batchmode

在批处理模式下运行Unity。应始终与其他命令行参数一起使用,因为它确保不会弹出窗口,无需任何人为的干预。当脚本代码在执行过程中发生异常,资源服务器更新失败或其他操作失败时Unity将立即退出,并返回代码为1。请注意,在批处理模式下, Unity将向控制台发送输出版本最小的日志。当然,日志文件将包含完整的日志信息。

-quit

其他命令执行完毕后将退出Unity编辑器。请注意,这可能会导致错误消息被隐藏(但他们将显示在Editor.log文件)

-createProject

根据提供的路径建立一个空项目

-projectPath

打开指定路径的项目

-logFile

指定 Unity 写入编辑器或 Windows/Linux/OSX 独立日志文件的位置

-exportPackage

导出一个包,给定一个路径(或一组给定的路径)。在本例中,exportAssetPath是要从 Unity 项目导出的文件夹(相对于 Unity 项目根目录),exportFileName是包名称。此选项一次仅导出整个文件夹。您通常需要将此命令与-projectPath参数一起使用。

-executeMethod <ClassName.MethodName>

一旦 Unity 打开项目,并且在可选的资​​产服务器更新完成后,立即执行静态方法。您可以将其用于诸如持续集成、执行单元测试、构建或准备数据之类的任务。

要从命令行进程返回错误,请抛出导致 Unity 以返回代码 1 退出的异常,或者使用非零返回代码调用EditorApplication.Exit。

要传递参数,请将它们添加到命令行并使用System.Environment.GetCommandLineArgs. 要使用-executeMethod,将封闭脚本放在 Editor 文件夹中,执行的方法必须定义为静态的。

参考:https://docs.unity3d.com/cn/current/Manual/EditorCommandLineArguments.html

Jenkins的任务创建

主页>新建任务>输入任务名称>Freestyle project> 确定
General> 勾选 This project is parameterized (参数化)
高级> 勾选 使用自定义的工作空间
需注意的是Jenkins中变量的使用是$ 而不是%%

在这里插入图片描述
源码管理
勾选git
输入git仓库地址,访问用的账户密码 如果是ssh 需要输入密钥,选择分支
在这里插入图片描述

这样配置就可以自动更新分支到最新,但是会脱离远端,想重新推送需要手动切换分支

Build Steps
在这里插入图片描述
Editor command line arguments
输入语句(其他的帖子使用的都是%%引用变量,尝试多次之后发现使用$才能正确引用)

-quit  -batchmode  -projectPath $WORKPATH  -executeMethod BuildTool.BuildAndroid   -logFile "I:\output.log"

-executeMethod 脚本名.方法名
Unity 编辑器代码参考

public static void BuildAndroid()
{
    BuildPlayerOptions options = new BuildPlayerOptions();
    options.scenes = new string[]
    {
        "Assets/Scenes/SampleScene.unity"
    };
    options.locationPathName = Application.dataPath + "/../Build/test.apk";
    options.target = BuildTarget.Android;
    options.options = BuildOptions.None;
    BuildPipeline.BuildPlayer(options);
}

Jenkins参数化到Unity的使用
Jenkins
设置变量
在这里插入图片描述

变量的使用
在这里插入图片描述

Unity:

//获取控制台输入的信息 
 string[] args = System.Environment.GetCommandLineArgs();
        foreach (var s in args)
        {
            if (s.Contains("--Name:"))
            {
                temp = s.Split(':')[1];
                // 设置app名字
                PlayerSettings.productName = temp;
            }
        }

保存后回到任务界面,点击Build,成功后左下角会出现绿色的标,红色X为错误,看控制台信息解决。
点击build with paramen

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐