最近在出鸿蒙包,最终去水印需要使用团结云打包,记录一下团结云打包的大概流程
需要使用的工具
- Tuanjie Devops 团结引擎控制项目和云打包的,以下简称 TD
- Platstic SCM 类似git,用于上传本地工程 ,以下简称 PSCM
整体流程
- 使用TD添加工程
- 将工程上传到PSCM中
- 添加工作流和打包脚本
- 使用TD触发云打包
- TD打包完成后下载制品(导出的鸿蒙工程)
- 本地打ab,然后把首包资源拷贝到导出的工程里
- 打鸿蒙包
- 热更新包就直接在本地按原生方式就可以了, 团结云打包只有整包的时候才有用,通过它导出的工程就是没有水印的
- 大概原理就是把工程上传到PSCM,然后使用TD云打包,团结云会分配一个云打包机,然后把工程拉到本地,然后再执行打包,最终输出的内容(制品)在TD里可以下载
使用TD添加工程
有三种方式,从Git同步、本地同步、Plastichub迁移项目,我使用的是本地同步,其余两种具体方式在官方文档中有。打开TD,登录完成以后,按官方文档操作即可 连接本地项目 | Unity 云开发
将工程上传到PSCM中
使用PSCM上传工程即可,和Git类似,但是要注意看下忽略列表,可能会把工程的某些文件给忽略了,这个有点坑
添加工作流和打包脚本
打包脚本按文档来即可
团结云打包的工作流配置文件,我这里打的是鸿蒙包,使用的鸿蒙配置文件
配置文件中前面可以都不用修改,在构建的步骤里可以根据自己的需求来修改
name: Devops Build
# 更多有关构建工作流的信息,请参考 <https://devops.u3dcloud.cn/help/docs/advanced/yaml>
# 您也可以访问注释中的其它链接来了解更多关于 云构建 action 的使用方法
# 在提交至代码库时触发云构建任务
on: [push]
jobs:
build:
name: Build OpenHarmony
# 为了让工作流可以正常触发,需要指定正确的 runs-on 标签
# <https://devops.u3dcloud.cn/help/docs/advanced/yaml#%E8%A7%A6%E5%8F%91%E5%B7%A5%E4%BD%9C%E6%B5%81>
runs-on: windows-server-2022-tuanjie-1.2.6-oh-32c-64g
steps:
# 从 Unity Devops Version Control 签出项目 <https://devops.u3dcloud.cn/help/docs/advanced/action#actionscheckout-plasticscm>
- name: Check out project repository
uses: actions/checkout-plasticscm@v1
with:
path: tjcloudbuild
# 检查签出内容
- name: List repository content
run: ls -l ./tjcloudbuild
# 构建 <https://devops.u3dcloud.cn/help/docs/advanced/action#actionstj-builder>
- name: Build project
uses: actions/tj-builder@v3
id: build-action
with:
targetPlatform: OpenHarmony
openHarmonyApiVersion: 11
projectPath: ./tjcloudbuild
buildMethod: Editor.Build.TuanjieCloudBuild.BuildProject
customParameters: -自定义参数名称1 自定义参数值1 -自定义参数名称2 自定义参数值2 ....
buildsPath: ./tjcloudbuild/CloudBuild
# 检查构建结果是否成功生成
- name: Check build result
run: ls -l ${{ steps.build-action.outputs.buildsPath }}
# 上传制品 <https://devops.u3dcloud.cn/help/docs/advanced/action#actionstj-upload-artifact>
- name: Upload artifact
uses: actions/tj-upload-artifact@v2
with:
name: Build-${{ steps.build-action.outputs.buildVersion }}
path: ${{ steps.build-action.outputs.buildsPath }
runs-on: windows-server-2022-tuanjie-1.2.6-oh-32c-64g
name: Build OpenHarmony
# 为了让工作流可以正常触发,需要指定正确的 runs-on 标签
# <https://devops.u3dcloud.cn/help/docs/advanced/yaml#%E8%A7%A6%E5%8F%91%E5%B7%A5%E4%BD%9C%E6%B5%81>
runs-on: windows-server-2022-tuanjie-1.2.6-oh-32c-64g
这里需要注意,windows-server-2022-tuanjie-1.2.6-oh-32c-64g 表示你要选择的云打包机配置,一定要先看这个,不然可能会出现云打包机不支持你本地的团结版本 云构建服务器 | Unity 云开发
actions/tj-builder@v3
# 构建 <https://devops.u3dcloud.cn/help/docs/advanced/action#actionstj-builder>
- name: Build project
uses: actions/tj-builder@v3
id: build-action
with:
targetPlatform: OpenHarmony
openHarmonyApiVersion: 11
projectPath: ./tjcloudbuild
buildMethod: Editor.Build.TuanjieCloudBuild.BuildProject
customParameters: -自定义参数名称1 自定义参数值1 -自定义参数名称2 自定义参数值2 ....
buildsPath: ./tjcloudbuild/CloudBuild
主要就是这一段,with下方的参数中可以填哪些在上方文档里有说明,其余参数可以参照官方文档按需填写,这里主要说一下比较重要的两个参数
- buildsPath:在这个路径里的内容在云打包结束后我们可以下载,比如我们记录的版本文件什么的就需要放到这个目录下,在打包完成后再手动上传到PSCM中,便于下次打包使用。打包完成的更新包等等,也需要修改目录到这个文件下,这样在打包完成后才能下载到本地。个人测试后推荐方式为都放到统一目录,最后结束的时候拷贝到buildsPath目录下
- customParameters:格式上放有,我之前的打包方式是通过jenkins,会有一堆环境变量需要获取,在云打包上就只能通过这里来传递,比如以下两个参数
set BuildAll=1 是否打整包
set UpdateApp=0 是否打兼容更新包
现在改为 customParameters: -BuildAll 1 -UpdateApp 0
实际代码中也需要修改,接入云打包之前就直接使用Environment.GetEnvironmentVariable获取Bat里配置的环境变量,现在需要区分团结云打包
public static string GetEnvVar(string envName, bool isTuanjieCloudBuild)
{
if (isTuanjieCloudBuild)
return GetArgValue(envName);
return Environment.GetEnvironmentVariable(envName);
}
public static string GetArgValue(string arg)
{
var args = System.Environment.GetCommandLineArgs();
for (var i = 0; i < args.Length; i++)
{
if (args[i].Equals($"-{arg}", StringComparison.OrdinalIgnoreCase) && i < args.Length - 1)
{
var value = args[i + 1];
return value;
}
}
return "";
}
actions/tj-upload-artifact@v2
上传制品其实就是buildsPath目录下的内容,上传之后才我们的TD里才能下载
使用TD触发云打包
在把配置文件和打包脚本编写好以后就开始测试云打包了,推荐先用空工程测试,不然特别费时间
TD打包完成后下载制品(导出的鸿蒙工程)
点击即可下载
本地打ab,然后把首包资源拷贝到导出的工程里
每个项目不一样,这个就自己根据实际情况去处理了
打鸿蒙包
通过Deveco手动打包或者鸿蒙命令行工具自动化打包,最终打出来的包就是没有水印的了