我收到错误“返回代码是:401,ReasonPhrase:未经授权。”当试图通过jenkins将工件部署到nexus时

时间:2017-09-05 10:53:04

标签: maven jenkins nexus

我在'u01 / jenkins / .m2 /'中有我的settings.xml文件。这是我必须为nexus部署配置的地方吗?请建议

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project jenktest: Failed to deploy artifacts: Could not transfer artifact tulsa.jenkins.test:jenktest:pom:0.0.1-20170905.090435-1 from/to snapshots (http://myhost:8081/nexus/content/repositories/snapshots): Failed to transfer file: http://myhost:8081/nexus/content/repositories/snapshots/tulsa/jenkins/test/jenktest/0.0.1-SNAPSHOT/jenktest-0.0.1-20170905.090435-1.pom. Return code is: 401, ReasonPhrase: Unauthorized. -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project jenktest: Failed to deploy artifacts: Could not transfer artifact tulsa.jenkins.test:jenktest:pom:0.0.1-20170905.090435-1 from/to snapshots (http://204.26.165.206:8081/nexus/content/repositories/snapshots): Failed to transfer file: http://myhost:8081/nexus/content/repositories/snapshots/tulsa/jenkins/test/jenktest/0.0.1-SNAPSHOT/jenktest-0.0.1-20170905.090435-1.pom. Return code is: 401, ReasonPhrase: Unauthorized.

5 个答案:

答案 0 :(得分:3)

您需要在<distributionManagement/>文件中添加pom.xml部分。像这样:

<distributionManagement>
    <repository>
        <id>my-releases</id>
        <name>my-releases</name>
        <url>http://your-repository-host:8081/nexus/content/repositories/my-releases/</url>
        <layout>default</layout>
    </repository>
    <snapshotRepository>
        <id>my-snapshots</id>
        <name>my-snapshots</name>
        <url>http://your-repository-host:8081/nexus/content/repositories/my-snapshots/</url>
        <layout>default</layout>
    </snapshotRepository>
</distributionManagement>

然后您还需要在settings.xml文件中添加类似内容:

<servers>
    <server>
        <id>my-releases</id>
        <username>your-username</username>
        <password>your-password</password>
    </server>
    <server>
        <id>my-snapshots</id>
        <username>your-username</username>
        <password>your-password</password>
    </server>
</servers>

请注意,<id/> <distributionManagement/>中的pom.xml部分应与<server/>文件中settings.xml部分的settings.xml部分相匹配。

此外,您的~/.m2文件必须(通常)位于 ffmpeg -i 1-copyright/copyright2018640x480.mp4 -i 2-openingtitle/EOTIntroFINAL640x480.mp4 -i 3-videos/yelling.mp4 -i 4-endtitle/EOTOutroFINAL640x480.mp4 -i 5-learnabout/Niambi640.mp4 -filter_complex "[0:v:0] [0:a:0] [1:v:0] [1:a:0] [2:v:0] [2:a:0] [3:v:0] [3:a:0] [4:v:0] [4:a:0] concat=n=5:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" output_video.mp4 下,除非您已在Jenkins中定义了这些文件。

答案 1 :(得分:1)

尝试从奴隶手动运行部署,如果它的工作原理通过将-x添加到您的mvn命令来确保您使用正确的settings.xml。

答案 2 :(得分:1)

我有类似的情况,我们解决了;我们在哪里获得了未经授权的#34;在&#34;发布期间#34;工作

在尝试调试时,我们更改了jenkins / maven作业:

"clean release:clean release:prepare release:perform"

"clean deploy".

&#34;部署&#34;工作,这使我们对工作的一般配置/管道方面充满信心。但是&#34;发布&#34;仍然失败;工作配置的所有其他方面都是相同的(因为我们只是在线改变目标和选项)

enter image description here

为了使它更复杂,在我们的例子中,我们不会在settings.xml文件中硬编码凭据。相反,这些是由Jenkins在建造/工作时间注入的。

添加&#34; NEXUS_USER&#34;这里。 enter image description here

添加&#34; NEXUS_PASS&#34;这里。 enter image description here

配置Jenkins / Maven以使用settings.xml文件 enter image description here

将它添加到你的pom.xml中(这里应该不足为奇)

<distributionManagement>
    <repository>
        <id>com.xxx.repo_releases</id>
        <url>https://sonatype-nexus.xxx.com/releases/</url>
        <name>Internal releases repository</name>
    </repository>
    <snapshotRepository>
        <id>com.xxx.repo_snapshots</id>
        <url>https://sonatype-nexus.xxx.com/snapshots/</url>
        <name>Internal snapshots repository</name>
    </snapshotRepository>
</distributionManagement>

从settings.xml(此文件是我们的git repo中的pom.xml的对等文件)

<servers>
  <server>
    <id>com.xxx.repo_releases</id>
    <username>${env.NEXUS_USER}</username>
    <password>${env.NEXUS_PASS}</password>
  </server>
  <server>
    <id>com.xxx.repo_snapshots</id>
    <username>${env.NEXUS_USER}</username>
    <password>${env.NEXUS_PASS}</password>
  </server>
</servers>

解决方案:事实证明问题出在&#34; maven-release-plugin&#34;,并且它无法在settings.xml文件中插入$ {NEXUS_USER}。一旦我们将版本(从2.1)提升到2.5.3,这一切都有效。

enter image description here

答案 3 :(得分:0)

您的Maven设置文件应该位于安装Maven的文件夹中(全局可供所有用户使用),也可以位于$HOME/.m2/settings.xml中执行Jenkins作业的用户的主文件夹中。

您可以致电mvn -X | grep settings查看Maven在哪里寻找设置文件。

答案 4 :(得分:0)

如果加密的密码不起作用,只需将其替换为纯文本密码和用户名即可。

相关问题