[CI/CD] Jenkins사용하여 springboot 프로젝트 배포하기

TODO  : springboot 환경에서 jenkins 사용해서 배포해보기.

 

기본적으로 AWS EC2  인스턴스를 생성해두고 시작을 해야한다.

 

 

AWS cloud 공간(vm) 연결

외부 클라이언트 연결방법 1

  1. 터미널 열기
  2. .ssh 경로로 들어가기
  3. 인스턴스안 연결 버튼 누르기
  4. SSH 클라이언트 탭 클릭
  5. 터미널 .ssh 경로로 이동한 곳에 (ssh -i "aws-key.pem" ec2-user@ec2-13-49-114-42.eu-north-1.compute.amazonaws.com) 입력
  6. 새모양 뜨면 성공
    ***안된다면 chmod 400 ~/.ssh/aws-key.pem 입력 -> 터미널 .ssh 경로로 이동한 곳에 (ssh -i "aws-key.pem" ec2-user@ec2-13-49-114-42.eu-north-1.compute.amazonaws.com) 입력

외부 클라이언트 연결 방법 2

  1. 인스턴스안 연결 버튼 누르기
  2. EC2 인스턴스 연결 탭
  3. 연결
  4. 새모양 뜨면 성공
  5. EC2 인스턴스 -> ID클릭 -> 우측 상단 연결클릭 -> 오른쪽 하단 연결눌러서 AWS linux 환경에서 시작 새가떠야지 정상임

 




#3 aws 램 욜량 늘리기
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

free-h
램 2gb 인거 확인을 한다.

 

 

#4
sudo service docker start
sudo docker container
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-jdk17
sudo docker container ps
sudo docker container ps -a
sudo docker volume ls
sudo docker container start jenkins-server
sudo docker logs jenkins-server
sudo docker inspect jenkins-server

 


EC2 -> 네트워크 및 보안 -> 보안그룹

 

 

인바운드 규칙 편집에서 아래와 같이 설정

 

아웃바운드 규칙 편집

 



새창에서 본인포트번호:8080


/opt/java/openjdk

800f195c785749eea1ef3ed0cabe9e59 7511215 (자신의 비밀키로) -> (로그인)

jenkins관리 -> Tools
JDK installations
openjdk
/opt/java/openjdk

Maven installations
maven3.9

apply -> save

새로운 item
제목 :  maven123 -> maven project 하고 ok

그리고 빌드시키기.

 

빌드 성공하면 다음으로 톰캣서버를 내장시켜야한다

#1-1) 보안그룹 -> 인바운드 규칙 에서 8090 포트를 하나더 열어 주어야 한다. 

새로운 8090 포트를 추가한다.

 

그리고 Jenkins 사이트에서 

Dashboard > jenkins관리 > Plugins > Available plugins > Deploy container를 다운받아야 한다.

 

이 다음 단계로 

sudo docker ps로 확인을 한번 해주고

 

톰캣 다운로드

docker run -d -it --name tomcat -p 8090:8080 tomcat:9 

(**Jenkins는 톰캣10을 지원하지 않으므로, 톰캣9이하 버전으로 한다)

 

톰캣 컨테이너 접속
docker exec -it tomcat bash

접속후 -R: 하위 디렉토리 파일까지 모두 복사
cp -R ./webapps.dist/* ./webapps

 

ls webapps

 

cd webapps/manager/

 

ls

 

cd META-INF/

 

apt-get update

 

apt-get install nano

 

ls (리스트 확인)

 

cp context.xml a.xml  ( context.xml 를 a.xml로 바꿈)

 

nano context.xml (나노로 들어가지기) 

 

나노로 들어가서

<valve ~ /valve>까지 주석처리하고

ctrl+ s  -> ctrl+x (저장 -> 나가기)

 

cd ../../../   ( -> 3번 전 경로로 간다)

 

cd conf 

 

ls

 

nano tomcat-users.xml

 

나노들어가서 안에 

<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"/>

 

위 코드를 <tomcat-users ~~ 안에 넣어 준다. </tomcat-users>

 

이제 톰캣 설정 또한 끝났으므로 Jenkins를 들어가서 마무리 설정을 합니다.

 

Dashboard에서 name을 클릭한다.

구성을 누른다

 

구성에서 빌드후 조치를 들어가서 설정을 해줄 것이다.

 

본인 IP주소를  적는다

 

이 화면이 뜨면 다음으로

본인 ip/manage/html을 적는다

위 화면이 뜰 것이고, /ai나 /g1 등은 jenkins에서 설정한 contextpath이다 저걸 클릭하면

내가 스프링부트에서 만든 사이트에 들어가진다.

 

 

ex) 

자동 빌드화

본인 깃 허브 레포지토리에서 settings를 누르고 webhook를 누르고 add webHook을 들어간다.

payload URL에는 본인 aws에서 발급한 퍼블릭 ip주소를 적는다. 그리고 add webhook을 하고

 

jenkins에 들어가서 마지막 이 설정을 해준다.

 

 

자세한 내용은 위 블로그에서 참조할 수 있습니다

https://velog.io/@tjdgus9773/Jenkins-CICD-%EC%84%A4%EC%A0%95

728x90