Jenkins Publish over SSH 원격서버 설정 및 배포 방법

Publish over SSH는 Jenkins에서 빌드를 마치고, 특정 서버로 배포를 할 때 사용하는 플러그인입니다. 플러그인 사용을 위해서 필요한 Jenkins SSH Key 설정 방법을 알아보도록 하겠습니다.

ssh-keygen으로 개인키/공개키 쌍 생성하기

SSH 접속을 위해서는 User ID와 비밀번호 또는 개인키/공개키가 필요합니다. 개인키/공개키 쌍이 준비되어 있지 않다면, 그림 1과 같이 ssh-keygen을 이용해서 키 쌍을 준비해야 합니다.

Publish over SSH 이용을 위해 ssh-keygen 이용하여 개인키/공개키 쌍 만들기
그림 1. ssh-keygen 이용하여 개인키/공개키 쌍 만들기

Publish over SSH 플러그인 설정

Publish over SSH 플러그인 설치

Jenkins 관리 > 플러그인 관리 > Available Plugins에서 Publish over SSH 플러그인 검색하여 설치하면 됩니다.

Jenkins Publish over SSH 플러그인 설치하기
그림 2. Jenkins Publish over SSH 플러그인 설치하기

Jenkins SSH Server 추가

플러그인 설치가 잘 되었다면, 이제 Jenkins 관리 > 시스템 설정 > SSH Servers로 이동해서 SSH Server를 추가해 줘야 합니다.

“추가” 버튼을 클릭한 후, 아래의 내용을 기입해 줍니다.

Name에는 식별할 수 있는 이름을 적어줍니다.
Hostname에 접속할 IP나 도메인을 적어줍니다.
Username에는 접속할 사용자 이름을 적어줍니다.
Remote Directory에는 접속하고자 하는 디렉토리를 입력합니다.

Publish over SSH 키 설정: SSH Server 기본 정보 입력 예시
그림 3. SSH Server 기본 정보 입력 예시

우측 하단에 있는 “고급” 버튼을 누르면 항목들이 펼쳐집니다.

고급 버튼 위치
그림 4. 고급 버튼 위치

고급 하위 메뉴에서 개인키 설정하기

“Use password authentication, or use a different key” 여기에 체크를 해 준 후,
Key에 SSH에 사용할 개인키를 붙여넣어주면 Jenkins 상의 개인키 설정이 끝납니다. 혹은 Path to key에 개인키의 파일 경로를 입력해 주셔도 됩니다.

개인키 입력 화면
그림 5. 개인키 입력 화면

배포 대상인 서버로 접속한 후, 그림 5와 같이 사용하려는 공개키를 ssh-rsa부터 끝까지 모두 복사해서 ~/.ssh/authorized_keys 파일에 공개키를 한 줄 추가해 줍니다. authorized_keys 파일이 없다면 새로 작성하면 됩니다.

공개키 내용 열람
그림 6. 공개키 내용 열람

개인키 연동 테스트

Jenkins의 SSH Server 항목 우측 하단에 Test Configuration 버튼을 누릅니다.

Test Configuration 버튼 위치
그림 7. Test Configuration 버튼 위치

왼쪽에 Success라고 뜨는지 확인했다면 SSH 접속을 위한 개인키/공개키 설정이 끝납니다.

성공 메시지
그림 8. 성공 메시지

개인키 연동 실패

만약 성공하지 못한다면, Success 라는 내용 대신에 오류 메시지로 문제점을 알려줄 것입니다. 해당 오류에 대해 구글링 후 문제를 해결하면 됩니다.

Jenkins Publish over SSH 인증시 BapPublisherException 발생하는 경우

최근의 리눅스 서버에 Publish over SSH를 이용하여 파일을 업로드 하려는 경우, 제대로 작동하지 않는 경우가 있습니다. SSH 키를 제대로 생성했는데도 인증이 제대로 되지 않는 경우에 대한 원인을 정리해 두었습니다. 필요하신 분들께 도움이 되길 바랍니다.

SSH 이용하여 빌드된 파일 업로드 하기

이제 Publish over SSH를 이용하여 파일을 업로드에 필요한 서버 연동 작업이 다 됐으니, 빌드한 파일들을 서버로 올려야겠죠. Jenkins에서 해당 프로젝트로 이동하신 후, 화면 최하단으로 이동하면 Post-build Actions(빌드 후 조치)에 “Add post-build action(빌드 후 조치 추가)”가 있습니다. 여기에서 “Send build artifacts over SSH”를 선택해 줍니다.

Add post-build Action(빌드 후 조치 추가)에서 Send build artifacts over SSH 추가하기
그림 9. Add post-build Action(빌드 후 조치 추가)에서 Send build artifacts over SSH 추가하기

그러면 아래와 같은 항목이 새로 생깁니다. 우선 SSH Server Name에 위에서 설정했던 서버를 선택해 주시면 됩니다. 그리고 Transfers의 Transfer Set: Source files에 만약 빌드된 파일들이 build 디렉토리 하위에 있다면 build/**/*라고 해 주시면 build 디렉토리 하위에 있는 디렉토리와 파일을 모두 업로드합니다.

SSH로 빌드된 파일 업로드하기: : 서버와 올릴 파일 설정
그림 10. SSH로 빌드된 파일 업로드하기: 서버와 올릴 파일 설정

Publish over SSH를 활용해서 서버 연동을 하고 파일을 업로드하는 것까지 알아보았습니다. 빌드한 파일 자동으로 서버에 업로드하고 싶으셨던 분들께 도움이 되셨길 바랍니다.

참고자료

Jenkins Publish over SSH 플러그인 페이지에 관련 내용이 있습니다. 필요하신 분들은 참고하시면 되겠습니다.

같이 읽으면 좋은 글

Leave a Comment