2012-09-26 3 views
4

빌드 서버 (Jenkins)에서 Java EE 응용 프로그램을 명령 줄을 통해 원격 Glassfish 서버에 자동으로 배포하려고합니다. 현재로서는 asadmin을 사용하고 있지만 제대로 작동하지만이 옵션을 사용하려면 Glassfish를 빌드 서버에도 설치해야합니다. 필자가 필요로하지 않으므로 피하고 싶습니다. 빌드 서버는 실제로 빌드와 배포 만 실행하므로 서버를 가능한 한 "깨끗한"상태로 유지하려고합니다.cli를 통해 원격 Glassfish 인스턴스에 배포

asadmin 도구 만 설치하는 다운로드를 찾을 수 없으며 필자가 모르는 특정 * .jars에 대한 종속성이 있으므로 필요한 파일 만 수동으로 복사하려고 시도하지 못했습니다. 전체 glassfish 설치 폴더를 빌드 서버에 복사하지 않으면 항상 실패합니다.

내 질문은 : 전체 Glassfish 서버를 설치하지 않고 asadmin 도구 만 설치하는 방법을 아는 사람이 있습니까? 다른 방법으로는 보안 통신을 사용하여 원격 Glassfish 인스턴스에 배포 할 수있는 다른 명령 줄 도구를 사용해도됩니다.

답변

2

조금 더 연구를 한 후에 GlassFish 전체 설치없이 asadmin을 설치하려고했지만 Glassfish의 REST 관리 인터페이스를 대신 사용했습니다. 당신은 당신이 할 필요가 있지만 단지의 경우 누군가에 다른 여기이 필요합니다 알고 일단

curl.exe^
    --user glassfish_username:glassfish_password^
    --insecure^
    -H "Accept: application/json"^
    -H "X-Requested-By: dummy"^
    -X POST^
    -F [email protected]^
    -F contextroot=yourcontextroot^
    -F force=true^
    https://yourservername:4848/management/domain/applications/application/ 

나머지 API는 매우 정직 :

나는 지금은 간단한 배치 파일에서 CURL을 사용하여 작동했다 중요한 점 몇 :

  • --insecure이 (CURL에 의해)가 필요합니다 자체 서명과 신뢰할 수없는 SSL 인증서를 헤더는 "X-요청-으로"를 "승인"및 속성
  • 를 허용하도록 설정해야합니다 , 그렇지 않으면 글래스 피쉬가 proce를하지 않습니다. 요청을 보내고 단순히 빈 문서를 ansower로 반환합니다. 이유는 모르지만이 매개 변수를 설정하면 효과가있었습니다. 파일
  • URL은 즉, 도메인 이름 또는으로 "도메인" 를 대체하지 않습니다 위 냈다 같이 정확하게 할 필요가 POST에 "ID"매개 변수로 전달되는 전쟁의
  • 내용 응용 프로그램 이름으로 "응용 프로그램". 이것은 실제 REST 인터페이스 엔드 포인트입니다. 도메인/응용 프로그램 이름을 지정할 필요가 없습니다.
+0

실제로 배포하는 파일 세트는 무엇입니까? 그냥 전쟁 파일을 서버에 놓고 거래를 할 수는 없습니까? 그것에 더 많은 것이 있습니까? – amphibient

+0

내 경우에는 빌드 서버가 응용 프로그램 서버의 공유 드라이브에 액세스 할 수 없습니다. 자동 배포와 함께 간단한 파일 삭제를 허용하려면 각 자동 배포 폴더를 공유해야하지만 여기서는 옵션이 아닙니다. CURL을 사용하면 HTTPS를 통해이 작업을 수행 할 수 있습니다. – fdd