Windows平台Jenkins自动构建Unity安卓苹果包

安装配置Jenkins 

  1. 下载安装Jekins,安装包下载地址 https://jenkins.io/download/
  2. 安装Jenkins插件

    叮叮通知插件

    上传蒲公英插件

    C#工程编译和Jenkins多任务插件

     

  3. 配置环境变量,系统管理=》系统设置=》全局属性。因为build安卓包的时候会出现AndroidSDK找不到的情况,系统环境变量配了未必都有用,所以在这里添加一下。

    JENKINSHOME是我工程用到的批处理文件存放地方


    系统管理=》全局工具配置。我的构建机器安装了Unity2017和Vs2017的,配置下MSBuild和Jdk路径,MSBuild是编译C#工程需要的。

    Windows平台Jenkins自动构建Unity安卓苹果包_第1张图片JDK环境

    Windows平台Jenkins自动构建Unity安卓苹果包_第2张图片编译项目所需要的

  4. 添加项目svn任务,新建任务=》构建一个自由风格的项目=》确定。在General里面可以添加构建参数,譬如设置debug或者relase的参数,高级里面可以设置自定义的工作空间,统一在第一个任务里面设置好,后续任务可以直接用这个任务复制出来。

    Windows平台Jenkins自动构建Unity安卓苹果包_第3张图片svn源码管理设置

    svn更新完成后记录下当前svn版本号,叮叮通知时可能会需要的到。

    @echo %SVN_REVISION%>%WORKSPACE%\svn_version.txt

    Windows平台Jenkins自动构建Unity安卓苹果包_第4张图片

  5. 添加资源打包任务,可以直接从svn任务复制过来,在添加任务界面最下有个复制输入框输入svn的任务名字就好,记得这个任务就不需要svn源码管理了。
    这个任务主要是在构建的时候调用批处理文件 Unity.exe -quit -batchmode -executeMethod,最终是调用Unity的命令行执行项目里的C#代码逻辑。 
    第一个构建是把Fairygui导出的ui代码转化成热更工程可以使用的代码,同时删除无用ui代码文件和添加热更工程所有C#文件到热更工程,并且引用正确的Unitydll文件路径。
    第二个构建执行的是编程热更工程,重新生成主工程所需要的资源文件。
    第三个批处理就是转换成安卓和苹果平台所需要的资源了。
    Windows平台Jenkins自动构建Unity安卓苹果包_第5张图片


构建安卓包

  1. 在项目编辑器工具类中添加静态方法
    public static void BuildAndroidApk ( )
            {
                List sceneList = new List ( );
                foreach ( EditorBuildSettingsScene scene in EditorBuildSettings.scenes )
                {
                    if ( scene != null && scene.enabled )
                    {
                        sceneList.Add ( scene.path );
                    }
                }
    
                if ( sceneList.Count > 0  ) 
                {
                    string dirPath = string.Format ( "{0}/../Product/Apps/Android/", Application.dataPath );
                    if ( !System.IO.Directory.Exists ( dirPath ) )
                    {
                        System.IO.Directory.CreateDirectory ( dirPath );
                    }
    
                    string appname = "AppApk";
                    string keystoreName = "keystoreName";
                    PlayerSettings.Android.keystoreName = keystoreName;
                    string keystorePass = "keystorePass";
                    PlayerSettings.Android.keystorePass = keystorePass;
                    string keyaliasName = "keyaliasName";
                    PlayerSettings.Android.keyaliasName = keyaliasName;
                    string keyaliasPass = "keyaliasPass";
                    PlayerSettings.Android.keyaliasPass = keyaliasPass;
                    string filePath = dirPath + appname + ".apk";
    
                    EditorUserBuildSettings.androidBuildSystem = AndroidBuildSystem.Internal;
                    BuildPipeline.BuildPlayer ( sceneList.ToArray ( ), filePath, BuildTarget.Android, BuildOptions.None );
                }
            }

    根据自己需要添加安卓发布设置。

  2. Jenkins添加构建任务,新建任务=》自由风格项目=》复制(资源打包的任务)。修改构建脚本

    Windows平台Jenkins自动构建Unity安卓苹果包_第6张图片


    第一个批处理是更改项目类资源超级链接的,第二个build资源的时候安卓和苹果的资源同时构建了,这里根据当前构建的平台将外部构建好的资源外链到项目内部
    第二个批处理执行的unity命令行执行上一步骤的静态方法,不出意外就可在你静态方法配的路径里生成apk

  3. 添加Jenkins构建安卓包的流水线任务,新建任务=》选择MultiJob Project=>复制(资源打包的任务)

    这个任务可以像个序列执行多个单任务,构建=》增加构建步骤=》MultiJob Phase,顺序添加上述步骤任务:svn->构建资源->buildApk任务,Continuation condition to next phase可以控制上一个任务什么状态是才执行当前任务。

  4. 构建触发器添加H(42-59) H(23-23) * * * ,就会在每天23:42-23:59之间的一个时间点构建apk流水线任务啦


构建苹果包

  1. 如同代码输出apk一样添加静态方法输出IOS项目
    public static void BuildIOSProject()
            {
                List sceneList = new List ( );
                foreach ( EditorBuildSettingsScene scene in EditorBuildSettings.scenes )
                {
                    if ( scene != null && scene.enabled )
                    {
                        sceneList.Add ( scene.path );
                    }
                }
    
                if ( sceneList.Count > 0 )
                {
                    string dirPath = string.Format ( "{0}/../Product/Apps/IOSProject/", Application.dataPath );
                   
                    if ( System.IO.Directory.Exists ( dirPath ) )
                    {
                        Directory.Delete ( dirPath, true );
                    }
                    BuildPipeline.BuildPlayer ( sceneList.ToArray ( ), dirPath, BuildTarget.iOS, BuildOptions.None );
                }
            }

     

  2. 去UnityAsset Store 购买安装IOS Project Builder for Windows
  3. 配置证书和SDK
    有mac机器开发环境的,用FAT32格式的U盘先插上windows,将安装目录下 C:\Users\iOS Project Builder for Unity\MigrationAssistant内两个文件拖入U盘,然后断开U盘再插上Mac,打开U盘双击Migration assistant (step 1, Mac).command,然后U盘里就会有SDK和Keychain文件了,U盘重新连上Windows,点击U盘内的Migration assistant (step 2, PC).cmd即可。
    无Mac机器的,想办法弄一个xcodeSDK咯,放在C:\Users\J\iOS Project Builder for Unity\SDK。苹果根证书和应用集证书下载地址https://www.apple.com/certificateauthority/,下载AppleIncRootCertificate.cer和AppleWWDRCA.cer。然后自己app开发证书需要先打开Keychain Tool,点击New private key,名字什么的随意,密码需要记住的,点击ok之后,列表里选中你刚命名的.key文件再点击new certificates signing request,eamil就是开发者账号了,密码是刚刚的密码点击确定后会生成一个.certSigningRequest文件,用这个文件去创建自己的开发者证书,下载Certificates和Provisioning Profiles证书,一起丢进C:\Users\J\iOS Project Builder for Unity\Keychain。

    Windows平台Jenkins自动构建Unity安卓苹果包_第7张图片


    这时候打开iOS Project Builder for Unity,选择你的密匙文件和Unity输出的IOS项目不出意外就可以正常发出ipa了。
  4. 添加Jenkins任务和安卓的一样,只是资源link的问价夹名字改成IOS,命令行输出apk的方法改成调用输出IOS项目的方法BuildIOSProject,之后还需要调用iOS Project Builder for Unity的命令行构建ipa了。
    iOS Project Builder for Unity还有很多功能配置就自行研究了。
     
    set PATH=C:\Users\iOS Project Builder for Unity
    build.cmd IOS项目文件夹 -provision XXX.mobileprovision(Certificates证书) -keychain C:\Users\iOS Project Builder for Unity\Keychain -identity xxx.cer(Provisioning证书):AppleIncRootCertificate.cer:AppleWWDRCA.cer:xxx.key:xxxx(privatekey的密码) -rebuild -multicore -cores "12" -ipa -cleanmodules -name "appName"

     

你可能感兴趣的:(Windows平台Jenkins自动构建Unity安卓苹果包)