Mecanim 发表于 2022-10-11 09:16

UnrealEngine在Jenkins&Perforce流水线示例(翻译)

原文链接:https://unrealcommunity.wiki/jenkins-example-windows-installation-perforce-z98w4map
介绍

本页提供有关设置基本 Jenkins 环境(在 Windows 上运行)的信息,该环境将自动从 Perforce 服务器同步(在 Linux 上运行),构建二进制文件,并将二进制文件提交回 Perforce。本页假定您:

[*]没有与Jenkins打交道的经验,
[*]在Linux VPS上有一个正在运行的Perforce服务器,
[*]在Perforce和Linux方面经验丰富,并且
[*]使用的是EGS启动器版本的虚幻引擎。
目标

此示例设置将流库与 Perforce 结合使用。预期的工作流程是让普通用户在常规主线流中工作,编码人员将在主线的虚拟流中工作,该流不包括项目中的所有文件夹,Jenkins将在主线的虚拟流中工作,该流不包括项目中的任何文件夹。结果是编码人员可以“只是工作”,创建代码更改并提交它们。当主线流中的源代码文件发生更改时,Perforce 将通知 Jenkins 并自动开始运行。Jenkins 将同步到 Perforce 的最新更改,启动构建,并(如果成功)将构建的 DLL 添加到新的更改列表中并提交。艺术家/设计师在运行 Get Latest from Perforce 时会收到 DLL。BinariesContent
运行 Jenkins 的机器必须能够从 Perforce 同步并构建虚幻项目。这意味着机器必须:


[*]已安装 Perforce,
[*]安装Visual Studio Build Tools(您可以安装Visual Studio Community Edition,也可以安装基本的CLI Build Tools),以及
[*]安装虚幻引擎/编辑器(或计划从源代码构建它,可能使用单独的Jenkins Job,这超出了本例的范围),
此设置旨在用于未主动用于UE4开发的计算机上。实时编码可能会阻止 MSVS 构建在编辑器打开时运行,即使您在单独的用户登录名上设置 Jenkins 也是如此。可以在虚拟机中安装和运行所有内容(未经测试,超出本示例的范围)。
性能设置

Jenkins

基于名为 的项目的主线流创建虚拟流。在流设置的高级选项卡的路径下,输入:Jenkins
share Binaries/...
share Plugins/SomePluginName/Binaries/...    (Specify any Plugin's Binaries folders like this)
exclude Content/...                        (Prevent Jenkins from downloading Content since it won't need it)
exclude ContentSource/...                  (Specify folders that won't be needed for DLL building like this)
isolate ...                                  (Ensure Jenkins can't submit anything except Binaries)

编码器流

创建第二个虚拟流,该虚拟流也基于名为 的主线流。在“高级”选项卡的“路径”下,输入:MainlineCoding
share ...
exclude Binaries/...
exclude Plugins/SomePluginName/Binaries/...             (Specify any Plugin Binaries folders like this)创建两个虚拟流后,您应该有一个流图,其中包含以下三个灰色流:


工作区

确保常规开发人员使用流创建其工作区,而编码人员使用流创建其工作区。MainlineMainlineCoding
Jenkins部署

从 Jenkins 网站下载并安装。
Jenkins 可能会提示您是以 LocalSystem 身份运行还是在用户帐户下运行。建议在用户帐户下运行 Jenkins。LocalSystem 被视为不安全的全局用户,在尝试让 Jenkins 执行某些操作(如使用 SSH)时,您可能会遇到权限问题。
安装完成后,Jenkins 应该会自动启动。按照说明解锁Jenkins后,它会提示您有关插件的信息。选择选择要安装的插件。确保选择了以下插件(其他插件是可选的)。稍后我们将从 Jenkins 内部添加更多插件。

[*]小四
[*]矩阵授权策略
出现提示时,指定管理员用户的登录信息。
出现提示时,指定所有用户都可以从中访问 Jenkins 的 URL。这应该类似于 。Jenkins 可能会将此 URL 插入到页面数据中,因此可能需要指定它以避免用户获得断开的链接。http://JenkinsServerPublicIPAddress:8080/
安装现在应该已完成。Jenkins将打开它的首页。
Jenkins - 创建构建用户并启用匿名访问

我们将创建一个单独的 Jenkins “build user”,它只有控制构建的权限,并且我们将启用公共只读访问,这对于允许团队成员查看构建日志非常有用。
创建构建用户

从主页中,选择“管理 Jenkins”。选择“管理用户”。选择“创建用户”。输入用户数据,然后按确定。您将返回到“用户”页面。下面我创建了用户构建机器人。



设置安全权限

转到“管理 Jenkins”。选择“配置全局安全性”。在“授权”下,选择“基于矩阵的安全性”。按添加用户或组...“,然后输入构建用户的名称。根据需要设置安全矩阵,请参阅下面的示例。



为构建用户创建 API 令牌

稍后将使用令牌对远程请求进行身份验证。以隐身/私有模式打开第二个浏览器窗口。再次登录到 Jenkins(例如,转到 localhost:8080),这次以您创建的构建用户身份登录。单击顶部栏上的用户名以转到用户页面。单击“配置”。在“API 令牌”下,按“添加新令牌”。给它一个名字(例如perforce),然后按构建。暂时将此令牌复制到安全的地方。按保存并关闭此浏览器窗口。



Jenkins - 获取必要的插件

此示例设置将使用以下附加插件:

[*]PostBuildScript Plugin
[*]SCM 前期构建步骤插件
[*]单片机跳过插件
[*]环境注入器插件
转到“管理 Jenkins”。转到管理插件。单击可用选项卡。搜索并安装上述每个插件(搜索插件并检查它,然后搜索下一个插件并检查它),按立即下载并在重新启动后安装。屏幕更改后,选择“安装完成且未运行任何作业时重新启动 Jenkins”。等待它完成,然后再次登录到 Jenkins。
Jenkins - 设置全局设置

环境变量

转到“管理 Jenkins”。选择“配置系统”。在“全局属性”下,打开“环境变量”。PROJECTNAME_UE4_VERSIONSELECTOR和PROJECTNAME_UE4_REBUILDBAT添加变量。我们的工作将使用这些变量来查找UE4实用工具。通过创建这些作为全局变量,我们可以在将来的其他作业中使用它们,并在更改引擎版本时轻松更新它们。



设置持久性凭据

转到“管理 Jenkins”。选择“管理凭据”。单击“全局”商店(在 Jenkins 域旁边)。从左窗格中选择“添加凭据”。将“种类”更改为“Perforce 密码凭据”,并指定所需的 Perforce 登录信息,Jenkins 将使用该信息连接到 Perforce。
Jenkins - 创造工作

在首页,从左窗格中选择“新建项”。选择“自由式”项目,为作业命名,然后按“确定”。此时将显示新作业的配置窗口。
源代码管理

选择“PerforceSoftware”。在“强制凭据”旁边,选择您之前创建的凭据。在“工作区行为”下,选择“流”,然后在流代码行中键入流名称(例如
//StreamDepotName/MainlineStream).在“填充选项”下,选择“自动清理和同步”。
构建触发器

您可以取消选中此处的所有内容。仅供参考,请暂时检查远程触发器构建(例如,从脚本)。请注意,它声明我们可以使用URL远程触发构建 - 记下此URL,我们稍后会使用它。Jenkins 实际上不需要为远程触发的构建启用此选项,除非您要使用身份验证令牌。在本例中,我们将跳过使用令牌;取消选中“远程触发构建”。
构建环境

选择“将环境变量注入构建过程”。在“属性内容”下添加:


单击“添加构建步骤”,然后选择“执行 Windows 批处理命令”。进入:
CALL "%PROJECTNAME_UE4_REBUILDBAT%" "%BUILDCONFIG%" "%PLATFORM%" "%CONFIG%" "%WORKSPACE%\%PROJECTNAME%.uproject" -WaitMutex -FromMsBuild

IF %ERRORLEVEL% NEQ 0 (EXIT %ERRORLEVEL%)构建后操作

点击添加构建后操作,然后选择 Perforce: 发布资产。设置方式与上面的“源代码管理”部分类似。在“发布选项”下,选择“提交更改”。输入合适的描述(例如,“Jenkins 更新的二进制文件。内部版本: ${BUILD_TAG}”)。激活仅在构建成功时发布。单击“高级”,然后在“发布路径”中输入库中的任何文件夹,这些文件夹将包含正在更新的二进制文件。这应该包括您的主游戏项目二进制文件文件夹以及任何插件\\\\\\\\
按保存。您将返回到作业的首页。



测试

在这一点上,我们应该有一个工作工作。从左窗格中按“立即构建”。构建应显示在“构建历史记录”下。单击构建条目旁边的下拉箭头,然后单击“控制台输出”以观察构建进度。
Jenkins Perforce 插件可能不会使用此设置添加“新”文件。可能需要先使用 P4V 手动添加和提交二进制文件一次。在此之后,Jenkins 会将其构建的二进制文件检测为已更改的文件,并应提交它们。
Perforce - 创建构建触发器脚本

挂起 - 创建使用 CURL 启动构建的脚本
Perforce - 设置触发器以启动构建触发器脚本

挂起 - 设置 p4 触发器以运行脚本
页: [1]
查看完整版本: UnrealEngine在Jenkins&Perforce流水线示例(翻译)