AWS로 CI/CD 파이프라인 구축하기

박형석·2022년 3월 28일
0

cloud

목록 보기
4/4
post-thumbnail

이 글은 github와 aws 개발자도구를 이용한 파이프라인 구축 과정입니다.

파이프라인 구축


클라이언트 파이프라인

S3에 버킷 생성

중복되지 않은 이름의 버킷을 생성한다.

codebuild를 위한 build.yml 파일 생성

예시)

version: 0.2

phases:
  pre_build:
    commands:
      - cd client
      - npm install
  build:
    commands:
      - npm run build

artifacts:
  files:
    - '**/*'
  base-directory: client/build

파이프라인 구성

  • 이름 설정 후 깃헙 연결
  • 빌드 프로젝트 생성, 환경이미지 설정
  • 배포 스테이지 추가, 버킷 선택

서버 파이프라인

AWS 개발자 도구 서비스를 이용해서 배포 자동화 파이프라인을 구축해야 한다.

시작하기전에,

  • EC2 인스턴스를 생성합니다.
  • EC2 런타임 환경 구축(nvm, npm, node)
  • 생성된 EC2에 태그 추가
  • I AM 역할 수정(AmazonS3FullAccess, AmazonSSMFullAccess, AWSCodeDeployRole)
  • 신뢰 관계 편집(Service에 codedeploy.ap-northeast-2.amazonaws.com 추가)

보안그룹

  • 80, 443 포트 설정

appspec.yml생성

  • 배포자동화를 도와주는 CodeDeploy-Agent가 인식하는 파일을 만들어준다.

각종 스크립트 파일이 담긴 폴더 생성

ex)start.sh, initialize.sh, stop.sh

CodeDeploy의 애플리케이션 생성

  • ec2/온프레미스 선택

배포그룹 생성

  • IAM role 선택
  • 인스턴스 선택, 태그 선택
  • 로드 밸런싱 체크 해제

파이프라인 생성

  • 깃허브 레포지토리 선택
  • 빌드 스테이지 건너뛰기
  • 애플리케이션, 배포그룹 선택

만약 codedeploy-agent가 없다면??


클라이언트 환경변수 설정

시작전,

  • RDS가 생성되어 있어야 한다.
  • EC2인스턴스 안에 AWS CLI가 설치되어 있어야 한다.

 $ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ sudo ./aws/install

빌드 프로젝트

  • 선택 후 환경 -> 추가구성 -> 환경변수 설정

백앤드 환경변수 설정

parameter store

  • 이름,값을 설정하여 필요한 환경변수를 생성

환경변수를 적용 할 스크립트 파일 수정

예시)

#!/bin/bash
cd /home/ubuntu/im-sprint-practice-deploy/server

export DATABASE_USER=$(aws ssm get-parameters --region ap-northeast-2 --names DATABASE_USER --query Parameters[0].Value | sed 's/"//g')
export DATABASE_PASSWORD=$(aws ssm get-parameters --region ap-northeast-2 --names DATABASE_PASSWORD --query Parameters[0].Value | sed 's/"//g')
export DATABASE_PORT=$(aws ssm get-parameters --region ap-northeast-2 --names DATABASE_PORT --query Parameters[0].Value | sed 's/"//g')
export DATABASE_HOST=$(aws ssm get-parameters --region ap-northeast-2 --names DATABASE_HOST --query Parameters[0].Value | sed 's/"//g')

authbind --deep pm2 start app.js

주의사항

  • 파이프라인 돌릴땐 codedeploy-agent가 실행 되어 있어야 한다.

aws ec2 사용시 nvm , npm , node를 최신버전으로 다운했음에도 옛날버전을 사용하는 오류 해결 방법입니다

node.js 업데이트 (3개의 명령어를 차례차례 입력하세요.)
sudo npm cache clean --force
sudo npm install -g n
sudo n stable

npm 업데이트
sudo npm install -g npm
profile
Better Than Yesterday

0개의 댓글