Leeyebin의 블로그

[Jenkins]사내 전산시스템 젠킨스 도입기(feat ant/넥사크로)[1/3] 본문

프로그래밍/DevOps

[Jenkins]사내 전산시스템 젠킨스 도입기(feat ant/넥사크로)[1/3]

안되면될때까지 2020. 3. 24. 23:05

부족한 부분이 많아 작성에 앞서 조언/비판 환영합니다.

결과적으로 말씀드리자면 pipeline으로 사용하지않고 기초적인 방식으로 구축을 하였습니다.

처음에는 공식적으로 구축하지않고, 개인적으로 구축했기때문에 회사 컴퓨터(윈도우)에 jenkins(window버전)을 설치하였습니다.

 

이 글은 내가 Jenkins를 사내 전산시스템에 구축하면서 각종 삽질을 하였던것을

직장에서 매 프로젝트에서 공통팀에서 구축해놓은 것을 사용만 해봤었는데 내가 직접 구축해 볼 기회가 없었던 CI환경..

환경이 사람을 만든다고 했던가 가내수공업으로 개발서버와 운영서버를 반영하는 것을 도저히 견딜 수가 없었다.

 

기존의 배포방식(가내수공업)

  1. 본인의 PC혹은 SVN서버(윈도서버)에 원격 접속 후 이클립스로 소스 최신화(java파일 및 넥사크로파일 최신화)
  2. 넥사크로 프로그램 실행 후 Deploy-Packing(넥사크로 전용확장자를 js파일로 파싱하는작업)
  3. 2번에서 파싱한 js파일들을 tar파일로 만들어줄 web서버용 xml파일을 Ant build
  4. 컴파일한 class파일들을 war파일로 만들어줄 was서버용 xml파일을 Ant build
  5. 1부터 4단계를 같은 구조의 모바일프로젝트를 반복한다.
  6. web서버 2개 / mobile용 web서버 2개 / was서버 2개(mobile was도 포함) -> filezila를 이용해서 각 위치에 업로드 후 압축풀기 압축푼 war, tar 파일은 뒤에 "_년월일" 붙여서 이름 바꾸기
  7. was 2개 각각 재기동

배포를 위해 사용하는 프로그램도 eclipse, filezila, 넥사크로 3개나 된다.

반복된 과정이 많으며 한번 이 과정을 거치는데 익숙하지 않은 사람은 30분이 걸리기도하며, 익숙하더라도 빌드하면서 다른 업무를 할 수도 없었다.(자기가 어디까지 했는지 까먹음;;) 그래서 젠킨스로 만들어야겠다는 생각을 하게 되었다.

 

환경 

  • Spring Framework
  • SVN으로 형상관리
  • ANT 사용
  • 넥사크로17 사용
  • web서버, was서버(webtob / JEUS)

흔히들 인터넷에서 나온 정보에서는 maven 또는 gradle환경에 스프링 프레임워크였는데 젠킨스에 Ant를 사용해야 했고 더군다나 넥사크로까지 처리 해야했다.

 

처리순서를 생각해 보았다.(개발서버 기준)

web서버 배포
  • svn으로 최신화
  • 넥사크로 파일 generate
  • ant build로 tar로 말기
  • ftp로 서버에 파일전송
  • tar 압축해제 및 스크립트(압축 풀고 tar명 변경) 실행
was서버 배포
  • svn으로 최신화(처음에는 같은 Jenkins에서 프로젝트를(이미 web서버 배포할때 최신화) 같이 사용하는 방법을 몰라서 각각 따로 최신화 하였음 추후 하나로 합침
  • ant build로 war말기
  • ftp로 파일 옮기기(ftp전송시 바이너리로 옮겨야함)
  • war 압축 해제 스크립트 실행

 

필요한 정보 수집
(  )넥사크로를 gui를 이용하지 않고 cmd 명령어로만 처리할 수 있는지 여부
(  )ant 지식
(  )젠킨스 지식

넥사크로 명령어로 generate 처리

어찌 보면 가장 걱정이 되었던 부분인데 넥사크로프로그램을 키지 않고 generate처리의 여부 였다. 그래서 넥사크로 배포를 위한 generate를 명령어로 처리하는 것을 찾아보았다. nexacrodeploy17.exe를 사용하면 된다는 실마리를 갖고, 넥사크로 기술지원사이트에 들어가 문의도하고 엔지니어와 통화도 했는데, 엔지니어 분도 바로는 대답을 해주시지 못하고 알아보고 연락을 주겠다고 하셨다.(사람들이 있는지도 모르고 사용도 잘 안하는 기능인거 같다.) 결국 이런저런 삽질 후에 성공하게 되었다.

 

아래는 관련 정보가 있는 투비소프트 사이트와 파일

넥사크로_201805-A05-00003-제네레이트+방법.xlsx
0.01MB

http://docs.tobesoft.com/development_tools_guide_nexacro_17_ko#2d46ed4fd41ce989

 

개발도구 가이드

이 내용이 얼마나 도움이 되셨나요? 피드백이 기록되었습니다. 감사합니다. 전혀 도움이 되지 않음도움이 되지 않음조금 도움이 됨도움이 됨매우 도움이 됨

docs.tobesoft.com

C:\Program Files (x86)\nexacro\17 여기에 nexacrodeploy17.exe 파일이 있다. cmd를 사용하면
cd C:\Program Files (x86)\nexacro\17 
nexacrodeploy17.exe  -P "프로젝트위치에 있는 xprj파일" -O "generate파일을 풀 위치" -B "프로젝트에서 lib파일 위치" -D "deploy된 파일을 풀 위치" -MERGE

이후에 위의 정보들은 이후 젠킨스에 다 녹아 들어간다.

필요한 정보 수집
(O)넥사크로를 gui를 이용하지 않고 cmd 명령어로만 처리할 수 있는지 여부
(  )ant 지식
(  )젠킨스 지식

 

기존에 Antbuild xml파일 분석

기존에 배포를 위해 사용하던 Antbuild xml파일을 Jenkins 배포에 맞게 사용할 수 있도록 변경하기 위해 분석이 필요했다. Ant는 project, property, target, task로 이루어져있으며 자세한 사항들은 구글링을 하면 최소 4년전 자료들이 많지만 도움이 많이된다.(지금은 Ant보다는 maven, gradle 등을 사용한다.)

 

기존에 Antbuild 파일을 Jenkins에 맞게 수정하였다.(참고로 젠킨스용으로 xml파일을 따로 만들었다. 혹시 따로 돌리게 될수도 있기 때문에)

참고로 Ant빌드를 위한 xml파일은 web,was 하나에 모두 담을 수도있고 어떻게 사용하느냐에 따라 형태가 다르니 참고적으로 보도록하자

 

Web용 xml파일

 

Was용 xml파일(너무 길어서 넣고싶지는 않았지만..)

필요한 정보 수집
(O)넥사크로를 gui를 이용하지 않고 cmd 명령어로만 처리할 수 있는지 여부
(O)ant 지식
(  )젠킨스 지식

젠킨스 지식의 경우에는 실제로 설치하면서 파악해 보자고 판단하였다.

 

Comments