2017-09-05 4 views
0

'u01/jenkins/.m2 /'에 내 settings.xml 파일이 있습니다. 이 곳에서 넥서스 배포를 구성해야합니까? (모든 사용자에 대해 전 세계적으로 사용 가능) 메이븐에 설치되어있는 폴더 또는 $HOME/.m2/settings.xml에서 젠킨스 작업을 실행하는 사용자의 홈 폴더 중 하나를 이동해야"Return code is : 401, ReasonPhrase : Unauthorized."오류가 발생합니다. 젠킨스를 통해 넥서스에 아티팩트를 배포하려고 할 때

[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. 

답변

0

메이븐 설정 파일을 조언을 주시기 바랍니다.

mvn -X | grep settings으로 전화하면 Maven이 설정 파일을 찾고 있는지 확인할 수 있습니다.

+0

나는 젠킨스 작업 폴더에 Settings.XML의 파일을 참조하고 난 무단 액세스 에러에 직면 메신저 thogh, 배포 권한을 가진 REPOS 및 사용자와 Settings.XML의 파일을 구성 했습니까? 가능한 이유는 무엇입니까? Thanks –

+0

settings.xml은 jenkins 작업 폴더에 있으면 안됩니다. 그것은'/ home/[JENKINS_USERNAME] /. m2/settings.xml'에 있어야합니다. –

1

pom.xml 파일에 <distributionManagement/> 섹션이 있어야합니다. 이런 식으로 뭔가 :

<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> 

제발하지 그에서 <distributionManagement/>에서 섹션하여 pom.xml에 일치해야합니다 당신의 settings.xml 파일의 <server/> 섹션

또한 settings.xml 파일은 젠킨스에서 정의한 경우가 아니면 ~/.m2이어야합니다 (일반적으로).

0

슬레이브에서 수동으로 배포를 실행하십시오. 올바른 설정 파일을 사용하고 있는지 확인하려면 -x을 mvn 명령에 추가하십시오.

1

우리는 비슷한 상황에 처해있었습니다. 여기서 우리는 "release"작업 중에 "401 unauthorized"를 얻었습니다. 즉 우리에게 일반 설정에 대한 자신감을 준, 그래서 /의 일 "배포"

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

"clean deploy". 

에 : 그것을 디버깅하는 중에

, 우리는에서 젠킨스/받는다는 작업을 변경 직업의 위생 측면. 그러나 "석방"은 여전히 ​​실패했다.

enter image description here

은 우리의 경우에 우리는 Settings.XML의 파일에 하드 코드 자격 증명을 해달라고, 더 복잡하게 만들려면 (우리가 인라인 목표 및 옵션을 변경 한 이후) 작업 구성의 다른 모든 측면은 동일했다. 오히려 그것들은 Jenkins가 빌드/작업 시간에 주입합니다.

여기에 "NEXUS_USER"을 (를) 추가하십시오. enter image description here

여기에 "NEXUS_PASS"를 추가하십시오. enter image description here

구성 젠킨스/Maven은 당신의 치어이 추가하여 Settings.XML의 파일 enter image description here

를 사용합니다.그것은 문제를 밝혀 : 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> 

솔루션 (이 파일은 우리의 자식의 repo에서의 pom.xml에 피어)에 Settings.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> 

(더 여기 놀랄 일이 없을 것) "maven-release-plugin"과 함께 있었고 settings.xml 파일에서 $ {NEXUS_USER}을 보간 할 수 없었습니다. 우리가 2.1 버전에서 2.5.3 버전으로 바뀌 었더니, 모두 작동했습니다.

enter image description here