Skip to content

Latest commit

ย 

History

History
99 lines (72 loc) ยท 2.24 KB

06-ci-cd-setup.md

File metadata and controls

99 lines (72 loc) ยท 2.24 KB

๋ฐฐํฌ ์ž๋™ํ™”ํ•˜๊ธฐ CI/CD

  • CI (Continuous Integration): ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ์ฝ”๋“œ ์ถฉ๋Œ์„ ์˜ˆ๋ฐฉํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ๊ธฐ์ ์œผ๋กœ ์ €์žฅ์†Œ๋ฅผ ์ž๋™ ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธ
  • CD (Continuous Delivery): ์ €์žฅ์†Œ์˜ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‹œ ์ž๋™์œผ๋กœ ์„œ๋ฒ„์— ๋ฐฐํฌ

๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ

ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ ๊ฒฝ๋กœ์— scripts/deploy.sh ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค.
์ด ์Šคํฌ๋ฆฝํŠธ๋Š” GitHub Actions๋กœ main ๋ธŒ๋žœ์น˜ ๋ณ€๊ฒฝ ์‹œ ์ตœ์‹  ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์„œ๋ฒ„์— ๋ฐฐํฌ, ๋นŒ๋“œ, ์‹คํ–‰ํ•œ๋‹ค.

scripts/deploy.sh

#!/bin/bash

npm -g install yarn

source ~/.bash_profile
cd ~/git/react-api-cicd/
git pull origin main

# front-end
cd frontend/
yarn install
yarn build
cp -rf dist/* ../backend/public

# back-end
cd ../backend/
yarn install

# pm2
pm2 stop react-api-cicd
pm2 start bin/www --name react-api-cicd --update-env
sleep 2
pm2 list

์‹คํ–‰ ๊ถŒํ•œ ๋ถ€์—ฌ

chmod ./scripts/deploy.sh

์ฝ”๋“œ๋ฅผ Github์— Pushํ•œ ํ›„, SSH๋กœ ์ ‘์†ํ•œ ์„œ๋ฒ„์—์„œ git pull origin main ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•œ๋‹ค.


GitHub Actions ๊ตฌ์„ฑํ•˜๊ธฐ

CI/CD ๋„๊ตฌ๋กœ Jenkins๊ฐ€ ๊ฐ€์žฅ ์œ ๋ช…ํ•˜์ง€๋งŒ, ์ด๋ฒˆ์—๋Š” GitHub Actions๋ฅผ ํ†ตํ•ด์„œ ๊ตฌ์„ฑํ•ด ๋ณธ๋‹ค.
ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ ๊ฒฝ๋กœ์— .github/workflows/deploy-main.yml ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ์•„๋ž˜ ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

name: Deploy on push to main

on:
  push:
    branches: [main]

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
      # ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ฒดํฌ์•„์›ƒ
      - name: Checkout repository
        uses: actions/checkout@v2

      # SSH๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰
      - name: executing remote ssh commands using key
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USERNAME }}
          key: ${{ secrets.KEY }}
          port: ${{ secrets.PORT }}
          script: |
            ./git/react-api-cicd/scripts/deploy.sh

Secrets ์„ค์ •

GitHub์—์„œ ํ”„๋กœ์ ํŠธ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ Settings > Secrets > Actions๋กœ ์ด๋™ํ•˜์—ฌ ๋‹ค์Œ ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

  • HOST: ์„œ๋ฒ„ ๋„๋ฉ”์ธ
  • USERNAME: ec2-user
  • KEY: react-api-cicd-kp.pem ํŒŒ์ผ ๋‚ด์šฉ
  • PORT: 22