[자동배포] spring boot 프로젝트 jenkins로 배포 자동화하기

Soohyeon B·2022년 11월 27일
0

https://pjh3749.tistory.com/261
아예 처음부터 다시 시작하는 자동배포~ 신난다...

https://may9noy.tistory.com/365

아 또 안돼 왜

또 무한 로딩이 된다

찾아보니 jenkins에서 실행시 마지막 line에서 return 되는게 없어 무한 로딩이 된다고 한다.
근데 실행은 정상이었다는데 내거는 실행도 안된다.
대체 뭐가 문제일까
진짜

..

서버가 아예 먹통이 되어서 또 강제로 중지하고 재시작해줬다.
진 짜 짜 증 나

https://devroach.tistory.com/23

  • Docker Root Dir: /var/lib/docker


드뎌 빌드 성공!!

webhook 설정 후 빌드가 잘 되길래 ngrok는 따로 설치하지 않았다.

빌드 서버 배포

jenkins 관리 > 플러그인 관리 > publish over ssh 설치
설치 후 jenkins 관리 > 시스템 설정 > publish over ssh 란에 정보를 입력한다.

정보를 입력하기 위해서는 ssh 접속을 위한 key pair를 생성해야 하는데
아래 명령어로 생성 가능하다.

ssh-keygen -t rsa -b 2048 -C "<comment>"-f key-03

key-01 이라는 이름으로 키값이 생성되었다.

cat key-01
해당 키 값을 복사해서 jenkins 정보란에 입력한다.

  • Name : 본인이 지정하고 싶은 이름 chevita-Backend
  • Host name: aws 서버 ip주소
  • Username: ec2-user
  • Remote Directory: pwd로 본인의 경로 찾기 : /home/ec2-user

공개키

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEGRx1gmAS8k0WChudQmxL4Ze1Nb+ZGTcDqRRcjPfuRW9fXHTvdCfQcQzS+NEgGBtaggKldZ4jgMg89ZnRBsQ3fdkieoxizsf0xEtyDbTpDTwnRsZ/H4JTJKOUcW/AcDN6Fk+AOqsLdGBF1oZqNO9sW1zp2YTybbMFUTr26HvjUW6pnaONZR0LVr1DPpMm/SEnOQqcbAFNVQt2dbg5JUFVhhUw2RYnAmD41St+7/MMOmz7DE7f50XESVL/MXS2c5nyvxZEG4uh+Z6R+qxlhAxeDtpKRvYcY5nM/q7FV7KfyrEHsuceGwFrKfmqHBJ/PchGdAKJRFB1KU7fDT7Hwa2j

여기서 궁금한 점..
나는 이미 ec2 amazon linux server가 있는데 새로 서버를 생성해야하나??
이미 있는 서버를 배포할 수는 없나?
현재까지의 로직
1. ec2로 서버 구축
2. ec2에 jenkins 설치
3. github에 새로운 코드가 push되면 webhook으로 jenkins가 자동인식해서 자동 빌드
--TODO!--
4. 빌드된 내용을 서버로 배포해야함 (어떻게??)
https://blog.jiniworld.me/94

기존에 서비스 중이었던 앱을 새로 빌드한 애플리케이션으로 교체하여 실행시키려면
1. 서비스 중이던 애플리케이션 종료
2. 백업 폴더 비우기
3. 백업 폴더에 기존 애플리케이션 복사
4. deploy된 최신 빌드 애플리케이션 복사
5. 애플리케이션 실행

기존 애플리케이션을 백업할 필요가 없다면 2,3번 대신 기존 애플리케이션을 삭제하는 과정을 거치면 된다.

1. Post build task 플러그인 설치

post build task 플러그인은 빌드가 성공했을 경우에만 후 조치로 기존 앱을 종료시키고 새로운 앱으로 교체 및 시작하는 과정을 진행하도록 도와주는 역할을 한다.
플러그인 매니저에서 설치 가능!
나는 이미 설치를 해뒀기 때문에 건너뛰겠다.

2. 빌드 후 조치 - Post build task 설정 추가

다시 프로젝트로 돌아가서 프로젝트 구성을 변경하자
빌드 후 조치 > Post build task
빌드 성공 시 콘솔에 출력하는 결과를 작성하자
1. 빌드 성공시
Log text: BUILD SUCCESS
operation: --AND--
SCRIPT: echo "Build 성공"
2. 빌드 실패시
Log text: BUILD FAILURE
operation: --AND--
SCRIPT: echo "Build 중 에러 발생"

3. demo 앱 배포 후 재시작

기존에 서비스 중이었던 애플리케이션을 새로 빌드한 애플리케이션으로 교체하여 재실행시키는 script를 작성해보자!

jenkins home directory를 확인해보자
jenkins> jenkins 관리 > 시스템 설정 부분 > jenkins_home 디렉토리 확인 가능

ssh로 접근 불가 오류...
다시 winscp로 접속하려 했더니 어제까지 멀쩡하게 접속되던게 오늘 갑자기 서버 거부가 뜬다..
어제 putty에서 키를 새로 발급한 것 때문에 권한 문제가 생긴듯 하다..
그래서 새로운 키를 발급해서 ec2에 ssh로 접속해볼 예정이다..
프라이빗 키 교체하기

profile
하루하루 성장하는 BE 개발자

0개의 댓글