推荐的构建插件将工件部署到存储库

时间:2014-11-13 10:24:59

标签: maven jenkins jenkins-plugins promoted-builds

我们有一个在Windows奴隶上运行的Jenkins Maven构建,它在每次提交时运行maven包。我正在尝试使用提升的构建插件将提升的构建部署到nexus发布存储库。

我已将“促销构建时...”设置为手动批准,并且“将工件部署到Maven存储库”的操作将存储库URL设置为“http://example.com:8081/nexus/content/repositories/releases/”,并将repo id设置为“release” 。 但是,当批准被触发时,我们得到以下堆栈跟踪:

  

[INFO] http://example.com:8081/nexus/content/repositories/releases/中的部署(id = release,uniqueVersion = true)   部署主要工件artifactid-1.0.2.pom   正在上传:http://example.com:8081/nexus/content/repositories/releases/groupid/artifactid/1.0.2/artifactid-1.0.2.pom   错误:无法部署工件:无法传输工件groupid:artifactid:pom:1.0.2 from / to release(http://example.com:8081/nexus/content/repositories/releases/):无法传输文件:http://example.com:8081/nexus/content/repositories/releases/groupid/artifactid/1.0.2/artifactid-1.0.2.pom。返回码为:401,ReasonPhrase:未经授权。   org.apache.maven.artifact.deployer.ArtifactDeploymentException:无法部署工件:无法传输工件groupid:artifactid:pom:1.0.2 from / to release(http://example.com:8081/nexus/content/repositories/releases/):无法传输文件:{{3 }}。返回码为:401,ReasonPhrase:未经授权。       在org.apache.maven.artifact.deployer.DefaultArtifactDeployer.deploy(DefaultArtifactDeployer.java:143)       在hudson.maven.reporters.MavenArtifactRecord.deploy(MavenArtifactRecord.java:193)       在hudson.maven.RedeployPublisher.perform(RedeployPublisher.java:176)       在hudson.plugins.promoted_builds.Promotion $ RunnerImpl.build(Promotion.java:282)       在hudson.plugins.promoted_builds.Promotion $ RunnerImpl.doRun(Promotion.java:224)       在hudson.model.AbstractBuild $ AbstractBuildExecution.run(AbstractBuild.java:533)       在hudson.model.Run.execute(Run.java:1740)       在hudson.model.Run.run(Run.java:1678)       在hudson.plugins.promoted_builds.Promotion.run(Promotion.java:174)       在hudson.model.ResourceController.execute(ResourceController.java:89)       在hudson.model.Executor.run(Executor.java:240)

如果我更改促销操作以触发maven部署,则重新运行构建并且部署目标按预期工作,如果我添加git发布者,这也会在身份验证时失败。如果运行Jenkins的用户在本地执行,则两个操作都会成功。

推广的构建插件如何确定部署的身份验证详细信息?

1 个答案:

答案 0 :(得分:0)

要执行需要使用Maven进行身份验证的部署,您需要在settings.xml file内配置包含正确信息的服务器。因此,请使用以下内容修改(或创建)您的用户设置(在${user.home}/.m2/settings.xml下):

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      https://maven.apache.org/xsd/settings-1.0.0.xsd">
  ...
  <servers>
    <server>
      <id>releases</id>
      <username>my_login</username>
      <password>my_password</password>
    </server>
  </servers>
  ...
</settings>

这将使用给定的用户名和密码定义名为releases的服务器配置。如果需要,您可以使用密码或私钥。

然后,您需要确保Jenkins正确阅读您的Maven设置文件。在Jenkins 2.8下,您可以导航到“Jenkins&gt;全局工具配置”。

enter image description here

这两个选项指向之前修改过的全局Maven设置和用户设置。

最后,您需要确保Jenkins中配置的构建操作正在查找已配置的服务器。在“部署工件到Maven存储库”操作中,编写部署URL,“存储库ID”应该是<id>中配置的服务器的settings.xml,在此releases情况下:

enter image description here