我目前正在尝试设置一个 Jenkins 和一个私有 npm 存储库(Sonatype Nexus)。当我尝试在 Jenkins 构建管道中发布到存储库时,出现以下错误。
+ npm publish --registry https://<my-private-registry>/repository/npm-private/
npm notice
npm notice package: ts-acoustics@0.0.0
npm notice === Tarball Contents ===
npm notice 2.4kB Jenkinsfile
...
('notice' level info about the files)
...
npm notice === Tarball Details ===
npm notice name: ts-acoustics
npm notice version: 0.0.0
npm notice package size: 13.8 kB
npm notice unpacked size: 47.5 kB
npm notice shasum: 554b6d2b41321d78e00f6a309bb61c9181a2e3d6
npm notice integrity: sha512-QtExdu6IqZ+lH[...]r+HXolo4YCFPg==
npm notice total files: 17
npm notice
npm ERR! …
Run Code Online (Sandbox Code Playgroud) 我部署了一些工件,并且我复制粘贴了那些工件的错误名称.我记得使用存储库内容的手册带来了问题.
处理这些情况的推荐方法是什么?
编辑:
我以为无法通过Web界面从托管存储库中删除工件.现在我看到在"浏览存储"部分我可以删除工件目录,这是我猜的推荐方式.
无论您何时阅读有关持续交付或持续集成的内容,建议使用工件存储库来存储工件,即使Jenkins已经为每个构建存储它们.
那么为什么建议使用工件库呢?是否有一个平滑的解决方案来处理Jenkins构建的工件,例如.使用这些工件进行部署?
已经有一些类似的问题,但大多数要么专注于Nexus vs. Artifactory,要么是几年之久.
我想了解这两天的两个项目的立场.我的印象是,Nexus是最受尊敬的存储库管理器,但我确实倾向于(稍微)更喜欢纯粹的自由项目(嘿,一点意识形态从不伤害任何人).
我的用例非常简单:我只想要一个按需依赖缓存,我们有六个自己的工件.我将与Ivy(不是Maven)一起使用它,我们不做自动构建,只有几个开发人员使用它.所以我也想知道Nexus的更高级功能是否是我不需要的东西.
在做出选择之前我应该注意什么?
我正在学习Gradle,来自Ant + Ivy和Maven背景,我正试图围绕正确的方式来使用gradle发布我的软件的发布版本.我还需要不断地集成我的项目,而不必不断发布独立的工件.
Ant +常春藤
在Ant + Ivy世界中,我可以创建publishSnapshot和publishRelease目标.这些可以使用不同的常春藤解析器来解析和发布到我在Nexus中的单独快照或发布存储库.
Maven的
使用Maven,我可以定义一个snapshotRepository
或repository
在我的distributionManagement
部分中将maven发布到我的单独快照或在Nexus中发布存储库.
摇篮
现在输入gradle.我怎样才能实现同样的功能?我正在使用常春藤风格的存储库.
感谢您提供的任何见解.
回答
感谢René在下面的回答,我终于能够创建一个可行的解决方案.问题的关键在于我需要不断整合我的所有项目.为此,我认为使用版本号声明依赖latest.integration
是获取最新版本库的唯一方法,因此我需要使用常春藤样式存储库.
实际上,还有其他方法可以引入最新版本的库,以便在所有项目中不断集成我的软件.解决的办法是使用uploadArchives
完全一样勒列出以下(也请注意,您将需要apply plugin: 'maven'
为此工作.确保你的资料库也Maven的风格,并宣布的依赖时,您可以使用动态版本号如图所示这里.在我的情况是,我在common.gradle和下游项目中列出了一个全局版本号,我曾经version: version
引用过全局版本变量.这样,我系统中的每个工件都有相同的版本.当它需要发布时,我可以将此值从1.0-SNAPSHOT更改为1.0并按顺序构建每个.
我们正在使用maven.我想设置基础架构,以便自动构建的工件将转到Nexus存储库.然后他们可以被开发人员使用.
我已经为我们的项目设置了一份Jenkins工作.我在同一台服务器上安装了Nexus.
在开发人员的PC上,我将默认maven设置复制到添加此部分的C:\ Users {user} .m2\settings.xml.参考文献:
<mirror>
<!--This sends everything else to /public -->
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://myserver:8081/nexus/content/groups/public</url>
</mirror>
Run Code Online (Sandbox Code Playgroud)
(我只是通过Nexus书来关注Repository Management)
我的下一步应该是什么?詹金斯应该有工作mvn install
吗?如何为公司工件创建Nexus存储库?
在安装m2eclipse的 Eclipse中,当我选择时
文件>新建>项目...> Maven> Maven项目
同
使用默认工作区位置
和
目录:Nexus Indexer
选中,出现以下错误消息:
目前没有原型.索引完成更新后,原型列表将刷新.
为什么会出现此错误?
我突然发现Eclipse工作区的plugins文件夹很大,我发现了以下文件:
在找到这些巨大的文件之前,我甚至不知道Maven是什么,我没有选择安装它(必须带有Indigo升级版)并且我从未使用它或者告诉它索引或缓存任何东西.
我已经看到了这个问题,并广泛搜索,但无法解决为什么maven或nexus甚至做任何事情!
有人可以向我解释为什么它首先创建这些文件,特别是没有我甚至使用它或告诉/允许它?
提前致谢!
我正在使用Nexus Repository Manager 3.1.0-04,我想创建一个只具有部署权限的用户.那需要的最小权限集是什么?
现在我创建了一个nx-deploy
具有以下权限的角色:
然后我创建了一个deployment
具有该角色的用户nx-deploy
.我现在可以部署工件,但是,我相信我给了太多特权?该admin
部分是不是我想要部署用户是,让一部分有我有点紧张.
不用说,在安全部分下有太多的权限可供选择.
发布到托管在我的私有 Nexus 上的私有 npm 注册表时,我遇到了身份验证问题。
我的 Nexus 设置是我有npm-proxy、npm-registry(托管 npm with allowRepublish=false
)、npm-snapshots(托管 npm with allowRepublish=true
)和npm-public(与所有其他三个存储库分组)。
由于我正在开发一个库,我使用的是我的快照存储库,所以我可以不断地重新部署相同的版本(类似于 Maven 世界中的快照)。
在我的库项目中,我在package.json 中设置了这个选项
"publishConfig": {
"registry": "https://my.nexus.com/repository/npm-snapshots/"
}
Run Code Online (Sandbox Code Playgroud)
接下来,我创建了包含以下内容的.npmrc文件:
registry=https://my.nexus.com/repository/npm-public/
_auth=RVhBTVBMRQ==
Run Code Online (Sandbox Code Playgroud)
有了这个设置,我可以毫无问题地发布项目。但是,让我烦恼的是,我的密码(只是 base64 编码)存储在文件中,应该提交,但由于其中的凭据,我无法提交。
我试图改为登录 npm 注册表并从 .npmrc 中删除了 auth 行
npm adduser --registry=https://my.nexus.com/repository/npm-snapshots --always-auth
我得到了回应 Logged in as myusername on https://my.nexus.com/repository/npm-snapshots.
但是,当我尝试运行时,npm publish
我得到:
npm ERR! code E401
npm ERR! Unable to authenticate, need: BASIC realm="Sonatype Nexus Repository …
Run Code Online (Sandbox Code Playgroud) nexus ×10
maven ×5
npm ×2
archiva ×1
artifactory ×1
deployment ×1
eclipse ×1
gradle ×1
ivy ×1
java ×1
jenkins ×1
m2e ×1
m2eclipse ×1
nexus3 ×1
node.js ×1
repository ×1
typescript ×1