CI/CD(Jenkins) 설정시 spring boot 설정은 최소한으로만 설정한다
war로 설정한 프로젝트는 docker에 담아줘서 옮겨야한다
ec2 server -> 인스턴스 시작 ->이름 설정
-> Amazon Linux 선택
여기서 만든 키 페어를 저장 후 .ssh폴더에 넣어 둔다
(aws-key.pom
의 형태로 키페어 저장됨)
ebs 볼륨 크기 30gb로 설정
인스턴스 열어서 네트워크 및 보안에서 탄력적 ip 선택 -> 탄력적ip 주소 기본으로 할당 -> 작업 -> 탄력적 ip 주소 연결 -> 인스턴스 가서 확인
이후 인스턴스에서 탄력적 IP에서 확인 가능
-> 이 IP는 나중에 젠킨스 포트가 연결되어
[탄력적IP]:[젠킨스 포트번호]
로 연결된다
외부 클라이언트 연결 후
free -h
sudo dd if=/dev/zero of=/swapfile bs=128M count=16
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon -s
sudo vim /etc/fstab
vi 편집기로 위 파일을 열고 마지막 줄에 아래의 내용을 추가해준다.
/swapfile swap swap defaults 0 0
:wq
sudo yum install docker -y
sudo service docker start
sudo docker container ps
sudo docker container ps -a
sudo docker image ls
sudo docker volume ls
sudo docker run -p 8080:8080 -p 50000:50000 --name jenkins-server --restart=on-failure -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts-jdk11 (jdk 버전 맞춰줘야함)
2023-11-08 06:47:22.756+0000 [id=31] INFO jenkins.InitReactorRunner$1#onAttained: Completed initialization
2023-11-08 06:47:22.779+0000 [id=22] INFO hudson.lifecycle.Lifecycle#onReady: Jenkins is fully up and running
2023-11-08 06:47:23.324+0000 [id=44] INFO h.m.DownloadService$Downloadable#load: Obtained the updated data file for hudson.tasks.Maven.MavenInstaller
2023-11-08 06:47:23.325+0000 [id=44] INFO hudson.util.Retrier#start: Performed the action check updates server successfully at the attempt #1
여기까지 나온다면 다되긴 한거다 달러뜨면 좋지만 안뜨면 새로고침하고 진행(외부 클라이언트 연결 방법2)
sudo docker container ps -a
sudo docker volume ls
sudo docker container start jenkins-server
`탄력적ip:포트번호`
vm에서 sudo docker logs jenkins-server
왼쪽에 첫번째 install
회원 정보 입력
실습이므로 위부터 4칸 전부 admin 입력하고 이메일에 admin@admin.com 입력
[aws에서 할당한 탄력적 ip]:[docker실행시 설정한 jenkins 포트번호]
sudo docker inspect jenkins-server
날아갈 수 있어서 Apply / Save
Apply / Save
Jenkins 프로젝트 구성 탭
소스코드 관리
올릴 git repository의 code<> https 복사해서 Repository URL에 입력
https://github.com/dawn-sh/JenkinsProject.git
내 깃 주소
Branches to build
Branch Specifier (blank for 'any') Default 브랜치 선택
Build
Root POM : pom.xml
Goals and options : clean compile package
추가
Apply / Save
지금 빌드 선택(git과 연결)
#1번호 눌러서 Console Output으로 진행상황 확인
성공 확인
성공 확인 후 maven-ai-project 눌러서 작업공간 -> target -> war파일 있는지 확인
***클라우드 서버에도 maven은 Tomcat 필수
도커 컨테이너를 지운다면 도커 이미지도 같이 지워줘야하고 도커 볼륨은 선택사항이다
maven/gradle/jar인지 알고 있어야한다
react+Spring boot일 경우 jar
war파일 자체가 배포 파일이기 때문에 tomcat 필요
1. Jenkins 관리
2. Plugins
3. Available plugins
4. deploy 검색
5. deploy to container plugin install
jdk11일 경우 톰캣9 / jdk17일 경우 톰캣10
sudo docker run -d -it --name tomcat -p 8090:8080 tomcat:9
-> 8080포트를 8090으로 쓴다 (jenkins를 8080으로 썼기 때문)
vm에서 sudo docker exec -it tomcat bash
접속후 -R: 하위 디렉토리 파일까지 모두 복사
cp -R ./webapps.dist/* ./webapps
ls webapps
로 복사한 것 확인
cd webapps/manager/
이동
ls
로 xform.xsl와 META-INF
있는지 확인 META-INF
이동
apt-get update
이후 nano설치 (apt-get install nano
/ vi 편집 대체)
(apt-get 패키지 관리자 도구 / homebrew 같은 느낌)
ls
로 context.xml
확인
cp context.xml a.xml
-> context.xml를 a.xml로 복사한다
nano context.xml
로 편집기 실행 / nano로 안되면 vi 편집기로 실행(apt-get install vim
으로 설치 진행)
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->
Valve부분 주석처리 저장 후 나오기 (저장하면 wrote 줄 수 나옴)
(ctrl+s 저장+ctrl+x 나오기)
웹페이지 url에 http://[탄력적ip]:8090/manager/html
입력하면 로그인 창 나옴
로그인 창은 톰캣 계정 aws vm에서 경로를 tomcat까지 나오고(cd ../../..
)
cd conf
로 이동 ls
로 tomcat-users.xml
확인
nano tomcat-users.xml
열어서
맨 밑에 주석 닫히고 tomcat태그 닫히는 곳 사이에
<role rolename="manager-gui" />
<role rolename="manager-script" />
<role rolename="manager-jmx" />
<role rolename="manager-status" />
<user username="admin" password="admin" roles="manager-gui,
manager-script, manager-jmx, manager-status"/>
<user username="deployer" password="deployer"
roles="manager-script"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>
추가하고 ctrl+s ctrl+x
위에 로그인창에 id:admin
pass:admin
입력해서 로그인
WAR/EAR files:**/*.war
(웹에 띄워줄 제목)Context path:ai
Username:deployer
password:deployer
id:deployer_user1
description:deployer on VM
dscription은 상관 없지만 3개는 정확해야함
http://[탄력적ip주소]:8090
추가 ***(맨 뒤 / 없어야함!!)http://[탄력적 ip 주소]:8090/manager/html
)웹페이지에 띄운 tomcat 서버 새로고침하면 ai[(웹에 띄워줄 제목)Context path:ai]
가 뜸 누르면 내가 작성한 프로젝트 가 띄워짐
프로젝트에 이미지 추가 후 git에 올린 후 jenkins에 들어가서 지금 빌드 눌러야지 나옴
github에 있는 프로젝트 선택
settings
webhooks
webhooks추가
Payload URL에 http://[탄력적 ip 주소]:8080/github-webhook/
(맨 뒤 "/" 반드시 추가!!!)(jenkinsport(url)/github-webhook/) 추가
content type json 선택 후 Add webhook
jenkins 프로젝트 구성
빌드 유발
GitHub hook trigger for GITScm polling 체크
Apply / 저장
프로젝트 수정 후 git에 프로젝트 올리면 jenkins 들어가보면 자동으로 빌드 실행 중
이 글을 보고 Jenkins를 사용할 수 있게 됐어요