[AWS] AWS CI/CD 구축 (CodeBuild, CodeDeploy, CodePipeline)

JANG WOOHYUK·2023년 1월 30일
0

AWS CI/CD

목록 보기
1/1

오늘은 AWS CI/CD pipeline를 구축해서 자동배포 환경을 구성하겠다.

구성도

허접하지만 이해해주셨으면 좋겠다..

간단하게 설명하자면, Github에 소스 코드가 푸쉬되면 자동으로 배포하도록 구성하였으며, 그림과 같은 형태로 진행된다.

  1. 개발자가 깃 허브에 코드를 푸쉬 👉 CodePipeline에서 인식
  2. 소스 코드를 Code Build에서 빌드 한 뒤, 아티팩트를 s3에 저장
  3. Deploy에서 배포 준비
  4. 준비가 완료되면 Elastic Beanstalk으로 배포

이렇게 순서대로 진행된다.

실습으로 바로 넘어가겠다.

Elastic Beanstalk

JAVA, PHP , Node.js 같은 친숙한 서버에서 개발된 웹 애플리케이션 및 서비스를 간편하게 배포하고 조정할 수 있는 서비스이다.

말 그대로 개발자에게 굉장히 편리한 서비스이다. AWS에 기초만 있어도 사용 할 수 있다는 장점이 있다.

코드를 업로드 하기만 하면, 로드 밸런싱, 오토 스케일링, 모니터링 , 배포를 자동으로 처리하도록 구성 할 수 있다.

Elastic Beanstalk 생성 👉 https://yatyat2.tistory.com/59

CodeBuild 생성

첫번째로, CodeBuild 프로젝트를 생성하겠다.
필자는 GitHub를 연동하였기 때문에 GitHub 프로젝트를 사용할 예정이다.

환경 이미지 중에서는 관리형 이미지사용자 지정 이미지가 있다.
만약, Docker를 사용한다고 하면 사용자 지정 이미지를 사용하면 된다.
필자는 관리형 이미지를 사용할 것이다.

Buildspec 편집
YAML 형식의 빌드 명령 및 관련 설정의 모음이다. CodeBuild 은 빌드를 실행하는 데 사용된다. 소스 코드의 일부로 buildspec을 포함하거나, 빌드 프로젝트를 생성할 때 buildspec을 정의할 수 있다.

필자는 Node.js 빌드해야 하기 떄문에, 사전에 Node, npm를 설치하고 빌드작업을 했다.

참고: https://docs.aws.amazon.com/ko_kr/sdk-for-javascript/v2/developer-guide/setting-up-node-on-ec2-instance.html

phases:
	install:
      commands:
         - npm install
  build:
    commands:
      - npm i --save

Buildspec 소소한 설명 📍

생성이 ✔ 완료되었다.

빌드 시작을 누르자!! 고맙게도 성공함이 떴다.

CodePipeline 생성

codepipeline은 GitHub에 변경된 코드가 푸시되면 감지하고, codebuild를 통해 소스 코드를 빌드 한 뒤 , Elastic Beanstalk로 배포를 실행하는 단계로 통로 같은 역할은 한다.

CodePipeline 검색창에 입력한다.

파이프라인 설정에서 이름을 입력하고, 새 서비스 역할은 클릭한다.

🌟 아티팩트
필자는 아티팩트 떄문에 삽질을 많이 했다..

GitHub에 연결

연결 준비 완료 👉 리포지토리 👉 브랜치 이름

빌드 스테이지 추가

아까 만들었던 빌드 프로젝트를 등록하면 된다.

Elastic Beanstalk으로 배포할 것이다.

Source ✔ Build ✔

Deploy ✔

모든 작업이 완료되었다.

아래 그림과 같이 Elastic Beanstalk 구성으로 이동하면 URL이 바뀐 모습을 볼 수 있을 것이다. URL을 클릭하면 프로젝트의 메인화면이 나온다.

📍 참고: 처음에 포트번호 3000으로 했을 때 bad request라는 500의 nginx 에러 발생!! 포트 번호는 8080으로 해주어야 한다.

프록시 서버 구성 : https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/nodejs-platform-proxy.html

자동 배포 환경 완료 ✔

오늘은 AWS CI/CD 환경에 대해 구축을 해보았다.
AWS 인프라 이용해야 할 경우나 GitHub 이외의 다른 리포지토리를 이용 할 경우, 편리성과 유용성이 보장되는 방법이다. AWS CodePipeline은 많은 툴을 통해 빌드를 하고, 배포할지에 대해서 서비스가 편리했다. Codedeploy 서비스 같은 경우에는 배포를 하기 위해서 AWS cli 환경 세팅을 위한 IAM 있어야 해서 처음 하는 사람한테는 어려웠다.
필자가 Codedeploy 서비스 이용해보았다. 물론 삽질은 어마무시하게 했다.
배포 서비스는 배포 할 수 있는 옵션이 많았고, 각종 글마다 다르게 소개되는 옵션들이 많다 보니 오래 걸렸다. S3 저장소를 이용해서 작업도 해봤고, AWS Codedeploy 이용해서 작업도 해봤다. 정리를 얼른 해야겠다.

profile
공부일기 -> 내일도 공부하는 내가 되자🔥🔥🔥

0개의 댓글