본문 바로가기
카테고리 없음

jenkins 원격지 배포하기

by hseong 2023. 3. 31.

publish over ssh를 사용하기 위해 우선 개인키, 공개키 쌍을 만들어야 한다.

 

$ sudo mkdir .ssh

$ sudo ssh-keygen

.ssh 디렉터리 하위에 id_rsa  id_rsa.pub 개인키, 공개키 쌍이 생성된 것을 확인할 수 있다.

 

다음 원격지의 배포를 진행하기 위해 새로운 가상머신 인스턴스를 생성해준다.

 

jenkins의 플러그인 탭에서 publish over ssh를 설치한다.

이후 시스템 설정 탭에서 추가 정보를 입력해준다.

1. Key 에는 발급받은 개인키를 붙여넣어준다.

2. SSH 서버를 추가하고 Name에는 원하는 이름

3. Hostname에는 대상 인스턴스의 내부 IP

4. Username에는 계정 이름

5. remote directory는 파일이 전송되기를 원하는 디렉터리를 입력해준다. pwd 명령어를 사용하면 현재 디렉터리 위치를 알 수 있다.

 

이후 TestConfiguration 버튼을 눌러서 연결을 테스트하기 전에 배포를 원하는 인스턴스에 생성한 공개키를 등록시켜줘야 한다.

6. /home/{username}/.ssh 경로에 authorized_keys 파일을 생성하고 젠킨스의 공개키를 붙여넣어준다.

7. Test Configuration이 버튼 클릭 시 Success 메시지가 출력되면 성공

7-1. 만일 연결이 실패하고, BapPublisherException이 발생하면서 auth fail 메시지가 출력될 경우 https://osg.kr/archives/718  해당 블로그를 참고하거나, 새로운 VM 인스턴스를 만들어서 다시 시도해볼 것.

본인의 경우 새로운 인스턴스에 공개키를 등록한 뒤, 연결을 시도했을 때 정상 연결이 되는 것을 확인하였다.

처음 등록하고자 했던 인스턴스에 연습을 위해 docker, jenkins, jenkins container 등 이것저것 설치하면서 무언가 문제가 있었던 것으로 생각된다.

 

이후 빌드 후 조치에서 Send build artifacts over SSH 를 선택해주고,

1. Source files 에는 원격 서버로 전송하고하는 파일 경로 작성

2. Remove prefix로 디렉터리 제외

3. Exec command에 실행할 명령어를 입력한다.

이전에 ssh server 정보를 입력할 때, online-study 라는 디렉터리로 파일을 전송하도록 했기 때문에 해당 디렉터리로 이동한 뒤 java -jar 명령어를 실행시킨다.또한 해당 디렉터리가 root 권한으로 되어있으면 permission denied 라는 오류가 발생하기에 본인의 계정 권한으로 변경해주도록 한다. ($ sudo chown -R 계정명:계정명 디렉터리명)

 

 

Exec exit status not zero. Status [1]

만일 위와 같은 오류가 발생할 경우 빌드 후 조치에서 Verbose output in console 을 체크하면 상세한 console output을 통해 원인을 확인할 수 있다.