CI/Jenkins

Jenkins와 SSH를 이용한 배포 연동

후뤼한잉여 2015. 12. 8. 11:40

Jenkins와 SSH를 이용한 배포 연동

1. 개요

Jenkins를 통해 빌드를 해보았으니 이번엔 배포에 대한 부분을 알아보고자 설정한 내용을 정리한 문서입니다.

2. Jenkins 설정

  1. Jenkins 접속
  2. 왼쪽 메뉴 중 [Jenkins 관리] 메뉴 클릭
  3. [시스템 설정] 메뉴 클릭
  4. 중간의 ‘Publish over SSH’부분에서 ‘SSH Servers’에 [추가]버튼 클릭
  5. SSH로 접속할 대상 서버의 정보를 입력후 저장한다.

3. Jenkins Job 설정

  1. Job(프로젝트) 선택
  2. 왼쪽 메뉴 중 [구성] 메뉴 클릭
  3. 제일 하단 부분에 ‘빌드 후 조치’ 부분에 [빌드 후 조치 추가] 메뉴 클릭 후 [Send build artifacts over SSH]를 클릭
    • 만약 이 메뉴가 안보인다면 [Publish Over SSH] 플러그인을 설치
  4. SSH로 작업할 내역 입력

    • SSH Server Name : Jenkins 시스템 설정에서 등록한 SSH 서버 중 배포할 서버 선택
    • Souce files : 어떤 파일을 배포할 것인지 설정. **/*.jar는 모든 폴더의 jar로 끝나는 파일을 의미한다.

    • Remove prefix : 제거할 접두사를 의미하는데, 기본적으로 작업공간/빌드된 파일들로 되어있다. 예를들어 작업공간/A/B/C/test.jar가 있을때 C/test.jar로 배포하고 싶다면 여기에 A/B를 입력해준다.

    • Remote directory : Jenkins 시스템 설정에서 SSH 설정시 지정한 홈 디렉토리 뒤에 추가로 입력하는 디렉토리인데, 배포할 파일이 저장될 디렉토리를 지정한다. 이 때 없으면 새로 생성해주지 않기 때문에 미리 만들어 져 있어야 한다.
    • Exec command : 배포 후 실행 할 명령어를 입력하는 곳으로 리눅스 설정에 따라 특정 명령어를 사용하지 못하므로 설정을 잘 해주거나, 특정 명령어의 절대경로를 입력해주는 방식으로 해결을 해야 한다.

이제부터는 Gitlab을 통해 GitServer로 push를 하면 Webhook 설정에 의해 Jenkins CI에서 Gradle로 빌드를 하고, 지정한 서버로 SSH를 통해 배포가 가능해졌다.