总结
👁: 本笔记截至至23/10/17日暂时没能完整实现,卡在这个问题[Unity no longer supports manual activation of Personal licenses]
以下笔记基于Windows持续集成环境(Win+Docker) 👁所以你至少要在Windows中已安装Docker 【How To】
原理

Runner: 在线的一台服务器(用于最终编译产出包的服务器) ,我如何让一台服务器成为Gitlab仓库的Runner?看这里 👁 Gitlab-Runner
pipelines: GItLab Ci 服务中的流水线, 流水线中会编排很多任务,每个任务是具体的事项 例如 【编译】 、【发布】 而这些任务是你在 .gitlab-ci.yml 中配置的!
.gitlab-ci.yml: GItLab CI运行的必备条件,在这里配置和定义了要执行的集成发布过程,诸多任务及编译环境、版本等设置
1.项目配置
首先: 克隆 https://gitlab.com/game-ci/unity3d-gitlab-ci-example.git 项目 完成后解压并打开
->移步到你的Unity项目目录中,执行下列步骤:
1.1 在你的Unity项目Assets/Scripts 下 创建 Editor 目录
1.2 将 unity3d-gitlab-ci-example/Assets/Scripts/Editor/下的 BuildCommand.cs 复制到你项目的/Assets/Scripts/Editor/ 下
1.3 将unity3d-gitlab-ci-example中的 ci (整个ci文件夹) 复制到你的项目根目录中
1.4 将unity3d-gitlab-ci-example/.gitlab-ci.yml 文件 复制到你的项目根目录中
Tips: 如不理解,可参考 Game.ci-GettingStart
完成上述步骤后,编辑 .gitlab-ci.yml 文件
修改如下部分
variables:
BUILD_NAME: 你的项目名称
UNITY_VERSION: "你的项目Unity版本2021.3.27f1"
IMAGE: unityci/editor # https://hub.docker.com/r/unityci/editor
IMAGE_VERSION: 2.0.0 # This will automatically use latest v1.x.x, see https://github.com/game-ci/docker/releases
2.GitLab中的Ci设置
2.1 为项目配置 Runner


如何配置一台在线的Runner可以参考文档 -> 点我
本笔记是安装的Windows版本Runner,安装后应该是以'服务'启动的!

接下来启动它,然后开始注册流程, 可参考 -> Register Runner
本笔记基于Windows ,所以使用 CMD命令方式
>gitlab-runner.exe register
接下来它会让你输入一些信息,包括一个URL、registration token 等,这些在你的Gitlab的配置页面上有(上图中划除部分即是),复制粘贴进去!
关键是 , 你打算以哪种executors方式来进行编译构建
本文使用了docker-windows的方式 见下图(所以它会让输入一个docker镜像,你可以根据自己项目的unity版本去 UnityCiDockerHub上 根据Tag找,例如ubuntu-2020.1.1f1-android-0.3.0)

具体可参考此处 高级设置-执行者详述
之后还会让你输入一些描述信息等,全部完毕后会告诉你设置已成功。

留意一下这个 config.toml 配置文件 这里保存了你刚才输入的一些信息,你可以修改,但必须重启 Runner服务才会生效。
如果运气不错,那这个时候可以在 GitLab的Runner中看到一个在线的(绿色)Runner了。
2.2 为流水线配置变量

添加 UNITY_PASSWORD和 UNITY_USERNAME 这两个变量,这就是你登录 Unity Hub的用户名密码。
此时提交代码,GitLab会执行流水线任务。
你会发现一个任务卡住了,显示

那是因为没有配置 license ,所以 job get-activation-file 执行了,手动触发点一下。
如果一切正常,你会看到

点击右侧的Job artifacts download ,你就能拿到基于你的UnityId的许可申请件 格式为 x.alf
上传到 https://license.unity3d.com/manual,根据说明操作,如果一切顺利,最终你会得到 x.ulf (许可件)
3.配置许可变量
UNITY_LICENSE
内容是你的x.ulf中的文本,粘贴进去
再发布的时候可以看到执行的是你配置的编译、测试任务了。
可能遇到的问题(Q&A)
Q: 为什么我的任务执行时说找不到合适的Runner?
A: 首先确定是否已经有在线的Runner注册完备了,如果已经有了,通常这是Runner设置问题导致的。看下图

首先把这个 ’该运行程序将仅在受保护分支触发的管道上运行‘ 取消选中,然后再看下面的 Tags 是否与你的流水线任务 Tag相同。
本文操作步骤参考借鉴于
Comments | NOTHING