## 젠킨스 설치
## 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 |
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
|
exit | exit |
java11 maven |
sudo dnf install java-11-amazon-corretto-headless maven -y
|
jenkins |
take ~/dev/jenkins && curl -O https://ftp.yz.yamagata-u.ac.jp/pub/misc/jenkins/war-stable/2.414.3/jenkins.war
|
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 접속 성공
'[AWS-FRF] > CICD' 카테고리의 다른 글
[중요][젠킨스] Item Description ( 설명 ) HTML 형식으로 작성하기!! (15) | 2024.08.30 |
---|---|
[Spring] bootjar과 그냥 build의 차이!! (17) | 2024.08.29 |
[중요2][AWS] GitLab 저장소 이전하기!! (17) | 2024.08.27 |
[중요2][AWS] 깃랩 Import and export settings !! (56) | 2024.08.27 |
[중요] Jenkins(젠킨스), GitLab ↔ Jenkins ↔ EC2 연동하여 CI/CD 구축!! (29) | 2024.08.26 |
[중요][AWS] 젠킨스, AWS EC2 우분투에 git 설치!! (52) | 2024.08.23 |
[중요][AWS][CI/CD] 환경 구성 - EC2(Jenkins, GitLab) 설치!! (58) | 2024.08.22 |
[참고][AWS] 스프링 부트 jar 빌드와 AWS EC2 배포 방법!! (64) | 2024.08.19 |
댓글