일단!!! 드디어 CI/CD 구축과 무중단 배포를 끝냈다! 약 한달? 정도는 걸린것 같은데,,,, 중간에 오류도 너무 많았고, 스트레스도 많이 받았지만, 늘 그랬듯 성공하고 나서의 기분은 진짜 너무 좋았다..........
CI/CD는 작년 하반기 동아리에서 했던 프로젝트를 하고나서 해보고 싶다는 생각이 많이 들어서 이번에 도전하게 되었다.
(thanks to. 도움을 준 모든 사람들과 블로그💓)
서론이 긴 것 같은데.. 아무튼 완벽하게 정리하지는 못하겠지만, 천천히 글을 정리해보려고 한다.(시작!)
1. 깃허브 액션 생성
가벼운 스프링 부트 프로젝트를 생성한 뒤, 깃허브 레포지토리와 연동한 후, actions 탭을 누르고, master.yml을 생성한다.
우선 나는 master 브랜치를 default로 사용할 것이므로, master.yml을 생성한다.
2. IAM 사용자 생성
사용자 추가를 클릭하고, 사용자 이름은 등록한다.(나는 carrot으로 등록)
그리고 정책은 AmazonEC2FullAcces AmazonS3FullAccess AWSCodeDeployFullAccess 세 개를 연결한다.
그리고 참고한 블로그들과 다른점이 엑세스키를 얻는 것이었다. (사용자 > 보안자격증명 > 엑세스 키로 만들자)
3. 깃허브에 access key, secret access key를 등록
깃허브 - 리파지토리 - Settings - Secrets - Actions에서 키를 등록한다.

4. S3 생성
버킷 생성(carrot-deploy), 보안을 위해 모든 퍼블릭 액세스는 차단한다.
5. IAM 역할 생성
1) EC2용(carrot-ec2-deploy)
사용사례를 ec2로 선택한다.
권한정책은 AmazonS3FullAccess 와 AWSCodeDeployFullAccess를 추가한다,

2) 애플케이션용(carrot-codedeploy)
사용사례를 CodeDeploy로 선택한다. 다른 부분은 건드리지 않고 생성.

6. EC2 생성
OS는 ubuntu 20.04로 했다. 22.0.4로 하면 ruby 호환문제가 발생할 수 있다고 한다.
키페어는 새로 생성했다. (다운받은 키는 잘 보관하기!!!)
생성하고 나면, 이제 아까 생성한 IAM 역할을 등록해야한다. (보안 > IAM 역할 수정에 들어가서 아까 만든 carrot-ec2-deploy와 연결한다.)

7. ec2 접속 후 세팅
나 같은 경우는 /home/ubuntu에 app 디렉토리를 하나 생성했다. app이 아니어도, 원하는 앱 이름으로 생성하면 될듯하다!
아래 커맨드를 입력한다.
sudo apt update
sudo apt install ruby-full
sudo apt install wget
cd /home/ubuntu
sudo apt install awscli
aws s3 cp s3://aws-codedeploy-ap-northeast-2/latest/install . --region ap-northeast-2
chmod +x ./install
sudo ./install auto
# 아래 코드로 설치 확인
sudo service codedeploy-agent status
jdk 설치
# jdk 11버전 설치
sudo apt-get install openjdk-11-jdk
# java 설치 확인
java
8. CodeDeploy 생성
①CodeDeploy - 애플리케이션 - 애플리케이션 생성(carrotMarket)
②배포 그룹 생성(carrot-group)
서비스 역할은 아까 만들 애플리케이션용 IAM 역할을 선택한다.
환경구성에서는 ec2 인스턴스 선택후 배포할 ec2를 선택한다.

9. 자동 배포를 위한 스크립트 추가
이 부분은 여기 블로그를 참고해서 생성했다!!
https://bcp0109.tistory.com/363
Github Actions CD: AWS EC2 에 Spring Boot 배포하기
Overview 애플리케이션을 개발하면 외부에서도 접근 가능하도록 클라우드 환경에 배포합니다. 이전에 포스팅 했던 AWS 1편에서는 마지막에 scp 명령어로 로컬에 존재하는 빌드 파일을 EC2 인스턴스
bcp0109.tistory.com
10. 포트 열기

push 하고 빌드, 배포 성공 뜨고 나서 퍼블릭 IPv4:port 로 접근하면 된다!!
참고로 ps -ef | grep java 했을 때 jar 파일이 떠있어야 성공한다,,
이 블로그로 깃허브 세팅이나 actions세팅을 했고, 위 블로그로 스크립트 세팅을 했다!(도움을 많이 받은 블로그들)
https://be-developer.tistory.com/51
[SpringBoot] Github Action으로 AWS EC2 자동 빌드/배포하기(CI/CD)
[SpringBoot] Github Action으로 AWS EC2 자동 빌드/배포하기(CI/CD) 빗썸테크아카데미의 강의가 끝나고 팀프로젝트가 시작되었는데, 개발에 앞서 우선 aws에 배포해서 Hello world를 먼저 찍어보고 개발을 하
be-developer.tistory.com
'github' 카테고리의 다른 글
[GitHub] 로컬 저장소와 원격 저장소 연동하기 (0) | 2021.07.04 |
---|
일단!!! 드디어 CI/CD 구축과 무중단 배포를 끝냈다! 약 한달? 정도는 걸린것 같은데,,,, 중간에 오류도 너무 많았고, 스트레스도 많이 받았지만, 늘 그랬듯 성공하고 나서의 기분은 진짜 너무 좋았다..........
CI/CD는 작년 하반기 동아리에서 했던 프로젝트를 하고나서 해보고 싶다는 생각이 많이 들어서 이번에 도전하게 되었다.
(thanks to. 도움을 준 모든 사람들과 블로그💓)
서론이 긴 것 같은데.. 아무튼 완벽하게 정리하지는 못하겠지만, 천천히 글을 정리해보려고 한다.(시작!)
1. 깃허브 액션 생성
가벼운 스프링 부트 프로젝트를 생성한 뒤, 깃허브 레포지토리와 연동한 후, actions 탭을 누르고, master.yml을 생성한다.
우선 나는 master 브랜치를 default로 사용할 것이므로, master.yml을 생성한다.
2. IAM 사용자 생성
사용자 추가를 클릭하고, 사용자 이름은 등록한다.(나는 carrot으로 등록)
그리고 정책은 AmazonEC2FullAcces AmazonS3FullAccess AWSCodeDeployFullAccess 세 개를 연결한다.
그리고 참고한 블로그들과 다른점이 엑세스키를 얻는 것이었다. (사용자 > 보안자격증명 > 엑세스 키로 만들자)
3. 깃허브에 access key, secret access key를 등록
깃허브 - 리파지토리 - Settings - Secrets - Actions에서 키를 등록한다.

4. S3 생성
버킷 생성(carrot-deploy), 보안을 위해 모든 퍼블릭 액세스는 차단한다.
5. IAM 역할 생성
1) EC2용(carrot-ec2-deploy)
사용사례를 ec2로 선택한다.
권한정책은 AmazonS3FullAccess 와 AWSCodeDeployFullAccess를 추가한다,

2) 애플케이션용(carrot-codedeploy)
사용사례를 CodeDeploy로 선택한다. 다른 부분은 건드리지 않고 생성.

6. EC2 생성
OS는 ubuntu 20.04로 했다. 22.0.4로 하면 ruby 호환문제가 발생할 수 있다고 한다.
키페어는 새로 생성했다. (다운받은 키는 잘 보관하기!!!)
생성하고 나면, 이제 아까 생성한 IAM 역할을 등록해야한다. (보안 > IAM 역할 수정에 들어가서 아까 만든 carrot-ec2-deploy와 연결한다.)

7. ec2 접속 후 세팅
나 같은 경우는 /home/ubuntu에 app 디렉토리를 하나 생성했다. app이 아니어도, 원하는 앱 이름으로 생성하면 될듯하다!
아래 커맨드를 입력한다.
sudo apt update
sudo apt install ruby-full
sudo apt install wget
cd /home/ubuntu
sudo apt install awscli
aws s3 cp s3://aws-codedeploy-ap-northeast-2/latest/install . --region ap-northeast-2
chmod +x ./install
sudo ./install auto
# 아래 코드로 설치 확인
sudo service codedeploy-agent status
jdk 설치
# jdk 11버전 설치
sudo apt-get install openjdk-11-jdk
# java 설치 확인
java
8. CodeDeploy 생성
①CodeDeploy - 애플리케이션 - 애플리케이션 생성(carrotMarket)
②배포 그룹 생성(carrot-group)
서비스 역할은 아까 만들 애플리케이션용 IAM 역할을 선택한다.
환경구성에서는 ec2 인스턴스 선택후 배포할 ec2를 선택한다.

9. 자동 배포를 위한 스크립트 추가
이 부분은 여기 블로그를 참고해서 생성했다!!
https://bcp0109.tistory.com/363
Github Actions CD: AWS EC2 에 Spring Boot 배포하기
Overview 애플리케이션을 개발하면 외부에서도 접근 가능하도록 클라우드 환경에 배포합니다. 이전에 포스팅 했던 AWS 1편에서는 마지막에 scp 명령어로 로컬에 존재하는 빌드 파일을 EC2 인스턴스
bcp0109.tistory.com
10. 포트 열기

push 하고 빌드, 배포 성공 뜨고 나서 퍼블릭 IPv4:port 로 접근하면 된다!!
참고로 ps -ef | grep java 했을 때 jar 파일이 떠있어야 성공한다,,
이 블로그로 깃허브 세팅이나 actions세팅을 했고, 위 블로그로 스크립트 세팅을 했다!(도움을 많이 받은 블로그들)
https://be-developer.tistory.com/51
[SpringBoot] Github Action으로 AWS EC2 자동 빌드/배포하기(CI/CD)
[SpringBoot] Github Action으로 AWS EC2 자동 빌드/배포하기(CI/CD) 빗썸테크아카데미의 강의가 끝나고 팀프로젝트가 시작되었는데, 개발에 앞서 우선 aws에 배포해서 Hello world를 먼저 찍어보고 개발을 하
be-developer.tistory.com
'github' 카테고리의 다른 글
[GitHub] 로컬 저장소와 원격 저장소 연동하기 (0) | 2021.07.04 |
---|