[Jenkins] 6. Publish Over SSH 플러그인을 이용한 원격서버 배포

2021. 5. 27. 15:31CentOS 7/Jenkins

반응형
  1. 이론
  2. public key 등록
  3. Jenkins 시스템 설정에 서버 설정 추가
  4. 빌드 후 조치 - Send build artifact over SSH 설정 추가
  5. 결과

1. 이론

빌드 성공 후, 원격서버에 빌드된 프로그램을 배포하도록 설정해봅시다.

먼저 Plugin Manager에서 Publish Over SSH 플러그인을 설치한 후 Jenkins를 재시작합니다.

그리고, 시스템 설정에 들어가면 Publish Over SSH 설정이 추가된 것을 확인할 수 있을 것입니다.

배포해야할 서버에 대한 SSH 접속 정보를 설정하면 되는데,
이전 시간에 Credentials 설정을 위해 jenkins 홈디렉토리에 생성했던 OpensSSH private key를 그대로 활용해도 좋습니다.

이전시간에 생성한 /var/lib/jenkins/.ssh/id_rsa, /var/lib/jenkins/.ssh/id_rsa.pub 키를 이용하여 과정을 진행하도록 하겠습니다.

57

원격 서버에 private key를 이용하여 ssh 접속을 하기위해서는 SSH 접속에 이용될 private key와 짝을 이루는 public key를 원격 서버에 등록해줘야 합니다.


2. public key 등록

배포 시 이용할 서버의 .ssh/authorized_keys에 public key(id_rsa.pub)를 등록합니다.

vim ~/.ssh/authorized_keys

만일 배포할 서버의 계정에 ~/.ssh 디렉토리와 ~/.ssh/authorized_keys 파일이 없다면 생성해주는 과정을 선행적으로 해야합니다.

cd ~
mkdir .ssh
touch .ssh/authorized_keys
chmod 700 .ssh
chmod 600 .ssh/authorized_keys

3. Jenkins 시스템 설정에 서버 설정 추가

Jenkins의 시스템 설정id_rsa private key를 이용하여 원격서버에 접속하기 위한 설정을 추가합니다.

Path to key에 Jenkins 홈디렉터리 기준 상대경로로 키를 등록하고
원격 서버 설정정보를 추가해주면 됩니다.

58

저의 경우 원격서버의 호스트 주소가 applebox.xyz이고, 접속할 계정은 coco, 그리고 배포될 디렉토리는 /usr/local/abc 로 설정했습니다.

설정을 마친 후, Test Configuration 버튼을 누른 후 Success 가 나오면 SSH 접속이 정상적으로 끝난 것입니다.


4. 빌드 후 조치 - Send build artifact over SSH 설정 추가

60

빌드 후 조치 탭에서 Send build artifact over SSH를 추가합니다.

61

그러면 위와같은 상자가 추가됩니다.
Build 시 생성된 파일을 SSH Publisher를 이용하여 SFTP 전송하고, 그후, Exec command로 배포해주면 됩니다.

workspace의 target 디렉토리에 생성된 demo.jar 파일을 abc 서버로 SSH 전송하고, 해당 파일을 이용하여 빌드할 것입니다.

원격서버에 파일 전송후 배포하는 과정을 아래와 같이 작성하였습니다.

62

배포에 필요한 Shell Script는 [Jenkins] 4. Build 성공 후 앱 자동 배포하기에서 사용한 것과 유사하게 작성하였으니, 배포에 관한 쉘 스크립트를 참고하고싶다면 이전 포스팅을 참고해주시기 바랍니다.


5. 결과

Build Now 버튼을 눌러 빌드를 실행합니다.

아래의 로그 출력화면은, 빌드가 성공된 Item의 콘솔 출력화면입니다.

59

빌드성공 후 Jenkins가 설치된 apple 서버에서 SSH를 이용하여 abc 서버로 연결하였고,
demo.jar 파일을 전송한 후, 일련의 명령어를 실행하고나서 과정을 끝마쳤습니다.


+++

  • Jenkins를 이용한 원격서버 배포
728x90
반응형