Unity3D-NPM提交流程
[TOC]
最后修订日期 | 2023-11-24 |
---|---|
作者 | 林七佛 |
V1.3.0 | 创建文档 |
NPM 简介
    我们工程院使用的NPM的全称是Sonatype Nexus Repository Manager,它是一款强大的仓库管理器,可以用于存储和分发Maven、NuGet、npm、RubyGems等各种类型的软件包。它支持两种类型的仓库:代理仓库和托管仓库。
- 代理仓库:代理远程仓库,例如Maven Central,可以缓存远程仓库中的软件包,以减少对远程资源的依赖和提高本地开发的效率。 - 托管仓库:用于存储你自己开发的软件包,可以是私有的或公开的。
    Nexus Repository Manager的主要特点包括: 1. 组件管理:Nexus Repository Manager可以帮助你管理和组织软件组件,提供了丰富的元数据,以便于搜索和发现。 2. 安全和许可证合规:Nexus Repository Manager可以集成Sonatype的CLM,提供组件的安全和许可证合规性检查。 3. 集成和自动化:Nexus Repository Manager提供了REST API,可以方便地集成到CI/CD流程中。
共享平台的NPM地址:[仓库管理地址](http://nexus.sdp.nd/ "仓库管理地址")
说明
    虚拟实验室的组件构建和发包目前都是利用SDP进行的,下面的文档也是基于SDP服务。 此外,我们也编写了一些构建脚本,在本示例中都会给出说明。
前置工作
    Unity NPM发包的流程是针对U3D的UPM包的,所以我们从构建UPM包开始(构建的最后一个流程包括发NPM包),这里我们以[虚拟实验室]的[物件播放组件vlab-equipmentplayer]为例。如果只对发UPM包有兴趣,可以直接搜索npm publish命令
确保共享平台已创建U3D组件
[共享平台平台地址](https://d.101.com/ "共享平台地址")
请确保已经在共享平台上创建好【U3D组件】,如果没有就需要有权限的帮忙新建一个
确保工程目录中的代码结构符合UnityPackage包的规范
具体请参考[Unity官网](https://docs.unity.cn/cn/2019.4/Manual/cus-layout.html "Unity官网")
确保生产管理平台上有权限
可以打开下面的链接查看权限,若无权限,可以找林瑶申请
[生产管理平台地址](https://vlab-mes-web.sdp.101.com/#/ "流程工具地址")
类型实验室作为基础组件添加到流程平台
新增基础组件
[实验资源数据看板 (101.com)](https://nd99u.site.101.com/bcs/#/app-sharing/c1dab7c4669640ab9615a8d54e2c0ecf?&_share=true&bcsAppId=c1dab7c4669640ab84f76c5cd8c2cae4 "实验资源数据看板 (101.com)")
填写说明 组件编码:同共享平台组件编码,比如本页第一张图vlab-equipmentplayer SDP组件ID:同共享平台组件URL中的appid字段,参考本页第一张图的appId=652dfad729d65d021d015d30 SDP组件名称:同共享平台组件的名称 组件包ID集合:共享平台申请组件时用了namespace + "." + 组件编码 组件类型:根据类型选择交互或者播放
创建版本
[入口地址](https://vlab-mes-web.sdp.101.com/#/ "入口地址")
选择生产线:未来实验室基础组件研发 开发负责人:选择自己,注意这里选谁,单据就会下单到谁 是否需要测试:这里选择否 然后填上其余必要信息
提交后就可以下单到负责人
跑通线上构建流程
构建流程说明
构建时生产管理平台会发送对应的构建请求给到共享平台
@startuml
node 生产管理平台
node 共享平台
生产管理平台 ...> 共享平台
共享平台jekins构建流程(含发NPM包)
@startuml
start
:拉取代码;
:BeforeBuild.bat;
:Build sln;
:Nuget publish;
:AfterBuild.bat;
end
@enduml
工程目录结构如下所示:
BeforeBuild.bat 对应的是U3dBuildBeforeHook.bat Build sln 对应的是调用工程目录下的 【组件id】.sln文件来构建 Nuget publish 对应的是调用工程目录下的【组件id】.nuspec 文件来发布nuget包 AfterBuild.bat 对应的是调用工程目录下的U3dBuildBeforeHook.bat
基于上述流程,类型实验室组件的构建原理是:
目标是要要将类型实验室的代码发布Unity的pakcage包【UPM包】到工程院的NPM服务器上,因此 第一步:使用构建时的版本号,package内容如下
{
"name": "com.nd.vlab-equipmentplayer",
"displayName": "vlab-equipmentplayer",
"version": "0.0.0-Version",
"dependencies": {
}
}
修改U3dBuildBeforeHook
git clean -fd
git reset --hard
@echo off & setlocal enabledelayedexpansion
rem set Version=1.2.3-pred_kdjfdkf
rem set CommitId=dd122343
cd /d %~dp0
for /f "eol=* tokens=*" %%j in (package.json) do (
set a=%%j
set "a=!a:0.0.0-Version=%Version%!"
echo !a!
echo !a!>>$
)
move $ package.json
第二步:【Build sln】是共享平台一定要调用的,因此可以提供空的sln文件(如果要进行Sonar静态代码检查、代码覆盖率等,空的sln就不行了),保证构建能成功,不报错就行。 构建过程如果遇到问题,可以从反馈的日志文件中分析问题并解决。
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.32413.511
MinimumVisualStudioVersion = 10.0.40219.1
Global
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {DA2BAD2E-4048-424B-A0D8-74E39B53386F}
EndGlobalSection
EndGlobal
第三步:添加.nugspec文件【Nuget publish】是共享平台一定要调用的,因此可以把当前组件的package.json文件发布到nuget上
<?xml version='1.0' encoding='UTF-8'?>
<package>
<metadata>
<id>$ID$</id>
<version>$VERSION$</version>
<title>vlab-equipmentplayer</title>
<authors>HuangJinmin</authors>
<owners>HuangJinmin</owners>
<iconUrl>https://litjson.net/assets/img/logo.png</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>vlab-equipmentplayer</description>
<releaseNotes>
</releaseNotes>
<copyright>Copyright 2018</copyright>
<tags>vlab-equipmentplayer</tags>
</metadata>
<files>
<file src="package.json" target="ref\npm\vlab-equipmentplayer\" />
</files>
</package>
第四步: 发布UPM包工程院的服务器上,在【AfterBuild.bat】中处理
del /Q jenkins_build_info.log
npm publish
第五步:可选,配置【.npmignore】文件,忽略不想发布到服务器上的文件
后续接入可以参考已经成功的样例:物件播放器配置方法 http://gerrit.sdp.nd/component-dll/vlab-equipmentplayer
按照上述思路提交代码后,可以尝试构建,直到构建成功,这步是最难的一步,有任何疑问可以咨询七佛或张煜园
构建结果确认
待构建成功后,可以到这个地址查看UPM包是否存在,如果存在就可以在Unity的PackageManager中看到对应的包 http://nexus.sdp.nd/repository/unity-upm/
为工程添加package
1.点击windows,选中Package Manager 可以看到刚发布的packager包,右下选择install
2.手动修改配置文件
如果在upm上能查到包,但是unity工程中的Package Manager查不到的话,可以通过修改配置文件来添加包
manifest中
"dependencies"字段下添加
"com.nd.vlab-equipmentplayer": "0.0.9-pre0"
packages-lock中
"dependencies"字段下添加
"com.nd.vlab-equipmentplayer": {
"version": "0.0.9-pre0",
"depth": 0,
"source": "registry",
"dependencies": {},
"url": "http://nexus.sdp.nd/repository/unity-upm"
}
其他实验室组件参考样例
Action组件-原由金民负责设计,后交接周竑(2023-10)。
参考资料
https://www.showdoc.com.cn/VLab/9620843670268100 https://www.showdoc.com.cn/VLab/9569593866775911 https://www.showdoc.com.cn/VLab/9751206536322905