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 Artifactory 插件:请求版本信息时出错:连接被拒绝

通过 jenkins 上传的 JFrog Artifactory 工件不会出现在构建中

今晚8点!使用 Jenkins + Artifactory + Kubernetes 实现应用自动化持续发布

jfrog artifactory jenkins pipeline 集成

没有使用 jenkins gradle artifactory 插件部署的工件