사용자 도구

사이트 도구


nexus

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
nexus [2015/09/15 11:25]
kwon37xi [설정시 주의점]
nexus [2019/06/12 15:35] (현재)
kwon37xi
줄 3: 줄 3:
  
 ===== 설정시 주의점 ===== ===== 설정시 주의점 =====
-  * gradle이나 maven이 Nexus에 요청을 보낼때 GET이 아닌 **HEAD** 요청을 보내 파일의 존재 여부를 체크하는 경우가 있는데, 이때 nginx 1.2 버전에서 HEAD + gzip 설정이 돼 있을 경우 HEAD에 body 까지 담아 보내는 버그가 있어서 파일 다운로드 체크가 올바로 안되는 현상이 발생함. [[https://trac.nginx.org/nginx/ticket/358|HEAD request with Accept-Encoding: gzip returns a response body]] - gzip 을 꺼버려서 해결. 혹은 nginx을 1.4 이상으로 업그레이드 할 것.+  * gradle이나 maven이 Nexus에 요청을 보낼때 GET이 아닌 **HEAD** 요청을 보내 파일의 존재 여부를 체크하는 경우가 있는데, 이때 nginx 1.2 버전에서 HEAD + gzip 설정이 돼 있을 경우 HEAD에 body 까지 담아 보내는 버그가 있어서 파일 다운로드 체크가 올바로 안되는 현상이 발생함. [[nginx:gzip|nginx gzip]] - gzip 을 꺼버려서 해결. 혹은 nginx을 1.4 이상으로 업그레이드 할 것.
   * Maven Central 리포지토리 설정에서 ''HTTP Request Settings'' 조절안하면 존재하지 않는 파일에 대한 요청을 무한히 기다리는 현상이 발견됨.   * Maven Central 리포지토리 설정에서 ''HTTP Request Settings'' 조절안하면 존재하지 않는 파일에 대한 요청을 무한히 기다리는 현상이 발견됨.
     * ''Request Timeout'' : 3 초로 조정.     * ''Request Timeout'' : 3 초로 조정.
줄 46: 줄 46:
 </code> </code>
 아때 Nexus 리포지토리에서 해당 아티팩트를 선택하고 **Rebuild Metadata**를 했더니 정상으로 변경되었다. 아때 Nexus 리포지토리에서 해당 아티팩트를 선택하고 **Rebuild Metadata**를 했더니 정상으로 변경되었다.
 +
 +===== Nexus v2 Rest API =====
 +  * [[http://jagadesh4java.blogspot.com/2016/09/nexus-rest-api.html|My Technical Works: Nexus Rest API]]
 +  * [[network:httpie|HTTPie]] 기반 예제. 인증 옵션은 상황에 따라 다름
 +  * [[https://gist.github.com/cedricwalter/e7739aab3d370ef83f1a13b8322e50be|Sonatype NEXUS 2 has a rest API :-) but NEXUS 3 has none/not ready, the following simulate curl/wget call]]
 +  * **LATEST** 버전 체크 API 가 인덱스 갱신이 느린지 정상 작동하지 않음.
 +    * 차라리 https://stackoverflow.com/a/40378096/1051402 이 방식이 작동함
 +<code sh>
 +# maven-metadata.xml URL을 group/artifact 에 따라 달라짐
 +wget -O - -o /dev/null https://repo1.maven.org/maven2/org/brutusin/wava/maven-metadata.xml | grep -Po '(?<=<version>)([0-9\.]+(-SNAPSHOT)?)' | sort --version-sort -r| head -n 1
 +# 혹은 curl 로
 +curl -s https://repo1.maven.org/maven2/org/brutusin/wava/maven-metadata.xml | grep -Po '(?<=<version>)([0-9\.]+(-SNAPSHOT)?)' | sort --version-sort -r| head -n 1
 +
 +last_version=$(wget -O - -o /dev/null http://nexus.myrepo/content/repositories/releases/myjar/maven-metadata.xml | grep -Po '(?<=<version>)([0-9\.]+(-SNAPSHOT)?)' |
 +sort --version-sort -r| head -n 1)
 +
 +# snapshot 의 최신 빌드를 확인하려면 - last_version 을 안다고 했을 때
 +curl -s "https://repo1.maven.org/maven2/org/brutusin/wava/${last_version}-SNAPSHOT/maven-metadata.xml" | grep -Po '(?<=<value>)([0-9\.\-]+)' | sort --version-sort -r | head -n 1
 +
 +</code>
 +
 +<code sh>
 +# 서버 상태
 +http -a admin:admin123 -v "http://[서버]/service/local/status"
 +
 +# 최신버전. r=리포지토리ID, g=그룹명, a=아티팩트ID, e=jar|war 등. 잘 작동안함.
 +http -a admin:admin123 "http://[서버]/service/local/artifact/maven/content?r=repoId&g=groupName&a=art&e=jar&v=LATEST"
 +
 +# 최신버전 curl 잘 작동안함
 +curl -u "admin:admin123 http://[서버]/service/local/artifact/maven/content?r=repoId&g=groupName&a=art&e=jar&v=LATEST" -o art.jar
 +
 +# 특정 버전 명시 curl : 특정버전 명시할 때는 잘 작동함.
 +## r=snapshots, v=1.0.1-SNAPSHOT 형태로 스냅샷을 지정하면 스냅샷도 잘 받아짐.
 +curl -u "admin:admin123 http://[서버]/service/local/artifact/maven/content?r=repoId&g=groupName&a=art&e=jar&v=VERSION" -o art.jar
 +</code>
  
nexus.1442285716.txt.gz · 마지막으로 수정됨: 2015/09/15 11:25 저자 kwon37xi