NCP서버 jenkins Publish over SSH 연결 / 자동 배포 설정

강인호·2023년 3월 15일
0

개인저장

목록 보기
86/87

2일동안 계속 키 인증 방식으로 젠킨스 서버에서 프론트 서버로의 ssh 연결을 시도했었는데 어떤 글에서 putty 로그인 자체를 키인증 방식으로 하는것을 보고

결국 지금 우리가 하려는게 원격 로그인이 아닌가?? 그 로그인의 방식중에 하나가 ssh key 인것이고 지금

ncp 로그인 할때는 관리자 비밀번호로 로그인으로 하는 방식 그대로 적용해보면 되지 않을까란 생각으로 putty 로그인과 동일한 설정으로

시도해보았고 성공적으로 연결이 되었다.

성공 케이스 (키 인증 방식 아님)

publish over ssh 공란

하단 ssh sever

Name : 임의의 이름

Hostname : 서버 접속용 공인 IP (putty 로그인 ip)

Username : root

remote directory : 작업 경로 (공란도 가능)

고급 탭 클릭 후

Use password authentication, or use a different key 체크

Passphrase / Password 에 관리자 비밀번호 (putty 로그인 할 때 그 비밀번호) 입력

Port에 포트포워딩 포트 (putty 로그인 포트) 입력

Test Configuration 클릭 후 Success 뜨면 연결 됨

실제로 remote directory에 존재하지 않는 폴더 경로같은걸 입력 했을때 test configuration 에서 에러가 나는걸 보니 jenkins에서 실제 인스턴스에 접속까지는 한 것으로 확인

영향을 주는 요인??(추측)

연결 테스트할 때 마다 콘솔에 포트가 다르게 찍힘
배포 인스턴스 방화벽에서 jenkins 서버의 공인 ip와 해당하는 모든 포트를 열어야 연결이 됨
(ssh키를 통한 인증 방식이 아니라서 그런걸수도 있음)


빌드 후 조치 send build artifacts over SSH 선택

Source files : 보낼 파일 /var/lib/jenkins/workspace/{item}의 경로를 기본으로 하는 상대경로 입력 */ 입력 시 모든 파일 선택

remove prefix : 원격서버 이동 후 삭제할 디렉토리

remote directory : 원격 서버에 배포 시 해당 파일이 위치할 디렉터리

(기본 작업 위치는 ssh 서버 설정에서 지정한 위치고 저 설정은 포장??되는 디렉터리, ex. /jenkins 입력시 jenkins라는 폴더 안에 전송한 파일들이 담김)

나의 경우에는 build라는 폴더 안에 모든 내용물을 보내기 위해 저렇게 작성함

저렇게 작성하면 서버에 build 폴더 하나만 전송됨

파일 이동 후 스크립트 실행 위치는 home에 위치한다.
(exec command 시에 경로 이동 해주어야함. 파일을 보내는 경로와 스크립트가 실행되는 위치가 일치하지 않음)

git merge시 jenkins에서 install&build후(Post build task 사용) 빌드파일을 지정해서 서버의 인스턴스로 보내는 과정

젠킨스에서 빌드 후 빌드파일 생성 후
send build artifacts over SSH의 과정이 실행된다.

특정 로그를 확인하면 npm install 후 npm run build를 실행해서 빌드 파일 생성

전체적인 흐름은

git merge -> 빌드 트리거 작동 -> 젠킨스 빌드 -> 젠킨스에서 npm build ->
build폴더를 프론트 인스턴스로 전송 -> nginx에서 지정된 경로로 빌드파일이 보내지고 nginx는 해당 빌드파일을 배포


nginx 오류

403에러 발생 시

나의 경우에는 /etc/nginx/nginx.conf 파일에

user로 설정되어 있는 유저가 권한이 없어서 발생한 문제

해당 유저에게 권한을 부여해도 되지만 나는 user를 root로 변경했다.

router 404에러 발생 시

jenkins build후 npm not found 발생 시

플러그인에서 nodejs 설치

젠킨스 설정 -> Global Tool Configuration

item -> 구성 -> 빌드환경 에서 추가

jenkins Treating warnings as errors because process.env.CI = true. 에러

npm run build => CI= npm run build로 변경

0개의 댓글