[빌드/MAVEN/Jenkins]MAVEN HTTP response code: 501 에러 (Ant 포함)

MAVEN에서 발생할 수 있는 에러 입니다.

Server returned HTTP response code: 501

회사에서 젠킨스를 배포 툴로 사용하고 있는데.

정말 뜬금없이 위의 에러가 발생했다.

Server returned HTTP response code: 501

호출 한 URL은 http://repo1.maven.org/

구글링을 해보니 1월 15일부로 http 통신을 중단한다고 한다.

maven을 통해 빌드하고 있으니 pom.xml에 repository URL만 바꾸면 되겠구나 생각했다.

변경 전

	<repository>
		<id>mvn2</id>
		<url>http://repo1.maven.org/maven2/</url> 
		<releases>
			<enabled>true</enabled>
		</releases>
		<snapshots>
			<enabled>true</enabled>
		</snapshots>
	</repository>

변경 후

	<repository>
		<id>mvn2</id>
		<url>https://repo1.maven.org/maven2/</url> 
		<releases>
			<enabled>true</enabled>
		</releases>
		<snapshots>
			<enabled>true</enabled>
		</snapshots>
	</repository>

하지만 똑같이 에러가 발생.. 분명 브라우저에서 들어가면 http는 501을 뱉고있고.

https로 접속하면 정상적으로 들어가지는데 무엇이 문제였을까..

java 버전에 따른 protocol 에러.

한참을 삽질하다 발견한 java version에 따라 protocol_version이 다르다는 사실.

아래 표를 보면 java 6은 TLS 1.0이 기본.

시스템에서 java 6 버전을 쓰고 있는데

maven에서 요구하는 버전은 TLS1.2여서 동일한 에러가 발생했었다.

Java VersionSSL/TLS DefaultOther Supported Versions
Java 6TLS 1.0TLS 1.1 (update 111 and later), SSLv3.0*
Java 7TLS 1.0TLS 1.2, TLS 1.1, SSLv3.0*
Java 8TLS 1.2TLS 1.1, TLS 1.0, SSLv3.0*

따라서 TLS1.2v 으로 호출하도록 추가해주면 문제가 해결!

TLS1.2v 을 사용하게 하려면 아래의 코드를 추가하면 된다고 한다.

	-Dhttps.protocols=TLSv1.1,TLSv1.2

이클립스였으면 옵션 마지막 줄에 추가하면 되겠지만.. 젠킨스에서는 어디서 넣어야 하는가 찾는게 마지막 문제!

MAVEN으로 빌드 할 경우

MAVEN 으로 빌드를 할 경우 JVM Option 에 위의 코드를 넣어주면 된다.

JVM Option은 숨겨져 있기 때문에 Builder 항목에서 고급을 누르면 표시된다.

maven

ANT로 빌드 할 경우

이렇게 모든게 끝난 줄 알았는데..

MAVEN이 아니라 ANT로 빌드하는 시스템들이 있었다.

게다가 ANT 빌드의 경우 Jenkins 내에 JVM Option을 추가 할 수 있는 항목 또한 없었다..

결국 업체 문의 끝에 ANT Script 내에 JVM Option 추가하는 위치를 찾을 수 있었다.

빌드 할 시스템의

exec 태그 안쪽에 arg value=”-Dhttps.protocols=TLSv1.2”

를 추가 하면 된다.

ant


© 2020. DESH All rights reserved..

Powered by Hydejack v8.5.0