Development Tip

Jenkins 자동 배포 Tomcat 7

yourdevel 2020. 12. 15. 19:50
반응형

Jenkins 자동 배포 Tomcat 7


Jenkins와 함께 전쟁 파일을 배포하려고하지만 아무 일도 일어나지 않는 것 같습니다.

프로젝트가 성공적으로 빌드되었으며 Jenkins 배포 플러그인을 사용하고 있습니다. 다음 옵션으로 구성됩니다.

자동 배포 플러그인

게시 단계는 "빌드 결과에 관계없이 실행"으로 설정됩니다.

내 브라우저에서 관리자 페이지에 액세스 할 수 있으므로 자격 증명이 올바른지 확인했습니다.

Jenkins (Maven)가 출력하는 마지막 부분은 다음과 같습니다.

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1:24.506s
[INFO] Finished at: Tue Feb 14 12:10:45 UTC 2012
[INFO] Final Memory: 22M/52M
[INFO] ------------------------------------------------------------------------
channel stopped
Finished: SUCCESS

또한 WAR / EAR 파일을 존재하지 않는 파일로 변경할 수 있으며 오류가 발생하지 않습니다. 내가 여기서 뭘 잘못하고 있니?


나는 같은 문제가 있었고 내 경우에는 WAR 파일의 (상대적) 경로가 올바르지 않았습니다. 분명히 정확하지 않은 경우 (작업 공간 루트에 상대적이어야 함) 배포 플러그인이 자동으로 실패합니다. 제 경우 경로는 다음과 같습니다.

target / whatever.war

이 문제가 해결되면 플러그인이 일반적으로 기본적으로 구성하는 관리자 / html 버전이 아닌 Tomcat Manager의 관리자 / 텍스트 버전에 연결할 것으로 예상한다는 점에서 다른 문제가 발생했습니다. tomcat-users.xml 파일에 다음과 같은 줄이 필요합니다.

<user username = "tomcat"password = "pencil"roles = "manager-script"/>

(이는 이미 설정 한 "manager-gui"역할에 추가됩니다.)

이러한 변경이 이루어지면 빌드 및 배포가 정상적으로 작동했습니다.


내가 사용하는 허드슨 포스트 빌드 작업이 플러그인 실행 은 / 관리 / 텍스트 API에 대한을

언급 된 플러그인은 Jenkins 구성의 사용 가능한 플러그인 목록에서 선택하고 설치할 수 있습니다.

플러그인이 설치되면 "Post build task"를 활성화하고 다음 줄을 추가하기 만하면됩니다.

curl -T - -u user:pass 'http://<tomcat-host>/manager/text/deploy?update=true&path=/<yourpath>' < <path_to_war_file>

예를 들면 :

curl -T - -u manager:123456 'http://localhost:8080/manager/text/deploy?update=true&path=/slim' < /target/dist/slim.war

wget 을 사용할 수도 있지만 위의 명령을 사용 하여 출력을 기록하고 배포에 문제가 있는지 확인합니다.


다음 / manager / text 서비스 와 관련된 문서입니다.


Cargo 플러그인 을 사용 하셨나요? 글쎄, 나는 또한 당신, Jenkins, Maven 및 Tomcat과 동일한 구성을 가졌습니다. 하지만 배포해야 할 때는 단순히 해당 플러그인을 사용하고있었습니다. 실제로는 오래되었지만 Jenkins에서는 명령 프롬프트 줄을 입력 할 수 있었습니까? mvn clean install처럼? 따라서 할 수있는 작업은 Cargo 플러그인에 대한 pom을 구성한 다음 Jenkins에 해당 줄을 추가하는 것입니다.

mvn cargo:deploy -Pintegration

이런 식으로 매일 빌드를 새로 설치하고 Tomcat에 배포 할 수있었습니다. 그 후 나는 휴식 테스트를하고 있었다.


가치를 위해 Jenkins 용 Deploy 플러그인의 최신 버전에는 기본 URL 만 필요한 것 같습니다. 그래서 저에게는 http://blah.com:8080 이었습니다.

그 전에 host-manager / html, host-manager / text를 포함한 다른 옵션을 시도해 보았습니다.


Jenkins가 컴파일 할 pom.xml을 찾는다고 가정합니다. Jenkins 구성에서 목표와 옵션을 설정하여 package . 그런 다음 Jenkins는 war 파일을 찾아 배포하려고 시도합니다. 행운을 빕니다.


나는 target / whatever.war의 솔루션을 사용하려고 시도했지만 작동하지 않아 * / .war 을 사용하려고 시도했는데 작동합니다.

당신은 다른 빌드 작업의 작업 공간에서 원하는 파일을 찾을 위치와 Jenkins가 현재 프로젝트의 작업 공간에서 저장할 위치를 지정해야합니다. 이는 유연한 정규식 (예 : 빌드 작업에서 생성 된 WAR 파일의 경우 * / .war )이거나 훨씬 더 정확할 수 있습니다 (예 : gameoflife-web / target / gameoflife.war).

또는 DEPLOY를 연결하여 Tomcat배포


Jenkins 페이지를 구성한 사용자에 대한 역할 manager-gui, admin-gui 유지

예:-

 <tomcat-users>

   <user username="uname" password="pword" roles="manager-gui,admin-gui"/>

 </tomcat-users>

참조 URL : https://stackoverflow.com/questions/9277223/jenkins-auto-deploy-tomcat-7

반응형