[๐Ÿ”Ž CI/CD] Github Actions๋ฅผ ํ†ตํ•œ AWS ๋ฐฐํฌ

dsfasdยท2022๋…„ 12์›” 7์ผ
0

CI/CD

CI : ํ…Œ์ŠคํŠธ ๋ฐ ๋นŒ๋“œ ์ž๋™ํ™”
CD : ๋ฐฐํฌ ์ž๋™ํ™”

CI,CD ๋„๊ตฌ ์ค‘ ํ•˜๋‚˜์ธ Github๋ฅผ ์ด์šฉํ•ด์„œ ๋ฐฐํฌํ•ด๋ณด์•˜๋‹ค.

๊นƒํ—ˆ๋ธŒ์— yml ํŒŒ์ผ์„ ํฌํ•จํ•˜์—ฌ, ์˜ฌ๋ฆฌ๊ณ  ์‹ถ์€ ํŒŒ์ผ๋“ค์„ commit์„ ํ•˜๋ฉด ๊นƒํ—ˆ๋ธŒ์—์„œ action์„ ์ด์šฉํ•˜์—ฌ ์ž๋™์œผ๋กœ ๋ฐฐํฌ๋ฅผ ํ•ด์ค€๋‹ค!

์ค€๋น„๋ฌผ :
๋ฐฐํฌํ•  ํŒŒ์ผ๋“ค, yml ํŒŒ์ผ,
AWS ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ํ‚ค (secrets.AWS_ACCESS_KEY_ID, secrets.AWS_SECRET_ACCESS_KEY)


GitHub Actions์„ ์œ„ํ•œ workflow ์ƒ์„ฑ

๊นƒํ—ˆ๋ธŒ GitHub Actions์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๋จผ์ € ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค.
์›Œํฌ ํ”Œ๋กœ์šฐ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ”„๋กœ์ ํŠธ ํด๋” ๋‚ด๋ถ€์— ์•„๋ž˜์™€ ๊ฐ™์ด ํด๋”๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค.

.github/workflows

๋ฐ˜๋“œ์‹œ ์œ„์˜ ํด๋” ๊ฒฝ๋กœ๋กœ ์ ์–ด์•ผ ๊นƒํ—ˆ๋ธŒ์—์„œ ์ธ์‹ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค!


yml ํŒŒ์ผ ์ƒ์„ฑ ๋ฐ secret ์„ค์ •

๊ทธ๋ฆฌ๊ณ  ์œ„ ํด๋”์— ํŒŒ์ผ์ด๋ฆ„.yml ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์„œ ๋„ฃ์–ด์ค€๋‹ค.

yml ํŒŒ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค.

name: 

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: 
        uses: actions/setup-node@v1
        with:
          node-version: '16'
      - run: npm install
      - run: npm test

์•„๋ž˜ ํด๋ผ์ด์–ธํŠธ ํŒŒ์ผ์—๋Š” AWS์™€ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๊ธฐ ์œ„ํ•œ AWS.ACCESS_KEY_ID์™€ AWS_SECRET_ACCESS_KEYํ‚ค๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.

ํ‚ค๋Š” ์ง์ ‘ ๋„ฃ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ  ๊นƒํ—ˆ๋ธŒ ํ™ˆํŽ˜์ด์ง€ > ๋ ˆํฌ์ง€ํ† ๋ฆฌ > settings > security > secrets > action secret ์— ์‹œํฌ๋ฆฟ ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ๋„ฃ์–ด์ค€๋‹ค.

# .github/workflows/client.yml
name: client
on:
  push:
    branches:
      reference
jobs:
  build:
    runs-on: ubuntu-20.04
    steps:
      - name: Checkout source code.
        uses: actions/checkout@v2
      - name: Install dependencies
        run: npm install
        working-directory: 
      - name: Build
        run: npm run build
        working-directory: 
      - name: SHOW AWS CLI VERSION
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          AWS_EC2_METADATA_DISABLED: true
        run: |
          aws --version
      - name: Sync Bucket
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          AWS_EC2_METADATA_DISABLED: true
        run: |
          aws s3 sync \
            --region ap-northeast-2 \
            build s3:{๋ฒ„ํ‚ท์ด๋ฆ„} \
            --delete
        working-directory: 

commit

์ž‘์„ฑ๋œ ํŒŒ์ผ๋“ค์„ ์ด์ œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์ปค๋ฐ‹ํ•˜๋ฉด action ํƒญ > All workflows ์—์„œ ์ถ”๊ฐ€๋œ ์•ก์…˜๋“ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  AWS > S3์— ๋“ค์–ด๊ฐ€๋ณด๋ฉด ํŒŒ์ผ๋“ค์ด ํ•จ๊ป˜ ์—…๋กœ๋“œ ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค ! ๐Ÿ‘€

profile
๊ธฐ๋ก์„ ์ •๋ฆฌํ•˜๋Š” ๊ณต๊ฐ„!

0๊ฐœ์˜ ๋Œ“๊ธ€