JFrog Artifactory发布与部署

问题描述

我有一个Artifactory服务器(服务)。我在那里建立了用于托管Unity软件包的本地存储库。我想出了如何设置Unity Package Manager可以看到的作用域包。一切都很好。我唯一的问题是工件的命令行部署。从我阅读的内容来看,我似乎需要使用“ npm publish”进行部署。当我在已有的tarball文件(打包文件)中将npm称为“发布”时,它不会上载(部署)到服务器。我必须使用网络界面手动上传。该命令本身不会失败-它会打印出文件,版本,名称等列表,并以类似这样的结尾

<package name>@x.x.x

如果不是上载(部署)软件包的方式,那么(npm)publish命令的意义是什么?在不使用网络界面的情况下将软件包上传到Artifactory的正确方法是什么?

顺便说一句,我从本教程开始:Medium Article。当我在本地运行publish命令时,我会得到类似的输出,因此似乎应该为我上传程序包,但事实并非如此。另一个注意事项:我确实使用了作用域软件包-我使用了Artifactory和该教程提供的所有说明。我在任何地方都没有错误。我发布时什么也没发生。

有什么建议吗?

编辑: 这是我运行的命令:

npm publish <packagename>.x.x.x.tgz --registry http://<server>artifactory/api/npm/unity_packages/<scope>

我看到了这个线程thread,但是我宁愿不使用curl(我必须在各种机器上复制此设置,所以移动部件较少对我来说更好),而且它也很老,所以我想有一种更新/更好的部署方式。

Edit2:我也可以使用Web UI部署“ npm install”软件包,所以我认为这不是权限问题。

Edit3:示例输出

 npm publish --registry http://artifactory.ops.aws.somecompany.net/artifactory/api/npm/unity_packages/
npm notice 
npm notice ?  @com.somecompany/com.so[email protected]
npm notice === Tarball Contents === 
npm notice 388B   DependencyPackageProject.asmdef     
npm notice 611B   Source/Floater.cs                   
npm notice 1.1kB  package_internal.json               
npm notice 1.1kB  package.json                        
npm notice 2.1kB  Material/FloaterMaterial.mat        
npm notice 166B   DependencyPackageProject.asmdef.Meta
npm notice 155B   Scenes/DPP_SampleScene.unity.Meta   
npm notice 243B   Source/Floater.cs.Meta              
npm notice 182B   Material/FloaterMaterial.mat.Meta   
npm notice 154B   Prefabs/FloaterPrefab.prefab.Meta   
npm notice 172B   Material.Meta                       
npm notice 158B   package_internal.json.Meta          
npm notice 158B   package.json.Meta                   
npm notice 172B   Prefabs.Meta                        
npm notice 172B   Scenes.Meta                         
npm notice 172B   Source.Meta                         
npm notice 4.0kB  Prefabs/FloaterPrefab.prefab        
npm notice 10.3kB Scenes/DPP_SampleScene.unity        
npm notice === Tarball Details === 
npm notice name:          @com.somecompany/com.somecompany.dependencypackageproject
npm notice version:       0.1.207                                              
npm notice package size:  5.5 kB                                               
npm notice unpacked size: 21.4 kB                                              
npm notice shasum:        77188f8f599877d7a6a41bbcb1800057a3fe1646             
npm notice integrity:     sha512-vbtkwkiEacQl/[...]dPb8xlhO36odg==             
npm notice total files:   18                                                   
npm notice 
+ @com.somecompany/com.so[email protected]

解决方法

要使用npm客户端将有范围的npm软件包发布到Artifactory,您需要:

(1)确保按照npm documentation

中的说明,将您的软件包创建为有作用域的软件包。 (2)通过更新您的 .npmrc 配置文件,将相关的Artifactory npm存储库(例如npm-local)与您正在使用的范围相关联。该文件还应包含认证信息。
您可以按照Artifactory documentation中的说明进行操作。您的 .npmrc 文件应类似于以下内容:

@drorb:registry=http://localhost:8081/artifactory/api/npm/npm-local/
//localhost:8081/artifactory/api/npm/npm-local/:_password=*********
//localhost:8081/artifactory/api/npm/npm-local/:username=drorb
//localhost:8081/artifactory/api/npm/npm-local/:email=*****@gmail.com
//localhost:8081/artifactory/api/npm/npm-local/:always-auth=true

(3)例如,使用npm publish命令

npm publish craftyjs-npm-example-1.0.0.tgz  --registry http://localhost:8081/artifactory/api/npm/npm-local/

发布命令的输出应类似于

npm notice
npm notice ?  @drorb/[email protected]
npm notice === Tarball Contents ===
npm notice 662B package.json
npm notice 587B .npmignore
npm notice 116B README.md
npm notice 195B game.js
npm notice === Tarball Details ===
npm notice name:          @drorb/craftyjs-npm-example
npm notice version:       1.0.0
npm notice package size:  1.6 kB
npm notice unpacked size: 1.6 kB
npm notice shasum:        8ee8bdbfac6ae92fcdcdc7441793671ce59a3584
npm notice integrity:     sha512-4DA3LCwO+vuCo[...]FYPGTtxOrg6UQ==
npm notice total files:   4
npm notice