Jenkins中Artifactory的授权不起作用
Posted
技术标签:
【中文标题】Jenkins中Artifactory的授权不起作用【英文标题】:The authorization of the Artifactory in Jenkins does not work 【发布时间】:2012-07-06 05:31:42 【问题描述】:我正在使用 Artifactory 2.4.0 和 Jenkins 1.438,我有几个模块的 maven 项目。需要部署所有模块(罐子和一场由此产生的战争) 通过 Jenkins 进入远程 Artifactory 服务器。
我的 artifactory 用户管理员使用默认密码(密码),我尝试在 jenkins 上执行的所有构建都可以正常工作。所以当我解决 要更改 de Artifactory 管理员密码并使用管理员的新凭据更新我的设置,我在 jenkins 构建日志中出现以下错误:
未能在项目 PilotoExemplo 上执行目标 org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy):无法部署工件: 无法将工件 br.com.pilotoExemplo:pilotoExemplo:pom:2.1.0.11-20120705.160113-1 从/到快照传输 (ip_server/artifactory/libs-snapshot-local):传输文件失败: ip_server/artifactory/libs-snapshot-local/br/com/pilotoExemplo/pilotoExemplo/2.1.0.11-SNAPSHOT/pilotoExemplo-2.1.0.11-20120705.160113-1.pom。 返回码为:401
以前有人见过这个问题吗?我在谷歌上没有找到类似这样的搜索。
这是我的 settings.xml:
<mirrors>
<mirror>
<mirrorOf>*</mirrorOf>
<name>repositorio</name>
<url>ip_server/artifactory/repo</url>
<id>repositorio</id>
</mirror>
</mirrors>
<profiles>
<profile>
<repositories>
<repository>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>central</id>
<name>libs-release</name>
<url>ip_server/artifactory/libs-release/</url>
</repository>
<repository>
<snapshots />
<id>snapshots</id>
<name>libs-snapshot</name>
<url>ip_server/artifactory/libs-snapshot/</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>plugins-release</name>
<url>ip_server/artifactory/plugins-release</url>
</pluginRepository>
</pluginRepositories>
<id>artifactory</id>
<distributionManagement>
<repository>
<id>release</id>
<url>ip_server/artifactory/libs-release-local/</url>
</repository>
<snapshotRepository>
<id>snapshot</id>
<url>ip_server/artifactory/libs-snapshot-local/</url>
</snapshotRepository>
</distributionManagement>
</profile>
</profiles>
<activeProfiles>
<activeProfile>artifactory</activeProfile>
</activeProfiles>
<servers>
<server>
<id>snapshot</id>
<username>admin</username>
<password>newPassword</password>
</server>
<server>
<id>release</id>
<username>admin</username>
<password>newPassword</password>
</server>
<server>
<id>repositorio</id>
<username>admin</username>
<password>newPassword</password>
</server>
</servers>
【问题讨论】:
【参考方案1】:据我所知,Jenkins 作业可以有自己的 M2 存储库,或者他们使用用户的存储库。所以答案可能是,您的 jenkins 作为服务运行(可能作为本地系统帐户),并且不是以您的用户的名义。
您可以在 Jenkins 设置/系统信息页面(yourcontextroot/systemInfo)查看用户名。所以基本上解决方案是为正在运行的用户放置相同的设置文件,就像你一样。
【讨论】:
我检查了 Jenkins 的 systeminfo 页面,发现变量:“user.name”定义为“tomcat”。我的詹金斯将用户和组定义为“tomcat”。但我不明白你的意思:“为正在运行的用户放置相同的设置文件,就像你一样”你能解释得更好吗?谢谢你帮助我! 这意味着,你有一个tomcat用户,它有一个带有m2目录的home。它必须有一个 m2 设置文件(就像您自己的用户也有一个),它定义了 maven 的人工身份验证,如果它以“tomcat”的名称运行。【参考方案2】:使用明文密码解决问题的提示:
访问和登录 Artifactory。 登录后,单击屏幕右上角的用户名。 输入您的密码,然后在 em 解锁按钮中添加密码,启用加密密码。 复制将显示在屏幕下方的标签并将其粘贴到 settings.xml 文件中。如果您更喜欢只复制密码,请确保让它与下面显示的标记完全一致,包括密码开头的“\”。 记得在你的 POM.xml 中使用你的服务器的 id 来调整标签,定义在标签中 点击更新按钮,准备就绪!检查下一个项目发布时是否一切顺利。【讨论】:
这不是一个完整的、独立的答案。裸链接应在 cmets 中发布到原始问题。这是因为链接页面往往会移动、更改或过时。您应该在此处提取并引用解决问题的链接页面的片段,以使答案完整。以上是关于Jenkins中Artifactory的授权不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Jenkins Artifactory 插件:请求版本信息时出错:连接被拒绝
通过 jenkins 上传的 JFrog Artifactory 工件不会出现在构建中
今晚8点!使用 Jenkins + Artifactory + Kubernetes 实现应用自动化持续发布