问题
This used to work before I upgraded Jenkins to 1.494. Now I get this error in Jenkins when using the build promotion plugin to copy the war artifact to the snapshot repo:
ERROR: Failed to deploy artifacts: Could not transfer artifact com.blah.data:RestWebServices:war:1.0-20121224.163825-2 from/to archiva.apache.snapshots (http://10.31.31.64:8080/archiva/repository/snapshots): Failed to transfer file: http://10.31.31.64:8080/archiva/repository/snapshots/com/blah/data/RestWebServices/1.0-SNAPSHOT/RestWebServices-1.0-20121224.163825-2.war. Return code is: 401, ReasonPhrase:Unauthorized.
org.apache.maven.artifact.deployer.ArtifactDeploymentException: Failed to deploy artifacts: Could not transfer artifact com.blah.data:RestWebServices:war:1.0-20121224.163825-2 from/to archiva.apache.snapshots (http://10.31.31.64:8080/archiva/repository/snapshots): Failed to transfer file: http://10.31.31.64:8080/archiva/repository/snapshots/com/blah/data/RestWebServices/1.0-SNAPSHOT/RestWebServices-1.0-20121224.163825-2.war. Return code is: 401, ReasonPhrase:Unauthorized.
at org.apache.maven.artifact.deployer.DefaultArtifactDeployer.deploy(DefaultArtifactDeployer.java:141)
at hudson.maven.reporters.MavenArtifactRecord.deploy(MavenArtifactRecord.java:190)
at hudson.maven.RedeployPublisher.perform(RedeployPublisher.java:173)
at hudson.plugins.promoted_builds.Promotion$RunnerImpl.build(Promotion.java:187)
at hudson.plugins.promoted_builds.Promotion$RunnerImpl.doRun(Promotion.java:141)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:586)
at hudson.model.Run.execute(Run.java:1543)
at hudson.model.Run.run(Run.java:1489)
at hudson.plugins.promoted_builds.Promotion.run(Promotion.java:106)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:236)
Caused by: org.sonatype.aether.deployment.DeploymentException: Failed to deploy artifacts: Could not transfer artifact com.blah.data:RestWebServices:war:1.0-20121224.163825-2 from/to archiva.apache.snapshots (http://10.31.31.64:8080/archiva/repository/snapshots): Failed to transfer file: http://10.31.31.64:8080/archiva/repository/snapshots/com/blah/data/RestWebServices/1.0-SNAPSHOT/RestWebServices-1.0-20121224.163825-2.war. Return code is: 401, ReasonPhrase:Unauthorized.
at org.sonatype.aether.impl.internal.DefaultDeployer.deploy(DefaultDeployer.java:280)
at org.sonatype.aether.impl.internal.DefaultDeployer.deploy(DefaultDeployer.java:211)
at org.sonatype.aether.impl.internal.DefaultRepositorySystem.deploy(DefaultRepositorySystem.java:443)
at org.apache.maven.artifact.deployer.DefaultArtifactDeployer.deploy(DefaultArtifactDeployer.java:137)
... 10 more
Caused by: org.sonatype.aether.transfer.ArtifactTransferException: Could not transfer artifact com.blah.data:RestWebServices:war:1.0-20121224.163825-2 from/to archiva.apache.snapshots (http://10.31.31.64:8080/archiva/repository/snapshots): Failed to transfer file: http://10.31.31.64:8080/archiva/repository/snapshots/com/blah/data/RestWebServices/1.0-SNAPSHOT/RestWebServices-1.0-20121224.163825-2.war. Return code is: 401, ReasonPhrase:Unauthorized.
at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$4.wrap(WagonRepositoryConnector.java:951)
at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$4.wrap(WagonRepositoryConnector.java:941)
at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$PutTask.run(WagonRepositoryConnector.java:837)
at org.sonatype.aether.connector.wagon.WagonRepositoryConnector.put(WagonRepositoryConnector.java:467)
at org.sonatype.aether.impl.internal.DefaultDeployer.deploy(DefaultDeployer.java:274)
... 13 more
Caused by: org.apache.maven.wagon.TransferFailedException: Failed to transfer file: http://10.31.31.64:8080/archiva/repository/snapshots/com/blah/data/RestWebServices/1.0-SNAPSHOT/RestWebServices-1.0-20121224.163825-2.war. Return code is: 401, ReasonPhrase:Unauthorized.
at org.apache.maven.wagon.shared.http4.AbstractHttpClientWagon.put(AbstractHttpClientWagon.java:613)
at org.apache.maven.wagon.shared.http4.AbstractHttpClientWagon.put(AbstractHttpClientWagon.java:509)
at org.apache.maven.wagon.shared.http4.AbstractHttpClientWagon.put(AbstractHttpClientWagon.java:490)
at org.apache.maven.wagon.shared.http4.AbstractHttpClientWagon.put(AbstractHttpClientWagon.java:470)
at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$PutTask.run(WagonRepositoryConnector.java:811)
... 15 more
I have the creds in the settings.xml file:
<server>
<id>snapshots</id>
<username>deployment</username>
<password>deployment</password>
</server>
Not sure why this all of a sudden stopped working with 1.494. I downgraded incrementally to 1.491 and it still happened. Very frustrating.
回答1:
You already proved yourself that this is not a pure Jenkins issue by downgrading. Since the password lies in settings.xml, try running this from within Jenkins mvn help:effective-settings
. This would give you what exactly the settings are, at run time and whether the password is in there.
Also try checking the spelling for your <id>snapshots</id>
and <username>deployment</username>
. I just hit this error somewhere today, where a user was releases
instead of release
and maven was giving forbidden errors
回答2:
I would suggest installing the Config File Provider plugin, which provides a nice GUI for editing the contents of your configuration files (Such as the Maven settings file)
When configuring your build use the "-s" option to tell Maven to use one of these configuration files:
mvn -s $MY_PROJECTS_MAVEN_SETTINGS ???
The advantage of this approach is that you are sure the build is using your settings and not some random file it might be taking off the file system. The second benefit is that each project can now easily have their own specific Maven settings (For example each project will most likely have different credentials).
回答3:
I figured out how to get past the problem, but I still don't know how it happened to begin with.
I created a 3rd user in Archiva, and set it so the user didn't have to change their password on 1st login. I then updated the settings.xml in Jenkins with that new user.
It now works.
I still don't know why it stopped working with the original user though.
Thanks to everyone for their help.
回答4:
Thanks for following up with you solution Oggie. I just ran into the same symptom and have overcome with your new user fix.
Further info: I was able to get the old username and password to work by deleting the old user and creating a new user with exactly the same username and password. (Though I experimented with a new user with same/different passwords along the way).
With regard to the cause... I have little idea. We run Archiva on the same machine as UberSVN, and our Jenkins sits inside UberSVN as a plugin. No upgrades were made to any of these. There were however a number of ownership changes made to various directories on the server, though I can't see those being the cause given the solution was to simply create a new user.
Thanks again for the post.
回答5:
I missed giving the deployment user the Role RepositoryManager
after re-creating my Archiva repository. After adding the role, it solved the 401 when uploading artifacts.
See Archiva User Guide.
来源:https://stackoverflow.com/questions/14023836/now-getting-401-unauthorized-in-jenkins-when-deploying-artifact-to-archiva-maven