본문 바로가기
[AWS-FRF]/CICD

[중요2][AWS] Jenkins + Spring Boot 배포!!

by METAVERSE STORY 2024. 8. 23.
반응형
728x170

 

 

 

 

## 젠킨스 설치

 

 

 

 

## https://bit.ly/okdevtv2311 접속
https://docs.google.com/spreadsheets/d/1zfIfuxFNIvnLxMeQ3mifyzRfmO9u-Qniyn6jzpxr34M/edit?pli=1&gid=190218357#gid=190218357

젠킨스 인스턴스 생성  
zsh
sudo dnf install zsh git util-linux-user htop -y
oh-my-zsh
exit exit
java11 maven
sudo dnf install java-11-amazon-corretto-headless maven -y
jenkins
headless java sudo dnf install fontconfig -y
  fc-cache --force
jenkins run
nohup java -jar jenkins.war --httpPort=9090 &
temp password
cat ~/.jenkins/secrets/initialAdminPassword
jenkins server(임시) http://xxx.xxx.xxx.xxx:9090
git (전자정부)
   
앱 인스턴스 생성  
app instance
sudo dnf install java-11-amazon-corretto-headless maven -y
app folder
mkdir ~/app && touch ~/app/sht_webapp.jar
systemd 등록
sudo vi /etc/systemd/system/sht_webapp.service
 
[Unit]
Description=sht_webapp
After=syslog.target network.target

[Service]
User=ec2-user
Group=ec2-user

ExecStart=/usr/bin/java -jar /home/ec2-user/app/sht_webapp.jar
ExecStop=/bin/kill -15 $MAINPID
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target
 
sudo ln -s /home/ec2-user/app/sht_webapp.jar /etc/init.d/sht_webapp
   
  sudo systemctl stop sht_webapp
  sudo systemctl start sht_webapp
   
keygen (jenkins 서버) ssh-keygen -t rsa
Jenkins plugin Publish over SSH
Manage Jenkins  
   
   
   
   
   
   
   
sdkman
curl -s "https://get.sdkman.io" | bash
  . ~/.zshrc
java11 sdk install java 11.0.21-amzn
maven sdk install maven 3.9.5

 

 

## 젠킨스 서버 & APP 서버 준비

 

 

 

=========================================

## 젠킨스 설정하기

## New Item 클릭

 

- Freestyle Project

 

- Git 없으면 사전 설치 할것!!
- Git URL 설정 및 Branch 설정 (*/main)  ==> 저장
  : (https://github.com/kenu/egovframe-template-simple-backend
  : 찌꺼지 있으면 브라우저에서 접속해보고 할것!!

Failed to connect to repository : Command "git ls-remote -h -- https://github.com/kenu/egovframe-template-simple-backendㅁ HEAD" returned status code 128:
stdout:
stderr: remote: Repository not found.
fatal: repository 'https://github.com/kenu/egovframe-template-simple-backendㅁ/' not found

 

 

 

- Build Now ==> 코드를 받아옴 (성공 9:00)
- Workspace 위치 (소문자 사용권장)
  : /var/lib/jenkins/workspace/Backend_Service

 

 

 

=========================================

## APP EC2 설정

## APP EC2에 자바11 설치

 

- APP서버 ==> ~/app 폴더 생성 & sht_webapp.jar (빈파일) 생성
  : mkdir ~/app && touch ~/app/sht_webapp.jar

 


- systemd 를 이용하여 스프링부트 시스템에 등록
   : sudo vi /etc/systemd/system/sht_webapp.service

 

- systemd 를 이용하여 스프링부트 시스템에 등록
   : sudo ln -s /home/ec2-user/app/sht_webapp.jar /etc/init.d/sht_webapp

 

- 서비스 시작
   : sudo systemctl start sht_webapp

 

- 서비스 확인
  : sudo systemctl status sht_webapp

 

 

앱 인스턴스 생성  
app instance
sudo dnf install java-11-amazon-corretto-headless maven -y
app folder
mkdir ~/app && touch ~/app/sht_webapp.jar
systemd 등록
sudo vi /etc/systemd/system/sht_webapp.service
 
[Unit]
Description=sht_webapp
After=syslog.target network.target

[Service]
User=ec2-user
Group=ec2-user

ExecStart=/usr/bin/java -jar /home/ec2-user/app/sht_webapp.jar
ExecStop=/bin/kill -15 $MAINPID
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target
스프링부트 서비스
시작포인트 생성
sudo ln -s /home/ec2-user/app/sht_webapp.jar /etc/init.d/sht_webapp
서비스 시작 sudo systemctl start sht_webapp
  sudo systemctl stop sht_webapp
   

 

 

 

=========================================

## 젠킨스 재설정

keygen (jenkins 서버) ssh-keygen -t rsa
Jenkins plugin 설치 Publish over SSH
Manage Jenkins  

 

- Manage Jenkins ==> Plugins 클릭 ==> Available plugins ==> Publish over SSH 설치

 

(14분)

 

- Manage Jenkins ==> System 클릭 ==> Publish over SSH 생성 확인

 

- SSH Servers 등록 (APP 서버 정보 등록)
   : Remote Directory 확인 할것 (/home/ec2-user)
   : Name / Hostname / Username 등록할 것!!

  : (선택1) ID/PW 사용시 ==> 고급 클릭 ==> PW입력 / 포트입력 / 연결 테스트 (성공)

 

 

 

   : (선택2) 하기내용에  젠킨스 프라이빗키 (id_rsa) 붙여넣기 후, 저장 

 

 

 

- 젠킨스 서버에서 키 생성 (위 작업시 필요)

keygen (jenkins 서버) ssh-keygen -t rsa

 

- cat id_rsa.pub 내용을 복사해서 ==> APP EC2 에 복사 (~/.ssh/authorized_keys)

  :   APP EC2 접속

 

   : ssh 172.30.2.128  (비번없이 접속 성공)

 

 

 

 

=========================================

## 젠킨스 서버에서 메이븐 설치

maven sdk install maven 3.9.5

 

 

## Backend 잡 확인 (Workspace 확인)

 

## Build Step 에서 빌드환경 설정 (Jar 파일 생성)
- Backend ==> Configuration ==> Build Environment ==> Build Steps (Invoke top-level Maven targets)==> clean package (Jar 파일 생성)

 

- maven 설치 안되서 에러 발생

 

- sudo yum install maven  (메이븐 설치 3.8.4)
- mvn --version

 

- sdk install maven 3.9.5 설치후, 젠킨스 재시작 (명령어 다름)

 

- nohup java -jar jenkins.war --httpPort=9090 &

 

 

 

- Build 성공 (Jar 파일 생성)
   : target 폴더 밑에 Jar 파일 생성

 

 

 

## Build 성공 후, Build Steps ==> Post-Build Action 설정 ==> Send build artifacts over SSH 선택

 

- Maven 으로 빌드하면 target 폴더에 Jar 파일 생성됨!!
   : Source files  ==>  target/sht_webapp.jar
   : Remove prefix  ==>  target/
   : Remote directory  ==>  app

- Exec command 설정 후, 저장
   : sudo systemctl stop sht_webapp
   : sleep 3
   : sudo systemctl start sht_webapp

 

 

 

## Build Now 클릭

 

- SSH로 backend app1 접속 후, Jar 파일 복사 성공  (31:00)

 

 

 

- backend app1 서버 접속 후, sht_webapp.jar 파일 확인
- pgrep java (프로세스 확인) 
- curl localhost:8080 

 

 

 

## 최종 테스트 
- 퍼블릭IP:8080 접속 성공

 

 

 

 

 

https://bit.ly/okdevtv2311

 

OKdevTV : https://bit.ly/okdevtv2311

ABCDEFGHIJKLMNOPQRSTUVWXYZLinux 시작하기https://okdevtv.com/mib/linux 증시가격은 모든 주식 시장의 증시가격을 표시하는 것은 아니며 최대 20분 전 정보임을 참고하시기 바랍니다. 정보는 '있는 그대로' 제공

docs.google.com

 

 

 

 

 

반응형
그리드형

댓글