티스토리 뷰

Jenkins를 통해 배포환경을 구성하고 실제 운영을 할 때 빌드 및 배포를 한 버전의 application이 문제가 생겼을 경우 급하게 이전 버전으로 복구를 하고 싶은 경우가 있다. 예전에 nexus를 통해서 이와 비슷한 방식으로 복구를 할수 있었는데 nexus를 이용하지 않는 환경에서 방법에 대해 알아보도록 하겠다. 예전에 소개한 nexus를 사용하는 방법은 다음과 같다.

 

 

Nexus에 deploy하고 Jenkins에서 deploy 된 목록 가지고 오기

이번에 소개할 내용은 소스를 빌드하여 nexus에 배포를 하고 그 배포된 파일 목록을 Jenkins에서 가져와 원하는 파일로 was에 배포를 하는 것이다. 이게 뭐하는 일인가 싶을수도 있지만 was에 배포한

oingdaddy.tistory.com


모든 작업은 Jenkins에서 이루어진다. 

일단은 application 백업 파일 생성을 해야 한다. 백업 파일은 application build 하는 시점에 생성을 한다. 

 

 

maven build 를 하고 build 한 결과물은 pom.xml 에 설정(필자는 target 디렉토리 하위)한대로 빌드 결과물이 생성된다. 

 

 

빌드를 하고 나면 결과물에 대해 즉시 backupRepo(임의로 만듬) 라는 곳에 날짜를 붙여서 백업본을 생성을 해 놓는다. 

 

cp /소스배포경로/target/sample-backup-1.0.0.war /백업본놓을곳/backupRepo/sample-backup-1.0.0_`date +%Y%m%d%H%M`.war;

 

이런식으로 간단하게 cp 명령어를 이용해 원본 war를 날짜를 붙여서 백업본을 생성한다. 


백업파일을 생성했으면 필요할때 그것을 가지고 올수 있어야 한다. 

 

 

가지고 오는것은 nexus에 있는것을 가져오는것과 동일하게 매개변수 중 Extensible Choice를 선택한다. 그리고 Choice Parameter에서는 File Choice Parameter 를 선택을 한다. 

 

  • Base Directory : 파일을 가지고 올 디렉토리
  • File Name Pattern : 그 디렉토리에서 가지고 올 파일 이름의 패턴
  • Exclude Pattern : 꼭 제외를 할 파일 패턴
  • Type : File or Directory or 둘다
  • Reverse Order : 셀렉트박스를 열었을때 정렬순서. 체크하면 최신것이 맨 위로 온다.
  • Empty Choice : 셀렉트박스의 기본값
  • List Files Now : 파일 리스트를 가지고 오는 테스트를 수행한다.

어렵지 않다. 경로만 똑바로 설정한다면 쉽게 가지고 올수 있다. 젠킨스가 설치된 서버의 파일만 가져올수 있고 원격의 파일은 가지고 올수 없다. (있다면 방법좀..)


 

매개변수를 통해 가지고 올 파일을 결정했다면 그 파일로 배포를 해야 한다. ${Backup_File} 을 통해 위에서 설정한 백업파일을 가지고 와서 war 파일을 다시 날짜를 뺀 배포를 위한 파일로 변경하고 배포할 곳으로 sftp를 통해 전송을 하는 부분이다. 이제 다 되었다.


Jenkins Job을 위와 같이 생성하고 Build with Parameters 를 눌러보면 다음과 같이 나오는걸 확인할 수 있다. 

 

 

배포를 할때 무조건 방금 빌드한걸 배포하는것이 아닌 이전에 배포했던 목록도 다 가지고 있을수 있게 되었다. 위급한 상황이 발생하면 전에 잘 되었던 파일로 긴급 복구가 가능해졌다. 

 

백업파일이 많아지면 용량을 엄청나게 잡아먹는데 이럴 경우는 주기적으로 지워주는 Jenkins job을 만들어둔다. 

 

끝!

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/04   »
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