Skip to content
On this page

使用 Jenkins Pipeline 集成 Unity 打包

概述

Jenkins 是一款流行的开源持续集成与持续交付(CI/CD)工具,而 Jenkins Pipeline 允许用户以代码形式定义整个构建、测试和部署流程。在 Unity 项目开发中,借助 Jenkins Pipeline 可以实现自动化打包,提高开发效率,确保构建过程的一致性。

环境准备

1. 安装 Jenkins

首先需要在服务器上安装 Jenkins,不同操作系统的安装方式不同,可参考 Jenkins 官方安装文档 进行安装。

2. 安装必要插件

在 Jenkins 管理界面的“插件管理”中,安装以下插件:

  • Git 插件:用于从 Git 仓库拉取 Unity 项目代码。
  • Unity 3D 插件:提供 Unity 相关的构建步骤。

3. 配置 Unity 路径

在 Jenkins 全局工具配置中,设置 Unity 编辑器的安装路径,让 Jenkins 能够找到 Unity 可执行文件。

创建 Jenkins Pipeline

1. 新建 Pipeline 项目

在 Jenkins 首页,点击“新建任务”,输入任务名称,选择“流水线”类型,然后点击“确定”。

2. 编写 Pipeline 脚本

在项目配置页面的“流水线”部分,选择“Pipeline 脚本”,以下是一个简单的 Unity 打包 Pipeline 脚本示例:

groovy
pipeline {
    agent any

    stages {
        stage('Checkout') {
            steps {
                // 从 Git 仓库拉取代码
                git 'https://github.com/your-repo/your-unity-project.git'
            }
        }
        stage('Unity Build') {
            steps {
                // 执行 Unity 打包命令
                unityBuilder(
                    unityPath: '/Applications/Unity/Hub/Editor/2021.3.10f1/Unity.app/Contents/MacOS/Unity',
                    projectPath: '.',
                    buildTarget: 'Android',
                    buildMethod: 'BuildScript.BuildAndroid',
                    outputPath: 'builds/android'
                )
            }
        }
        stage('Archive Artifacts') {
            steps {
                // 归档打包产物
                archiveArtifacts artifacts: 'builds/android/*.apk'
            }
        }
    }

    post {
        success {
            // 构建成功发送通知
            echo 'Unity 打包成功!'
        }
        failure {
            // 构建失败发送通知
            echo 'Unity 打包失败,请检查日志。'
        }
    }
}

脚本解释

  • agent any:表示该 Pipeline 能在任意可用的 Jenkins 节点上执行。
  • Checkout 阶段:借助 git 命令从指定的 Git 仓库拉取 Unity 项目代码。
  • Unity Build 阶段:运用 unityBuilder 步骤调用 Unity 进行打包,需指定 Unity 路径、项目路径、构建目标平台、构建方法和输出路径。
  • Archive Artifacts 阶段:使用 archiveArtifacts 步骤对打包生成的 APK 文件进行归档,便于后续下载。
  • post 部分:依据构建结果输出对应的通知信息。

注意事项

1. 构建方法

在 Unity 项目里要创建一个静态方法作为构建入口,例如上述脚本中的 BuildScript.BuildAndroid。示例代码如下:

csharp
using UnityEditor;
using UnityEngine;

public class BuildScript
{
    public static void BuildAndroid()
    {
        string[] scenes = { "Assets/Scenes/GameScene.unity" };
        BuildPipeline.BuildPlayer(scenes, "builds/android/YourGame.apk", BuildTarget.Android, BuildOptions.None);
    }
}

注意事项

2. 权限问题

确保 Jenkins 用户对项目目录和输出目录有读写权限,否则可能导致构建失败。

3. 依赖管理

若 Unity 项目依赖第三方插件或包,需在 Pipeline 中添加相应的依赖安装步骤,以保证构建环境完整。

总结

通过 Jenkins Pipeline 集成 Unity 打包,可实现自动化构建流程,减少人工操作,提高开发效率。同时,借助 Jenkins 丰富的插件和功能,还能进一步扩展持续集成和持续交付能力,如自动化测试、部署到应用商店等。

Released under the MIT License.