티스토리 뷰

 

지금은 거의 사용되지 않는(아직도 많이 사용할수도 있겠지만..) Jenkins + Ant + SVN + Windows서버 조합으로 자동배포하는 포스팅을 하려고 한다. Hudson이 껴있었으면 딱 again 2010년쯤 유행했던 기술셋인거 같다. 이 글을 쓰는 이유는 이제 거의 사용되지 않고 있어 기억에서 흐려지고 있어서 나중에 혹시라도 다시 써먹을수도 있기에 기록을 남겨둔다. 오래된 기술셋이지만 요즘에 많이 쓰이는 Maven + Git + Linux 서버를 사용한다 하더라도 메카니즘은 동일하니 이 과정을 알아두면 분명 도움이 된다. 


1. Ant Build Script 작성

가장 먼저 해야 할일은 Ant Build Script를 짜는 것이다. 아래 링크를 참조해서 작성을 해보자. 

 

Ant Build (build.xml) 기본 사용법 with Jenkins

Ant Build는 이제는 잘 쓰이지 않지만 종종 maven이나 gradle이 아닌 일반적인 Dynamic Web Project로 프로젝트를 구성하는 경우 사용된다. 일을 하며 많은 시간을 이 Ant Build를 사용했고 그중 가장 일반적인

oingdaddy.tistory.com

build script는 src와 lib으로 빌드하여 classes 파일을 만들어내는것이 목적이다. 

 

2. SVN으로부터 소스 가져오기 (pull-source job)

Jenkins에서 가장 먼저 해야 할 일은 자동배포를 할 어플리케이션의 소스를 SVN으로부터 가지고 와야 한다. 

 

Jenkins SVN Source pull

위와 같이 사용자 빌드 경로 사용이라는 것을 사용하면 SVN의 소스를 사용자 빌드 경로 사용에 지정해 놓은 위치로 가지고 온다. 즉 ~workspace\build 라는 디렉토리에 SVN으로부터 가지고 온 소스를 넣겠다는것이다. 

pull-source라고 만들어 놓은 Jenkins job을 돌려서 실제로 ~workspace\build 안에 소스가 잘 들어가는지 확인한다. 

 

 

3. Source 빌드 (build-source job)

~workspace\build 안에 있는 소스를 작성한 Ant Build Script로 빌드하는 과정이다. 

 

사용자 빌드 경로 사용

마찬가지로 ~workspace\build 를 기본 경로로 잡는다. 작성한 Ant Build Scirpt(build.xml) 이 위치한 경로까지 기본 경로로 잡아줘야 한다. 

 

Jenkins Ant build 연동

빌드를 하기 전에 빌드의 결과물이 위치할 경로에 있는 내용들을 지우고 빌드를 한다. 기존의 경로에 계속 덮어씌우면 오류가 날 수 있어서 이렇게 하는것이 안전하다. 단 del 명령은 정말정말 신중하게 써야한다. 

 

 

4. 빌드한 소스 서버에 배포 (deploy-source job)

다음 단계는 빌드한 소스를 서버에 배포를 하는것이다. 

 

사용자 빌드 경로 사용

build script에서 빌드한 결과물은 ~workspace\deploy 에 떨어지게 해놨다. 그래서 deploy-source job에서는 이곳이 기본 경로이다. 이곳에 있는 소스를 배포할곳으로 복사해주면 된다. 

 

Execute Windows batch command

배포하려는 곳이 Jenkins가 설치된 곳과 동일한 경우에는 위와 같이 xcopy를 이용해서 배포를 하였다. 나중에 안 사실이지만 xcopy 보다는 이런 경우에는 robocopy의 미러링을 사용하면 훨씬 좋다. 

배포를 다 하고 나서는 각종 설정파일을 현재 phase에 맞게 변경해주는 작업까지 진행하였다. 

배포하려는곳이 다른 서버라면 ssh나 ftp를 이용해서 배포하도록 한다. 이글을 참조하도록 하자. 

 

 

5. 서버 재시작 

배포가 모두 끝났으면 서버를 재시작을 해주는 과정이 필요하다. 서버에서 직접 재시작을 해도 되지만 이렇게 배포과정에 재시작까지 자동으로 해주면서 자동배포를 마무리를 짓는다. WAS가 tomcat인 경우는 아래와 같이 재시작을 하면 된다. 

 

Jenkins로 Windows Server tomcat start 하기

Windows 서버로 진행을 하는 프로젝트를 몇번 진행을 해봤지만 우리 생활에 밀접하게 있는 OS라 친숙하면서도 SSH, FTP, 방화벽 등등 리눅스보다 다루기 어려운 부분들이 많이 있었다. 이 Windows 서버

oingdaddy.tistory.com

 

한 10년간은 참 유용하게 잘 사용했던 기술셋들이다. 영원한건 없는것 같다. 

 

끝!

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31