TODO : springboot 환경에서 jenkins 사용해서 배포해보기.
기본적으로 AWS EC2 인스턴스를 생성해두고 시작을 해야한다.
AWS cloud 공간(vm) 연결
외부 클라이언트 연결방법 1
- 터미널 열기
- .ssh 경로로 들어가기
- 인스턴스안 연결 버튼 누르기
- SSH 클라이언트 탭 클릭
- 터미널 .ssh 경로로 이동한 곳에 (ssh -i "aws-key.pem" ec2-user@ec2-13-49-114-42.eu-north-1.compute.amazonaws.com) 입력
- 새모양 뜨면 성공
***안된다면 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
- 인스턴스안 연결 버튼 누르기
- EC2 인스턴스 연결 탭
- 연결
- 새모양 뜨면 성공
- 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