๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœจ ๋ฐ๋ธŒ์˜ต์Šค: DevOps

Github Actions, AWS CodeDeploy๋ฅผ ํ™œ์šฉํ•œ CI/CD - Node.js(2)

by ๐Ÿค ์ค€์ฝฉ์ด 2023. 1. 1.

AWS CodeDeploy๋ฅผ ํ™œ์šฉํ•ด์„œ ์ž๋™ ๋ฐฐํฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” AWS์—์„œ ๊ด€๋ จ ์„ค์ •๋“ค์„ ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 

๐Ÿš€ AWS S3 ๋ฒ„ํ‚ท ์ƒ์„ฑ

 

Github Actions์—์„œ ๋นŒ๋“œํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ AWS์— ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ S3 ๋ฒ„ํ‚ท์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

 

AWS > S3 > ๋ฒ„ํ‚ท > ๋ฒ„ํ‚ท ๋งŒ๋“ค๊ธฐ๋ฅผ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

 

 

๋ฒ„ํ‚ท ์ด๋ฆ„๋งŒ ์ง€์ •ํ•œ ํ›„ ๋‹ค๋ฅธ ์„ค์ •๋“ค์€ ๊ทธ๋Œ€๋กœ ๋‘๊ณ  ๋ฒ„ํ‚ท ๋งŒ๋“ค๊ธฐ๋ฅผ ๋ˆŒ๋Ÿฌ ๋ฒ„ํ‚ท์„ ์ƒ์„ฑํ•ด์ค๋‹ˆ๋‹ค.

 

 

๐Ÿš€ EC2 IAM ์„ค์ •

 

EC2๊ฐ€ S3์™€ CodeDeploy๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ถŒํ•œ ์„ค์ •์„ ํ•ด์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค.

 

AWS > IAM > ์•ก์„ธ์Šค ๊ด€๋ฆฌ > ์—ญํ•  > ์—ญํ•  ๋งŒ๋“ค๊ธฐ๋ฅผ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

 

 

์œ„์™€ ๊ฐ™์ด ์„ ํƒํ•˜๊ณ  ๋‹ค์Œ์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

 

 

AWSCodeDeployFullAccess

AmazonS3FullAccess

 

๋‘ ๊ฐ€์ง€ ๊ถŒํ•œ์„ ์„ ํƒํ•ด์ฃผ๊ณ  ๋‹ค์Œ์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

 

 

๋งˆ์ง€๋ง‰์œผ๋กœ ์—ญํ•  ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๊ณ  ์—ญํ•  ์ƒ์„ฑ์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

 

์ด์ œ ์ƒ์„ฑ๋œ IAM์„ EC2์— ์—ฐ๊ฒฐํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

AWS > EC2 > ์ธ์Šคํ„ด์Šค๋กœ ์ด๋™ํ•ด์„œ ์ƒ์„ฑ๋œ EC2 ์ธ์Šคํ„ด์Šค์— ๋งˆ์šฐ์Šค๋ฅผ ๋Œ€๊ณ  ์šฐํด๋ฆญ์„ ํ•ด์ค๋‹ˆ๋‹ค.

 

 

๋ณด์•ˆ > IAM ์—ญํ•  ์ˆ˜์ •์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

 

 

์ƒ์„ฑํ•œ IAM์„ ์„ ํƒํ•˜๊ณ  Update IAM role์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

 

 

๐Ÿš€ CodeDeploy IAM ์„ค์ •

 

๋‹ค์Œ์€ CodeDeploy๋ฅผ ์œ„ํ•œ IAM์„ ์ƒ์„ฑํ•ด์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค. ์œ„ ๊ณผ์ •๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.

 

AWS > IAM > ์•ก์„ธ์Šค ๊ด€๋ฆฌ > ์—ญํ•  > ์—ญํ•  ๋งŒ๋“ค๊ธฐ๋ฅผ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

 

 

์ด๋ฒˆ์—๋Š” ๋‹ค๋ฅธ AWS ์„œ๋น„์Šค์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ CodeDeploy๋ฅผ ๊ฒ€์ƒ‰ํ•œ ๋’ค ์œ„์™€ ๊ฐ™์ด ์„ ํƒํ•˜๊ณ  ๋‹ค์Œ์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

 

 

๊ทธ๋Œ€๋กœ ๋‹ค์Œ์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

 

 

์ด๋ฆ„๋งŒ ์„ค์ •ํ•ด์ฃผ๊ณ  ์—ญํ•  ์ƒ์„ฑ์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

 

 

๐Ÿš€ CodeDeploy ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ์„ฑ

 

AWS > CodeDeploy > ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ > ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ์„ฑ์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

 

 

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„์„ ์ •ํ•˜๊ณ  ์ปดํ“จํŒ… ํ”Œ๋žซํผ์€ EC2/์˜จํ”„๋ ˆ๋ฏธ์Šค๋กœ ์„ค์ •ํ•œ ํ›„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ์„ฑ์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

 

 

์ด์ œ ๋ฐฐํฌ ๊ทธ๋ฃน ์ƒ์„ฑ์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

 

 

๋ฐฐํฌ ๊ทธ๋ฃน ์ด๋ฆ„์„ ์ •ํ•˜๊ณ  ์„œ๋น„์Šค ์—ญํ• ์—๋Š” ์œ„์—์„œ ์ƒ์„ฑํ–ˆ๋˜ CodeDeploy IAM์„ ์ง€์ •ํ•ด์ค๋‹ˆ๋‹ค.

 

 

๋ฐฐํฌ ์œ ํ˜•์€ ๊ทธ๋Œ€๋กœ ๋‘ก๋‹ˆ๋‹ค.

 

ํ™˜๊ฒฝ ๊ตฌ์„ฑ์œผ๋กœ๋Š” Amazon EC2 ์ธ์Šคํ„ด์Šค๋ฅผ ์„ ํƒํ•˜๊ณ  ์—ฐ๊ฒฐํ•  EC2 ์ธ์Šคํ„ด์Šค๋ฅผ ์„ ํƒํ•ด์ค๋‹ˆ๋‹ค.

 

 

๋‚˜๋จธ์ง€ ์„ค์ •์€ ๊ทธ๋Œ€๋กœ ๋‘๊ณ  ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ํ™œ์„ฑํ™” ์ฒดํฌ๋ฅผ ํ•ด์ œํ•œ ํ›„ ๋ฐฐํฌ ๊ทธ๋ฃน ์ƒ์„ฑ์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

 

 

๐Ÿš€ AWS IAM ์‚ฌ์šฉ์ž ์ถ”๊ฐ€

 

์ด์ œ Github Actions์—์„œ S3์— ์ ‘๊ทผํ•˜์—ฌ ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋„๋ก IAM ์‚ฌ์šฉ์ž๋ฅผ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค.

 

AWS > IAM > ์•ก์„ธ์Šค ๊ด€๋ฆฌ > ์‚ฌ์šฉ์ž > ์‚ฌ์šฉ์ž ์ถ”๊ฐ€๋ฅผ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

 

 

์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ์„ค์ •ํ•˜๊ณ  ์•ก์„ธ์Šค ํ‚ค - ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹ ์—‘์„ธ์Šค์— ์ฒดํฌ๋ฅผ ํ•œ ๋’ค ๋‹ค์Œ์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

 

 

๊ธฐ์กด ์ •์ฑ… ์ง์ ‘ ์—ฐ๊ฒฐ์—์„œ ์•„๊นŒ ์„ ํƒํ•œ๊ฒƒ์ฒ˜๋Ÿผ

 

AWSCodeDeployFullAccess

AmazonS3FullAccess

 

๋‘ ๊ฐœ์˜ ๊ถŒํ•œ์„ ์ฒดํฌํ•œ ํ›„ ๋‹ค์Œ์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

์ดํ›„ ๋‹ค๋ฅธ ์„ค์ •๋“ค์€ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉ์ž ๋งŒ๋“ค๊ธฐ๋ฅผ ํ•ด์ค๋‹ˆ๋‹ค.

 

 

์ด๋ ‡๊ฒŒ ์‚ฌ์šฉ์ž๋ฅผ ์ƒ์„ฑํ•˜๋ฉด Access Key Id, Secret Access Key๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค.

์ด ํ‚ค ๊ฐ’๋“ค์€ ์ง€๊ธˆ๋งŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ํ‚ค๋ฅผ ๋ฉ”๋ชจํ•ด๋‘๊ฑฐ๋‚˜ .csv ๋‹ค์šด๋กœ๋“œ๋ฅผ ๋ˆŒ๋Ÿฌ csv ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„๋‘ก๋‹ˆ๋‹ค.

 

์ด์ œ ์ด ๋‘๊ฐ€์ง€ ํ‚ค ๊ฐ’๋“ค์„ Github ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค.

 

 

 

๐Ÿš€ EC2 CodeDeploy Agent ์„ค์น˜

 

๊ธฐ๋ณธ์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ ์‹คํ–‰์— ํ•„์š”ํ•œ npm, yarn, git, node, pm2 ๋“ฑ์€ ์„ค์น˜๊ฐ€ ๋๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

AWS CodeDeploy๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” EC2์— CodeDeploy Agent๋ฅผ ์„ค์น˜ํ•ด์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค.

๋จผ์ € awscli ์„ค์น˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

$ sudo apt update
$ sudo apt install awscli

 

์ „ ๋‹จ๊ณ„์˜ Access Key Id, Secret Access Key๋ฅผ ์ž…๋ ฅํ•ด์ค๋‹ˆ๋‹ค.

$ sudo aws configure
AWS Access Key ID : ๋‹ค์šด ๋ฐ›์€ csv ํŒŒ์ผ ๋‚ด์— Access Key ID
AWS Secret Access KEy : ๋‹ค์šด ๋ฐ›์€ csv ํŒŒ์ผ ๋‚ด์— Secret Access Key
Default region name : ap-northeast-2
Default output format : json

 

CodeDeploy Agent ์„ค์น˜ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ํ•˜๊ณ  install ํŒŒ์ผ์— ๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ•ฉ์‹œ๋‹ค.

$ wget https://aws-codedeploy-ap-northeast-2.s3.amazonaws.com/latest/install
$ chmod +x ./install

 

ruby๋ฅผ ๋จผ์ € ์„ค์น˜ํ•˜๊ณ , CodeDeploy Agent๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

$ sudo apt-get install ruby
$ sudo ./install auto
$ sudo service codedeploy-agent status# ์„ค์น˜ ํ™•์ธ

 

 

๋งˆ์ง€๋ง‰ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๋•Œ ์œ„์™€ ๊ฐ™์ด active ์ƒํƒœ์ด๋ฉด ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค.

 

์ธ์Šคํ„ด์Šค ๋ถ€ํŒ… ์‹œ codedeploy-agent๊ฐ€ ์ž๋™์œผ๋กœ ์žฌ์‹œ์ž‘๋˜๋„๋ก shell script๋ฅผ ์ž‘์„ฑํ•ด์ค๋‹ˆ๋‹ค.

$ sudo vim /etc/init.d/codedeploy-startup.sh

i๋กœ ํŽธ์ง‘๋ชจ๋“œ ์ง„์ž…

#!/bin
sudo service codedeploy-agent restart

esc -> :wq ์ €์žฅ ํ›„ ๋‚˜๊ฐ€๊ธฐ

 

์ž‘์„ฑํ•œ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์— ์‹คํ–‰ ๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

$ sudo chmod +x /etc/init.d/codedeploy-startup.sh

 

 

๐Ÿš€ appspec.yml ํŒŒ์ผ ์ถ”๊ฐ€

 

๋ฐฐํฌํ•  ํ”„๋กœ์ ํŠธ์˜ ๋ฃจํŠธ ๊ฒฝ๋กœ์— appspec.yml ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

 

appspec.yml ํŒŒ์ผ์€ CodeDeploy๊ฐ€ ๋ฐฐํฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‚ฌ์–‘ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

CodeDeploy๊ฐ€ EC2์— ํ”„๋กœ์ ํŠธ๋ฅผ ์˜ฎ๊ธฐ๊ณ  ๋‚˜๋ฉด, EC2์—์„œ ์ด๋ฃจ์–ด์งˆ ์ž‘์—…์„ ํ•ด๋‹น ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•˜์—ฌ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

appspec.yml ํŒŒ์ผ

version: 0.0
os: linux
files:
  - source: /
    destination: /home/ubuntu/build
    overwrite: yes

permissions:
  - object: /home/ubuntu
    pattern: '**'
    owner: ubuntu
    group: ubuntu

hooks:
  AfterInstall:
    - location: scripts/after-deploy.sh
      timeout: 300
      runas: ubuntu

 

CodeDeploy๊ฐ€ EC2์— ๋ฐฐํฌํ•  ์œ„์น˜๋ฅผ destination์œผ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ๊ฐ€ ์˜ฎ๊ฒจ์ง€๊ณ  ๋‚œ ํ›„์— ์ด๋ฃจ์–ด์งˆ ์ž‘์—…์€ scripts/after-deploy.sh์— ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

 

 

๐Ÿš€ after-deploy.sh ํŒŒ์ผ ์ถ”๊ฐ€

 

๋ฐฐํฌํ•  ํ”„๋กœ์ ํŠธ์˜ ๋ฃจํŠธ ๊ฒฝ๋กœ์— scripts ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ ์•ˆ์— after-deploy.sh ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

 

scripts/after-deploy.sh ํŒŒ์ผ

#!/bin/bash
REPOSITORY=/home/ubuntu/build

cd $REPOSITORY

sudo yarn

sudo pm2 start dist

 

์œ„ ๋ช…๋ น์–ด๋“ค์€ EC2์— ๋ฐฐํฌ๊ฐ€ ๋๋‚œ ํ›„ ์‹คํ–‰๋˜๋Š” ๋ช…๋ น์–ด๋“ค์ž…๋‹ˆ๋‹ค.

๋ฐฐํฌ๋œ ๊ฒฝ๋กœ๋กœ ๊ฐ€์„œ ํ•„์š”ํ•œ dependency๋ฅผ yarn ๋ช…๋ น์–ด๋กœ ์„ค์น˜ํ•ด์ค€ ๋’ค ์„œ๋ฒ„๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

 

โ—๏ธyarn not found, pm2 not found ์—๋Ÿฌ

nvm์œผ๋กœ node๋ฅผ ์„ค์น˜ํ–ˆ์„ ๋•Œ sudo๋กœ ํ•˜๋ฉด ์‹คํ–‰์ด ์•ˆ๋˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด๊ฒฐ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

sudo ln -s /root/.nvm/versions/node/v16.15.1/bin/yarn /usr/bin/yarn

sudo ln -s /root/.nvm/versions/node/v16.15.1/bin/pm2 /usr/bin/pm2

 

#!/bin/bash
REPOSITORY=/home/ubuntu/build

cd $REPOSITORY

sudo /usr/bin/yarn

sudo /usr/bin/pm2 start dist

 

 

๐Ÿš€ deploy.yml ํŒŒ์ผ ์ˆ˜์ •

 

๋งˆ์ง€๋ง‰์œผ๋กœ CI ๊ณผ์ •์—์„œ ์ƒ์„ฑํ–ˆ๋˜ deploy.yml ํŒŒ์ผ์— ๋ช‡๊ฐ€์ง€ ์ž‘์—…์„ ์ถ”๊ฐ€ํ•ด์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค.

 

deploy.yml ํŒŒ์ผ

# This workflow will do a clean install of node dependencies, cache/restore them, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions

name: deploy

on:
  push:
    branches: [develop]
  pull_request:
    branches: [develop]

jobs:
  build:
    runs-on: ubuntu-18.04

    strategy:
      matrix:
        node-version: [16.15.1]
        # See supported Node.js release schedule at https://nodejs.org/en/about/releases/

    steps:
      - name: Checkout source code.
        uses: actions/checkout@v2

      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v2
        with:
          node-version: ${{ matrix.node-version }}

      - name: Check Npm -v
        run: npm -v

      - name: create env file
        working-directory: ./
        run: |
          pwd
          touch .env
          echo PORT=${{ secrets.PORT }} >> .env
          echo MONGODB_URI=${{ secrets.MONGODB_URI }} >> .env
          echo JWT_SECRET=${{ secrets.JWT_SECRET }} >> .env
          echo JWT_ALGO=${{ secrets.JWT_ALGO }} >> .env
          cat .env

      - name: build server files
        working-directory: ./
        run: |
          yarn
          yarn run build

###################################### ์ถ”๊ฐ€๋œ ๋ถ€๋ถ„ ######################################

      - name: zip file
        run: zip -r hous.zip ./dist ./scripts ./appspec.yml ./.env ./package.json

      - name: AWS configure credentials
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: ap-northeast-2

      - name: upload to S3
        run: aws s3 cp --region ap-northeast-2 ./hous.zip s3://hous-build/deploy/

      - name: deploy with AWS codeDeploy
        run: aws deploy create-deployment
          --application-name hous-codedeploy
          --deployment-config-name CodeDeployDefault.OneAtATime
          --deployment-group-name GROUP
          --s3-location bucket=hous-build,bundleType=zip,key=deploy/hous.zip

 

zip file step ์—์„œ๋Š” ๋ช…์‹œํ•œ ํŒŒ์ผ, ํด๋”๋“ค์„ hous.zip ํŒŒ์ผ๋กœ ์••์ถ•ํ•ด์ค๋‹ˆ๋‹ค.

AWS configure credentials step ์—์„œ๋Š” S3์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ IAM ์‚ฌ์šฉ์ž ํ‚ค ๊ฐ’์„ ๋“ฑ๋กํ•ด์ฃผ๊ณ 

upload to S3 step ์—์„œ ์‹ค์ œ๋กœ S3์— hous.zip ์••์ถ•ํŒŒ์ผ์„ ์˜ฎ๊ฒจ์ค๋‹ˆ๋‹ค.

deploy with AWS codeDeploy step ์—์„œ AWS CodeDeploy๊ฐ€ ์‹คํ–‰๋˜๊ณ  ๊ฐ€์žฅ ์•„๋žซ์ค„์— ์ง€์ •ํ•œ ๊ณณ์—์„œ ์••์ถ• ํŒŒ์ผ์„ ํ’€์–ด์„œ CodeDeploy์™€ ์—ฐ๊ฒฐ๋œ EC2 ์ธ์Šคํ„ด์Šค์— ๋ฐฐํฌํ•ด์ค๋‹ˆ๋‹ค.

๋ฐฐํฌ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด after-deploy.sh ํŒŒ์ผ์— ์ž‘์„ฑํ•ด๋‘” ๋ช…๋ น์–ด๋“ค์ด ์‹คํ–‰๋˜๋ฉด์„œ ์„œ๋ฒ„๊ฐ€ ์ž๋™์œผ๋กœ ์žฌ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

 

 

๐Ÿš€ CI/CD ์ ์šฉ ํ™•์ธ

 

 

 

โ—๏ธ์ƒํƒœ๊ฐ€ ์ „๋ถ€ ๋ณด๋ฅ˜์ค‘์œผ๋กœ ๋œจ๊ณ  ์ง„ํ–‰์ด ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ codedeploy-agent๊ฐ€ ๋ฌธ์ œ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค.

sudo service codedeploy-agent status ๋ช…๋ น์–ด๋กœ ์‹คํ–‰์ค‘์ธ์ง€ ํ™•์ธํ•ด๋ณด๊ณ 

์„ค์น˜๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์„ค์น˜๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์‹คํ–‰์ค‘์ด๋ผ๊ณ  ๋œฌ๋‹ค๋ฉด

sudo service codedeploy-agent restart ๋ช…๋ น์–ด๋กœ ์žฌ์‹คํ–‰ํ•˜๊ณ  ๋‹ค์‹œ ์‹œ๋„ํ•ด๋ด…์‹œ๋‹ค.

 

pm2 logs dist ๋ช…๋ น์–ด๋กœ pm2 log๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

CI/CD ์„œ๋ฒ„ ์žฌ์‹œ์ž‘๊นŒ์ง€ ๋ชจ๋‘ ์„ฑ๊ณตํ•œ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•œ๋ฒˆ ์„ธํŒ…์„ ํ•ด๋‘๋ฉด ๋” ์ด์ƒ ๊ท€์ฐฎ๊ฒŒ ์ˆ˜๋™์œผ๋กœ ๋ฐฐํฌํ•˜์ง€ ์•Š์•„๋„ ์„œ๋ฒ„๊ฐ€ ์ž๋™์œผ๋กœ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.