3D领域事务-Unity

工程院-3D领域事务-Unity3D文档


Unity3D-NPM提交流程

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

页面列表

ITEM_HTML