Jenkins로 빌드 후 배포 

Jenkins로 서버 내부에서 빌드를 완료하게 되면 그에 대한 산출물이 남습니다.

저 같은 경우는 웹 프로젝트가 남게 되는데요.  *. jar 파일 또는 webApplication/ 형태의 폴더가 남게 됩니다.

하지만 빌드 서버에서는 의미가 없게 되는데  WAS(JEUS) 로 디플로이 된 서버는 다른 곳에 있기 때문입니다.

 

그래서 Jenkins로 빌드를 하고 남은 산출물을 빌드 서버로 배포를 해주어야 합니다. 해당 작업도

우리 Jenkins가 도와주는데요 SSH plugin 을 이용하면 너무 쉽게 해당 작업을 하실수 있습니다.

 

Publish Over ssh

해당 plugin 을 설치 하여야 합니다.

 

우선 Jenkins 홈에서 Jenkins 관리를 들어갑니다.

 

Jenkins 홈 - Jenkins 관리 

 

Jenkins 관리의 홈 - 플러그인 관리 로 이동 

 

 

Publish Over SSH 플러그인

 

플러그인을 설치 완료 하였다면 Jenkins 관리 -> 시스템 설정 -> Publish Over SSH로 이동합니다.

 

정상적으로 플러그인이 설치가 되었다면 시스템 설정에서 over SSH 로 검색 시 아래와 같은 상태를 확인하실 수 있습니다.

 

시스템 설정(System Configuration) 에서 Publish over SSH plugin 확인

이 부분에서는 어디로 배포할지 해당 서버에 대한 정보를 적어 놓는 데요 

만약에 A서버와 B서버가 있다면 2개를 추가해야 됩니다.

 

SSH 키 이용시 

  • Passphrase : SSH 연결 시 암호를 사용하고 있다면 암호를 설정합니다.
  • Path to Key : SSH 접속시 ssh key를 관련하여서 접속할 수도 있는데 요 이 SSH 키 를 이용하여 로그인 시 개인키 파일의 경로를 설정합니다.
  • Key : Path to key 와 같은데 키가 text file로 존재하게 될 경우 이 부분에 입력합니다.
  • Disable exec : 체크아웃 SSH 명령을 사용하지 않습니다.

SSH 키 이용하지 않을 경우 

  • Name : SSH 연결 시  (젠킨스 빌드 시에 어떤 서버인지 확인하기 위한 ) 이름을 설정합니다. 

Name 설정 화면 

위와 같이 설정하였다면 젠킨스 빌드 시에는 아래와 같이 메뉴에 이름이 표시됩니다. 

 

Jenkins Build 에서 설정 

  • HostName : SSH로 연결하는 실제 서버의 IP 나 도메인 이름을 지정합니다. (실제 보내야 할 서버 )
  • UserName : SSH 로 연결하는 서버의 사용자 계정 입력 ( IP와 포트나 도메인으로 접속해도 계정명을 아야 하기 때문)
  • Remote Directory : 원격 서버에 로그인한 후에 초기에 어디로 이동할지 선택 (* 필수로 있어야 하며 이 부분은 배포될 경로입니다.) * 저 같은 경우는 /home/계정명/publish로 지정하였습니다. 

Send build artifacts over SSH

이렇게 설정한 후에 Jenkins의 Item에서 빌드를 작업 중  빌드 후 조치  

 

탭에서 send build artifacts over SSH를 선택합니다.

Send build artifacts over SSH 설정

 

  • SSH Server : Jenkins System Configuration(시스템 설정)에서 설정하였던 서버(배포할 서버)의 Name을 선택합니다.

 

  • Source files : 위에 설정한 SSH Server 에보낼 파일을 설정합니다. 저는 gsAuth.war로 직접 지정하였지만 ant 패턴으로 **/*. jar 와같이 jar파일을 전부 보내는 등의 방법이 가능합니다. (여러 개의 파일을 배포할 경우)

 

  • Remove prefix : 배포되는 서버에 생성해서는 안 되는 파일 경로의 prefix 부분으로 현재 작업하고 있는 위치가 test/folder/gsAuth.war인데 단순히 gsAuth 로만 배포가 하고 싶을 경우 test/folder를 입력하게 되면 앞에 부분이 제거된다.

 

  • Remote directory :  파일이 업로드되는 경로인데 Jenkins System Configuration에서 설정한 Remote Directory 가 기준이 된다. /home/계정명/publish 였기 때문에 이 부분에 libs를 적게 되면 /home/계정명/publish/libs 가 최종경로가 된다.

 

  • Exec command : 현재 서버에서 실행될 커맨드 라인을 실행합니다. 위의 사진에서는 echo로 테스트하였지만 실제 사용 시에는 touch 나 >>> 을 이용하여서 배포된 날짜 및 정보를 서버에 적어 놓습니다. 

 

이렇게 세팅이 완료되면 간단하게 원하는 파일을 빌드 후 배포를 할 수 있을 것으로 보입니다.

 

추가적으로 확인해야 할 부분이 있다면

 

Test Configuration으로 테스트 시 위와 같이 나오게 될 수가 있습니다. SSH 키를 사용하지 않고 확인하기 때문인데요

고급 탭을 눌러 줍니다.

Use password authentifaction, or use a differecnt key를 체크한 후에 해당 서버의 계정에 대한 비밀번호를 입력 후

Test Configuration 하게 되면

 

Success 화면

해당 화면을 확인하실 수 있습니다.

 

앞으로 하나씩 더 추가해서 더 좋은 CI CD 환경을 구성할 수 있도록 해봅시다.

+ Recent posts