jenkins를 docker engines에 docker 형태로 기동하고 jenkins를 통해 빌드된 war 파일을 tomcat 서버에 배포해보자.
아래 사이트에서 tomcat을 local에 다운받고 압축을 푼다.
https://tomcat.apache.org
여기서는 9.0.75 버전 다운
다운 받은 apache-tomcat-9.0.75 폴더내의 bin 파일을 실행한다.
아래 명령어로 tomcat 실행
Windows) .\bin\startup.bat(실행) <-> .\bin\shutdown.bat (종료)
MacOS) ./bin/startup.sh(실행) <-> ./bin/shutdown.sh (종료)
위와 같이 정상적으로 tomcat 서버가 실행됨을 확인할 수 있다.
웹 브라우저 주소창에 localhost:8080을 입력하면 아래와 같은 화면이 나온다.
현재 jenkins가 8080 포트를 사용하고 있으므로 tomcat 포트 번호를 8088로 바꿔보겠다. 다운받은 apache-tomcat-9.0.75의 conf 폴더의 server.xml 파일의 port 칸의 숫자를 8088로 바꾸면 된다.
그리고 webapps/manager/META-INF와 webapps/host-manager/META-INF 폴더내의 context.xml 파일 내에 127.... 부분을 주석 처리한다. 주석 처리함으로써 tomcat 서버에 어디에서나 다 접속할 수 있게 되었다.
마지막으로 conf의 tomcat-users.xml 파일 내에 아래와 같이 권한을 추가해준다.
jenkins를 통해 git에서 코드를 빌드 후 tomcat 서버에 빌드 파일인 war를 배포해보겠다.
jenkins의 플러그인탭에서 Deploy to container Plugin 설치.
clean : 앞서 빌드된거 지우기
compile : compile
package : 결과물을 war or jar로 패키징
http://[windows/mac IP]:8088
tomcat 서버를 설치할 때 8088로 설정했고 jenkins 자체는 도커 엔진에 도커 형태로 기동했고 8080을 배정받은 상태이다. 만약 jenkins 내부에서 127.0.0.1:8088로 접속하면 jenkins 내부에서 접속을 시도하려 하기 때문에 오류가 난다. 따라서 war 파일을 jenkins를 통해 tomcat 서버에 배포하려면 url에
http://[windows/mac IP]:8088
를 입력해야 한다.
생성한 item을 build한다. 아래와 같이 정상적으로 tomcat 서버에 war 파일이 복사되었음을 확인할 수 있다.
웹 브라우저에서도 확인 가능하다.
Poll SCM을 통해 깃허브에 변동사항이 생길 때마다 자동 업데이트할 수 있다.
Poll SCM과 유사하게 Build periodically가 있다. Poll SCM은 변경 사항이 있을 때만 scheduler를 통해 빌드되지만 Build periodically는 변경 사항이 없어도 scheduler를 통해 주기적으로 업데이트된다.
참고
jenkins 접속 명령어
docker exec -it jenkins-server bash