톰캣 설정 시 tomcat-user.xml 파일 수정
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="admin" password="admin" roles="tomcat,manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>
username과 password는 톰캣 계정이다.
설정하고 나면 localhost:8080/manager로 톰캣 매니저 접속 시에 해당 계정 정보를 입력해야 들어갈 수 있다.
Deploy war/ear to a container - Credentials 부분이 톰캣 계정을 설정하는 곳이다.
젠킨스를 구성해봤다면 '소스 코드 관리' 부분에 SVN or GIT 계정을 추가하고 내려오는데 해당 계정이 톰캣 계정 설정할 때 Credentials 리스트박스에서도 보이니 혼동하지않고 새로 등록해주면 된다.
형상관리 툴 계정(admin/admin)과 톰캣 계정(admin/admin)이 같은 정보라면 똑같이 설정해도된다.
젠킨스 에러
ERROR: Build step failed with exception
org.codehaus.cargo.container.ContainerException: Failed to redeploy
젠킨스 빌드 전에 톰캣을 startup해야하는데 젠킨스 콘솔에 위와 같은 문구가 뜬다면 톰캣 서버가 안 올라간 것.
커맨드 창에서 톰캣 경로의 bin으로 들어가 startup을 해주자.
톰캣 구동(startup) 시 주의사항
포트 변경
젠킨스와 톰캣이 같은 8080 포트 환경에서 돌린다면 충돌이 나므로 톰캣 설정 파일인 server.xml의 포트를 다른 번호로 수정해서 정상적으로 구동이 되게 하면 된다.
젠킨스 빌드 순서
젠킨스로 빌드를 시작할 경우 젠킨스는 설치 경로인 C:\Program Files (x86)\Jenkins 경로에 빌드한다.
젠킨스에서 Deploy to container 플러그인을 깔고 구성에서 빌드 후 조치에 WAR/EAR files에 **/*.war를 적으면 톰캣 webapps 폴더에 ROOT.war가 배포되면서 서버가 실행되게 된다.
만약 처음 startup을 할 때 톰캣 경로의 webapps 폴더안에 war 파일이 있다면 파일명, 갯수와 상관없이 모든 war파일을 deployWar 한다.
이 war파일은 젠킨스가 빌드 후 배포하는 war파일과는 무관하다.
때문에 war파일을 지워서 톰캣 매니저만 돌아가게 하는게 속도 측면에선 좋다.
war 파일을 지웠더라도 압축 해제 된 폴더가 있으면 deployDirectory를 실행하기 때문에 폴더도 같이 없애주는게 좋다.
있어도 상관은 없지만 결과적으로 젠킨스로 빌드 하고 배포된 ROOT.war를 실행하기 때문에 굳이 startup시에 war를 실행할 이유는 없다.
startup 실행 시 lock 현상
- 톰캣 콘솔 창에서 중간에 에러로그도 내뱉지 않고 가만히 lock이 걸리는 현상
- 서버가 잘 올라갔는데 접속이 안되고 웹에서 뺑뺑이만 돌고 lock이 걸리는 현상
- 젠킨스 콘솔에서 Redeploying Undeploying 상태로 더 이상의 진행이 없이 lock이 걸리는 현상(확인 해본 바 Undeploying에서 더 이상 진행되지 않는 lock현상은 tomcat server를 shutdown하지 않고 start된 상태로 젠킨스로 재배포 시에 이런 문제가 생기는 것 같다.)
아래의 방법 중 하나를 이용해보자.
- 톰캣을 다시 startup한다.
- 톰캣 webapps 폴더에 war 파일을 지우거나 혹은 war 폴더까지 다 지우고 다시 startup한다.
- 톰캣 콘솔에서 Ctrl+C로 lock을 풀어준다.(보통 이거면 다 해결 되긴 한다.)
- 톰캣 경로 bin/catalina.sh를 편집해서
JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS"
부분을 아래와 같이 변경한다.
JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS -Djava.security.egd=file:/dev/./urandom"
'🛠️ CI & CD' 카테고리의 다른 글
스프링부트 + Github + Jenkins + Docker / CI & CD 연습하기 (2) (0) | 2022.10.03 |
---|---|
스프링부트 + Github + Jenkins / CI & CD 연습하기 (1) (5) | 2022.10.03 |
Jenkins Blue Ocean 소개 및 주관적인 단점 3가지 (1) | 2022.09.26 |
Jenkins 에서 SSH 접속 시 sudo 권한 사용 (0) | 2022.09.26 |
도커에 젠킨스를 설치하는 것에 대한 장점과 단점 (0) | 2022.09.22 |