【问题标题】:Password protected jenkins maven repository server - access from maven受密码保护的 jenkins maven 存储库服务器 - 从 maven 访问
【发布时间】:2016-06-14 11:31:06
【问题描述】:

我有一个带有Jenkins Maven Repository Server 插件的受密码保护的詹金斯服务器。我的问题是,由于它受密码保护,我无法从 maven (Could not transfer metadata <metadata> from/to <repo-name> (http://ci.mydomain.com/plugin/repository/everything/): Access denied to: <repo>/<identifier> , ReasonPhrase:Forbidden.) 中访问 /plugin/repository/everything/ repo

我尝试了什么:
- Putting the server credentials in the .m2/settings.xml
- 基本认证:http://<user>:<password>@ci.mydomain.com/<repo>
- 没有任何身份验证

都没有用...

任何帮助将不胜感激。

编辑:

我的 settings.xml:

<settings>
  <servers>
      <server>
        <id>test-ci</id>
        <username>jenkins</username>
        <password>password</password>
    </server>
  </servers>
</settings>

还有我的 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project>

    <groupId>com.mygroup</groupId>
    <artifactId>Artifact</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <repositories>
        <repository>
            <id>test-ci</id>
            <url>http://ci.mydomain.com/plugin/repository/everything/</url>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>com.mygroup</groupId>
            <artifactId>ProjectOnCi</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

</project>

【问题讨论】:

  • @OhadR 是和否。我正在使用 Maven 存储库 Jenkins 插件,它在 Maven 存储库中提供构建工件。但由于我的 jenkins 受到限制,Maven 无法访问该仓库。
  • 不确定我是否理解 jenkins-maven-repo-plugin 的用法:您不能直接联系存储库吗?如果您想在 jenkins 之外构建项目,会发生什么情况?
  • 服务器标签中的用户名/密码应该是 Maven 仓库的,而不是 Jenkins 的
  • 是的,但是 jenkins 密码保护也保护了 repo 路径。
  • 那么为什么需要 kenkins-repo-plugin?在“存储库”标签中,放置 maven-repo 的 url(所以不涉及 jenkins)。会有帮助吗?

标签: maven authentication jenkins repository


【解决方案1】:

您应该注意Jenkins Maven Repository Server 不会作为 Maven 存储库执行,所以如果这是您需要的(一个 Maven 存储库) - 这个 Jenkins 插件将无济于事。

我建议阅读Maven Repos;从您写的内容来看,我认为内部存储库(例如NexusArtifactory)可能很好。默认情况下,Maven 从 Maven Central 下载 JAR,因此您不必(也不应该)下载所有源并构建它们。

【讨论】:

  • 它确实作为一个 maven repo 执行,这是它的工作,但正如我所说,它受密码保护。
  • 这个插件将项目构建公开为一个maven存储库
  • 在底层,所有 maven repo 需要的只是 jar/artifact、清单、一些版本控制和访问它的 URL。我已经看到了那些想要避免使用 jenkins maven 插件但又碰巧使用 github 的示例,在任何 github repo 上使用 gh-pages 分支并在那里添加存储库工件,这提供了公开可用的 Guthub 托管的 maven repo,有时这个在源代码仓库本身上完成,以避免为代码和工件创建 2 个位置的麻烦
【解决方案2】:

今天刚刚在这个问题上挣扎了几个小时,终于找到了答案。

首先,要使用 HTTP 基本身份验证,您需要提供用户和 API 令牌 作为密码。您可以在“管理 Jenkins”->“管理用户”->“编辑用户”(用户旁边的设置图标)->“显示 API 令牌”中找到此令牌。

其次,Jenkins 使用的是抢先式身份验证,这意味着没有 HTTP 身份验证协商,但您需要在第一个请求中立即发送凭据。你可以在这里阅读:https://wiki.jenkins.io/display/JENKINS/Authenticating+scripted+clients

要相应地配置您的 Maven 存储库,请确保使用以下服务器配置:

<server>
    <id>test-ci</id>
    <username>YOUR_USER</username>
    <password>YOUR_API_TOKEN</password>
    <configuration>
        <httpConfiguration>
            <all>
                <usePreemptive>true</usePreemptive>
            </all>
        </httpConfiguration>
    </configuration>
</server>

这应该有效。希望能帮到你:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 2012-09-16
    • 2011-07-01
    相关资源
    最近更新 更多