2016-03-01 114 views
1

我有一个密码保护jenkins服务器与Jenkins Maven Repository Server插件。我的问题是,因为它是密码保护,我无法从行家中访问/插件/库/家居/回购(Could not transfer metadata <metadata> from/to <repo-name> (http://ci.mydomain.com/plugin/repository/everything/): Access denied to: <repo>/<identifier> , ReasonPhrase:Forbidden.密码保护jenkins maven仓库服务器 - 从maven访问

我的尝试:
- 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> 
+0

@OhadR是和不。我正在使用Maven Repository Jenkins插件,它提供了一个Maven仓库中的构建工件。但是由于我的詹金斯受限制,Maven无法访问该回购。 – Jofkos

+0

不确定我了解jenkins-maven-repo-plugin的用法:难道你不能直接访问repostory吗?如果您想在詹金斯之外建造项目,会发生什么情况? – OhadR

+0

服务器标签中的用户名/密码应该是Maven回购的,而不是Jenkin的 – OhadR

回答

0

你应该注意到,Jenkins Maven Repository Server不会作为Maven仓库进行,因此,如果这是你需要什么(Maven回购) - 这个Jenkins插件不会帮助你。

我建议阅读关于Maven Repos;从你写的内容来看,我认为内部存储库(例如NexusArtifactory)可能是好的。默认情况下,Maven从Maven Central下载JAR,所以你不需要(也不应该)下载所有的源代码并构建它们。

+0

它的确可以作为maven仓库回购,这是它的工作,但它是密码保护,如我所说。 – Jofkos

+0

此插件将**项目构建**作为Maven存储库公开** – OhadR

+0

在引擎盖下,所有maven repo需要jar/artifact,清单,某些版​​本控制和URL来访问它。 我曾见过那些想要避免使用jenkins maven插件但也碰巧使用github的例子,在任何github repo上使用gh-pages分支并在那里添加存储库工件,这有时会公开可用的guthub托管的maven repo,有时这是在源代码回购本身上完成的,以避免为代码和工件创建2个地方的麻烦 –

1

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

首先,要使用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> 

这应该工作。我希望我能帮助你:)