CI : ํ ์คํธ ๋ฐ ๋น๋ ์๋ํ
CD : ๋ฐฐํฌ ์๋ํ
CI,CD ๋๊ตฌ ์ค ํ๋์ธ Github๋ฅผ ์ด์ฉํด์ ๋ฐฐํฌํด๋ณด์๋ค.
์ค๋น๋ฌผ :
๋ฐฐํฌํ ํ์ผ๋ค
, yml ํ์ผ
,
AWS ๋ฐฐํฌ๋ฅผ ์ํ ํค (secrets.AWS_ACCESS_KEY_ID, secrets.AWS_SECRET_ACCESS_KEY)
๊นํ๋ธ GitHub Actions์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ํฌํ๋ก์ฐ๋ฅผ ๋จผ์ ์์ฑํด์ผ ํ๋ค.
์ํฌ ํ๋ก์ฐ๋ฅผ ์์ฑํ๊ธฐ ์ํด์๋ ํ๋ก์ ํธ ํด๋ ๋ด๋ถ์ ์๋์ ๊ฐ์ด ํด๋๋ฅผ ์์ฑํด์ผ ํ๋ค.
.github/workflows
๋ฐ๋์ ์์ ํด๋ ๊ฒฝ๋ก๋ก ์ ์ด์ผ ๊นํ๋ธ์์ ์ธ์ํ๋ค๊ณ ํ๋ค!
๊ทธ๋ฆฌ๊ณ ์ ํด๋์ ํ์ผ์ด๋ฆ.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:
์์ฑ๋ ํ์ผ๋ค์ ์ด์ ๋ ํฌ์งํ ๋ฆฌ์ ์ปค๋ฐํ๋ฉด action ํญ > All workflows ์์ ์ถ๊ฐ๋ ์ก์
๋ค์ ํ์ธํ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ AWS > S3์ ๋ค์ด๊ฐ๋ณด๋ฉด ํ์ผ๋ค์ด ํจ๊ป ์
๋ก๋ ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค ! ๐