본문 바로가기
프로그래밍/웹서버

[Jenkins] Publish Over SSH 설치 및 project 구성

by 오답노트의 주인 2022. 4. 11.

2022.04.11 - [프로그래밍] - [Jenkins] Github Pull Request Builder 설치 및 project 구성

2022.04.10 - [프로그래밍] - [Jenkins] 설치 및 Github와 연동, Ngrok을 이용해 공인 Url받기

== Version ==
Jenkins        v2.33.2
Ubuntu        18-04 LTS
Ngrok        2.3.40
NodeJS        16.9.0

목표

  • Publish Over SSH 설치, 설정

Publish Over SSH 설치

설치 및 설정

이것도 플러그인이라서 Jenkins > 플러그인 관리에서 설치해주면 된다.

 

Jenkins 관리 > 시스템 설정으로 이동해 Publish Over SSH항목으로 이동한다.

프론트 서버를 추가할 수 있는 공간이 있다. 

 

Name에는 서버의 이름을 적어둔다. 

 

Hostname에는 서버의 IP를 적고, Username에는 접근할 유저를 적어준다. 

 

Remote Directory는 보내질 파일이 도달할 위치이다. 위에서 설정한 유저는 이 디렉토리에 대해 권한을 갖고 있어야 한다. 나는 루트 계정이므로 상관이 없지만 다른 계정을 등록했을 경우 권한 설정도 바꾸어야 한다.

 

고급버튼을 눌러 구체적으로 설정을 해주어야 하는데, 포트, 계정의 비밀번호나 비공개키, 타임아웃 등을 설정할 수 있다.

 

네이버 클라우드의 경우 루트계정 비밀번호를 제공하기 때문에 그냥 비밀번호만 입력해도 되었다.

직접 키를 생성해서 서버에 등록해두어도 된다. 그럴 경우 Path to key나 Key항목을 채워주어야 한다.

 

내 프론트 서버의 ssh는 포트포워딩을 해두어서 22번 포트가 아니다. 포트포워딩이 된 번호를 적어주었다.

 

모든 설정을 입력하고 Test Configuration을 클릭하면 테스트가 이루어지고 Success가 뜰 경우 정상이다.

Project 설정

프로젝트로 이동해 빌드 후 조치 항목에서 Send build artifacts over SSH를 선택해 추가한다.

직전에 새로 생성했던 서버를 선택한다. 그 밑에 Transfer 항목이 있는데 전달할 파일과 전달 후 실행될 shell script를 작성하는 곳이 있다.

빌드가 끝나고 나서 dist.zip파일이 생성되었으므로 Source files을 그것으로 선택한다.

 

Exec command에는 unzip 명령어를 적어주었다. 

 

-o는 overwrite를 의미하고 -d 는 압축파일이 풀릴 경로이며, 절대경로로 적어주어야 ~/위치에서 실행이 가능했다.

 

이렇게 해두고 다시 Pull Request를 실행하면 Console output에 정상적으로 실행되었다고 뜨면서 빌드가 성공한다.

shell script를 작성했는데 ssh timeout이 발생하는 경우는 아래처럼 사용자의 입력이 필요한 상황이 발생했을 때 일어난다.

 

댓글