Github Actions + Code Deploy + Nginx로 CI/CD 구축 및 무중단 배포하기 -1

2023. 6. 8. 22:15· github
목차
  1. 1. 깃허브 액션 생성
  2. 2. IAM 사용자 생성
  3. 3. 깃허브에 access key, secret access key를 등록
  4. 4. S3 생성
  5.  
  6. 5. IAM 역할 생성
  7. 6. EC2 생성
  8. 7. ec2 접속 후 세팅
  9. 8. CodeDeploy 생성
  10. 9. 자동 배포를 위한 스크립트 추가

일단!!! 드디어 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
  1. 1. 깃허브 액션 생성
  2. 2. IAM 사용자 생성
  3. 3. 깃허브에 access key, secret access key를 등록
  4. 4. S3 생성
  5.  
  6. 5. IAM 역할 생성
  7. 6. EC2 생성
  8. 7. ec2 접속 후 세팅
  9. 8. CodeDeploy 생성
  10. 9. 자동 배포를 위한 스크립트 추가
'github' 카테고리의 다른 글
  • [GitHub] 로컬 저장소와 원격 저장소 연동하기
주디(Junior developer)
주디(Junior developer)
Hello World!😀 Hi, I'm Judy🐰(Junior Developer)
주디(Junior developer)
주디는 언제나 당근을 원해🥕
주디(Junior developer)
전체
오늘
어제
  • 분류 전체보기 (82)
    • 연합동아리 (5)
      • 멋쟁이사자처럼🦁 (2)
      • UMC (0)
      • SOPT (3)
    • 프론트엔드 (3)
      • HTML + CSS + Javascript (3)
    • 백엔드 (11)
      • Django (2)
      • SpringBoot (8)
      • Infra (1)
    • Programming study (18)
      • JAVA (3)
      • Python (14)
    • Coding (41)
      • Baekjoon(백준) (32)
      • 자료구조 (1)
      • 코딩테스트 공부 (7)
      • 프로그래머스 (0)
      • 트러블슈팅 (1)
    • github (2)
    • CS (1)
      • 운영체제 (0)
      • Database (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • JPA
  • 리스트
  • 만들 수 없는 금액
  • 스프링부트
  • 장고
  • 트랜잭션
  • 프로그래머스
  • Java
  • django
  • 12015번
  • 코테
  • SpringBoot
  • 웹 프로그래밍
  • 자바
  • JavaScript
  • Dear_Santa
  • c언어
  • CSS
  • Baekjoon
  • 파이썬
  • 백준
  • HTML
  • BFS
  • Python
  • 에라토스테네스의 체
  • dfs
  • 멋사
  • 변수
  • C
  • SOPT

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
주디(Junior developer)
Github Actions + Code Deploy + Nginx로 CI/CD 구축 및 무중단 배포하기 -1
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.