使用 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 丰富的插件和功能,还能进一步扩展持续集成和持续交付能力,如自动化测试、部署到应用商店等。