티스토리 뷰

프로그래밍/메모

간단한 토이 프로젝트 - 4

시간이nullnull한 가장 2022. 3. 11. 04:00

목차

간단한 토이 프로젝트 - 0 (프로젝트 의도)

간단한 토이 프로젝트 - 1 (깃허브,슬랙 연동)

간단한 토이 프로젝트 - 2 (gcp 인스턴스 생성 / nginx, jenkins, mysql 설치)

간단한 토이 프로젝트 - 3 (springboot 게시판 생성)

간단한 토이 프로젝트 - 5 (nginx와 톰캣 연동)

 

목표

jenkins와 github webhook 및 자동 배포

의도

클라우드에 톰캣을 설치하지 않고 jar로 어플리케이션을 구동하면서 자동으로 배포하는 환경을 구성한다.

작업

1. 젠킨스와 깃헙간에 webhook 연동 

1) jenkins instance에서 개인키/공개키 생성

ssh-keygen -t ed25519

2) 생성된 공개키(id_ed25519.pub)를 github > Settings > Deploy keys에 등록

3) github > Settings > Webhooks에 jenkins url 등록

* http://외부ip:8080/github-webhook/

** 만약 젠킨스 구동 ip를 변경했으면 8080이 아닌 젠킨스 구동 ip로 설정

 

4) 젠킨스 로그인

5) 좌측 Jenkins 관리 선택

6) Security 탭에서 Manage Credentials 선택

7) Jenkins -> Global credentials -> (좌측탭) Add Credentials 차례로 선택

8) Kind 옵션을 SSH Username with private key로 변경

생성된 개인키(id_ed25519)를 Key에 등록

 

9) 젠킨스 홈에서 좌측 새로운 Item 선택

10) Freestyle project 선택 후 새로운 Item 생성

 

11)

 

* Repository URL은 Github에서 확인

Credentials는 위에서 생성한 이름의 개인키 선택

* 브랜치명 확인할것 (ide로 깃허브에 공유하는것 대신 깃허브를 먼저 생성했을 경우 main일 수 있음)

 

* GitHub hook trigger for GITScm polling 선택

2. 메타데이터에 jenkins 공개키 등록

* 메타데이터 -> SSH 키 -> 수정 -> 항목 추가

 

3. api 인스턴스에서 deploy.sh 추가

REPOSITORY=/home/nullnull_kim
PROJECT_NAME=board

echo "> 현재 구동중인 애플리케이션 pid 확인"

CURRENT_PID=$(pgrep -f ${PROJECT_NAME}.*.jar)

echo "현재 구동중인 애플리케이션 pid: $CURRENT_PID"
         
if [ -z "$CURRENT_PID" ]; then
        echo ">현재 구동 중인 애플리케이션이 없으므로 종료하지 않습니다."
else    
        echo ">kill -15 $CURRENT_PID"
        kill -15 $CURRENT_PID
        sleep 5
fi

 

4. 깃허브 푸시 후 webhook -> build -> deploy 과정 확인

'프로그래밍 > 메모' 카테고리의 다른 글

내 서비스 만드는 삽질기0  (0) 2023.02.10
간단한 토이 프로젝트 - 3  (0) 2022.03.11
간단한 토이 프로젝트 - 2  (0) 2022.03.10
간단한 토이 프로젝트 - 1  (0) 2022.03.10
간단한 토이 프로젝트 - 0  (0) 2022.03.10