CI/CD์ ๋ํด ์์๋ณด๊ณ ์ง์ ์ค์ตํ๋ ํ์ต์ ์งํํ๋ค.
CI๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๊ตฌํํ ๊ฒฝ์ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์๋ก์ด ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ๊ธฐ์ ์ผ๋ก ๋น๋ ๋ฐ ํ ์คํธ๋์ด ๊ณต์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ํตํฉ๋๊ธฐ์
์ฌ๋ฌ ๋ช ์ ๊ฐ๋ฐ์๊ฐ ๋์์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ๊ณผ ๊ด๋ จ๋ ์ฝ๋ ์์ ์ ํ ๊ฒฝ์ฐ ์๋ก ์ถฉ๋ํ ์ ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
Code - Build - Test - Release - Deploy - Operate - Plan
์ง์์ ์ธ ์๋น์ค ์ ๊ณต(Continuous Delivery) ๋ฐ ์ง์์ ์ธ ๋ฐฐํฌ(Continuous Deployment)๋ฅผ ์๋ฏธํ๋ค.
(๋ ์ฉ์ด๋ ์ํธ ๊ตํ์ ์ผ๋ก ์ฌ์ฉ๋๋ค.)
Release - Deploy - Operate ๋จ๊ณ์ ํด๋น
- Release: ๋ฐฐํฌ ๊ฐ๋ฅํ ์ํํธ์จ์ด ํจํค์ง๋ฅผ ์์ฑ
- Deploy: ํ๋ก๋น์ ๋์ ์คํํ๊ณ ์๋น์ค๋ฅผ ์ฌ์ฉ์์๊ฒ ๋
ธ์ถํ๋ค.(์ค์ง์ ์ธ ๋ฐฐํฌ)
- Operate: ์๋น์ค ํํฉ์ ํ์
ํ๊ณ ์๊ธธ ์ ์๋ ๋ฌธ์ ๋ฅผ ๊ฐ์ง
์ฝ๋ ๋ณ๊ฒฝ์ฌํญ์ ๋ณํฉ๋ถํฐ ํ๋ก๋์ ์ ์ ํฉํ ๋น๋ ์ ๊ณต์ ์ด๋ฅด๋ ๋ชจ๋ ๋จ๊ณ
ํ ์คํธ ์๋ํ์ ์ฝ๋ ๋ฐฐํฌ ์๋ํ๊ฐ ํฌํจ๋๋ค.
์ด ํ๋ก์ธ์ค๋ฅผ ์๋ฃํ๋ฉด ํ๋ก๋์ ์ค๋น๊ฐ ์๋ฃ๋ ๋น๋๋ฅผ ์ฝ๋ ๋ฆฌํฌ์งํ ์ด๋ ์๋์ผ๋ก ๋ฐฐํฌํ ์ ์๊ธฐ์ ์ด์ํ์ด ๋ณด๋ค ๋น ๋ฅด๊ณ ์์ฝ๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ก๋์ ์ผ๋ก ๋ฐฐํฌํ ์ ์๊ฒ ๋๋ค.
ํด๋ผ์ฐ๋ ๊ธฐ์ ๋ฐ์ ๊ณผ ๋ง๋ฌผ๋ ค ์ง์์ ํตํฉ๊ณผ ์ง์์ ๋ฐฐํฌ๊ฐ ๋น ๋ฅธ ์๋๋ก ์งํ๋๋ฉด์ CI/CD๋ฅผ ํ๋๋ก ๋ฌถ์ด์ ๋ค๋ฃจ๋ ๊ฒฝ์ฐ๊ฐ ์ ์ฐจ ์ฆ๊ฐํ๊ณ ์๋ค.
- ์์ฆ์ ๊ณ ๊ฐ์ ํผ๋๋ฐฑ์ ๋นจ๋ฆฌ ๋ฐ๊ธฐ ์ํด์๋ผ๋, ์๋น์ค๋ฅผ ์ค๋จํ์ง ์๊ธฐ ์ํด์๋ผ๋ ๋ฆด๋ฆฌ์ค๋ง ์ ๊ธฐ๋กํด ๋๊ณ ๋ฐ๋ก๋ฐ๋ก ๋ฐฐํฌํ๋ ์ฌ๋ก๊ฐ ์ฆ๊ฐํ๊ณ ์๋ค.
CI/CD๋ ์ง์์ ํตํฉ ๋ฐ ์ง์์ ์ ๊ณต(CD, Continuous Delivery)์ ๊ตฌ์ถ ์ฌ๋ก๋ง์ ์ง์นญํ ๋๋ ์๊ณ , ์ง์์ ํตํฉ, ์ง์์ ์ ๊ณต, ์ง์์ ๋ฐฐํฌ๋ผ๋ 3๊ฐ์ง ๊ตฌ์ถ ์ฌ๋ก ๋ชจ๋๋ฅผ ์๋ฏธํ๋ ๊ฒ์ผ ์๋ ์๋ค.
"์ง์์ ์ธ ์๋น์ค ์ ๊ณต"์ ๋๋ก ์ง์์ ์ธ ๋ฐฐํฌ์ ๊ณผ์ ๊น์ง ํฌํจํ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ๋๊ธฐ๋ ํ๋ค.
- CI/CD๋ ํ์ดํ๋ผ์ธ์ผ๋ก ํํ๋๋ ์ค์ ํ๋ก์ธ์ค ๋งํ๋ฉฐ, ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ง์์ ์ธ ์๋ํ ๋ฐ ์ง์์ ์ธ ๋ชจ๋ํฐ๋ง์ ์ถ๊ฐํ๋ ๊ฒ์ ์๋ฏธ
- ์ฉ์ด๋ ์ฌ๋ก๋ณ๋ก CI/CD ํ์ดํ๋ผ์ธ์ ๊ตฌํ๋ ์๋ํ ์์ค ์ ๋์ ๋ฐ๋ผ ๊ทธ ์๋ฏธ๊ฐ ๋ฌ๋ผ์ง๋ค.
๋๋ถ๋ถ์ ๊ธฐ์ ์์๋ CI๋ฅผ ๋จผ์ ์ถ๊ฐํ ๋ค์ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ผ๋ถ๋ก์ ๋ฐฐํฌ ๋ฐ ๊ฐ๋ฐ ์๋ํ๋ฅผ ๊ตฌํํด ๋๊ฐ๋ค.
ํด๋จผ ์๋ฌ?
์ฌ๋์ด ์๋์ ์ผ๋ก ๋ฐฐํฌ ๊ณผ์ ์ ์งํํ๋ ์ค์ ์๊ธฐ๋ ์ค์๋ค
ํด๋น ๊ณผ์ ์ ์ค๋ฌด์์ ๋ฐ๋ณต์ ์ธ ํ๋ก์ธ์ค์ด๊ธฐ ๋๋ฌธ์ ์ด๋ถ๋ถ์ ์ผ๋ จ์ ์๋ํ ๋จ๊ณ๋ก ๋ง๋ ๋ค๊ณ ๋ณผ ์ ์๋ค.
๊ตฌ์ถ๋ ํ์ดํ๋ผ์ธ์ ์ต์ ๋ฒ์ ์ ์ํํธ์จ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ฐ์ดํธํ๊ณ ์ ๊ณตํ๋
์ผ๋ จ์ ์ฒ๋ฆฌ ๋จ๊ณ์ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์๋์ผ๋ก ํ๋ ๊ฒ๋ณด๋ค
- ๋ ๋น ๋ฅด๊ณ ์์ ์ ์ด๋ฉฐ ํจ๊ณผ์ ์ผ๋ก ์ค์ฌ์ฃผ๊ณ
- CI/CD ์ธํ๋ผ์์ ํธํ์ฑ๊ณผ ํจ์จ์ฑ์ ๋์ฌ์ค๋ค.
์ํฌํ๋ก์ฐ ?
- ํ๋ ์ด์์ ์์ ์ด ์คํ๋๋ ์๋ํ ํ๋ก์ธ์ค
- ๊ฐ ์์ ์ ์์ฒด ๊ฐ์ ๋จธ์ ๋๋ ์ปจํ ์ด๋ ๋ด๋ถ์์ ์คํ๋๋ค.
.yml
(ํน์.yaml
) ํ์ผ์ ์ํด ๊ตฌ์ฑ๋๋ค.- ํ ์คํธ, ๋ฐฐํฌ ๋ฑ ๊ธฐ๋ฅ์ ๋ฐ๋ผ ์ฌ๋ฌ ๊ฐ์ ์ํฌํ๋ก์ฐ๋ฅผ ๋ง๋ค ์ ์๋ค.
- ์์ฑ๋ ์ํฌํ๋ก์ฐ๋
.github/workflows
๋๋ ํ ๋ฆฌ ์ดํ์ ์์นํด์ผ ํ๋ค.๊ณต๊ฐ(public) ๋ ํฌ์งํ ๋ฆฌ๋ก ํด์ผ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์๋ค.
๋ฐฐ์ ๋ ๋ด์ฉ์ ํ ๋๋ก ์ค์ต์ ์งํ ํ๋ค.
์ด๋ฐ์ ๋ฌด์จ ๋ง์ธ์ง.. ์ดํด๊ฐ ๊ฐ์ง ์์์ง๋ง...ใ
๊ธฐ์กด์ ์๋ ๋ ํฌ์งํ ๋ฆฌ๋ก ์งํ์ ํ๋ค.
git clone
ํ YAML
ํ์ผ์ ์ ํ ๋ช
๋ น์ด๋ฅผ ํ ๋๋ก Webpack์ ์ด์ฉํด ๋น๋ํ๋ค.
client.yml
ํ์ผ์ ๋ง๋ค์ด ์ฃผ์๋ค.
name: client
on:
push:
branches:
- reference
ํ์ผ ๋ช
๊ณผ branch
๋ช
์ ์์ฑํด ์ฃผ๋ฉด ๋๋ ๋ฏ ์ถ์ด ์์ฑํด ์ฃผ์๋ค.
jobs:
build:
runs-on: ubuntu-20.04
steps:
- name: Checkout source code.
uses: actions/checkout@v2
- name: Install dependencies
run: npm install
working-directory: ./my-agora-states-client-react
name
์ ํด๋น ํ๋ ๋ช
์นญ์ ๋ปํ๋ ๊ฑฐ ๊ฐ๊ณ
run
์ ํด๋น ํ๋์ ์คํํ๋ ์ฝ๋๋ฅผ ์์ฑํด ์ฃผ๋ฉด ๋๋ ๋ฏ ์ถ์ด ์์ฑํด ์ฃผ์๋ค.
working-directory๋ ์คํํ ํ์ผ ๊ฒฝ๋ก์ธ ๋ฏ ์ถ๋ค..
build ๋ถ๋ถ๋ ๋์ผํ๊ฒ ์์ฑํด ์ฃผ์๋ค.
AWS๋ก ๋ฐฐํฌ๋ฅผ ํ๊ธฐ ๋๋ฌธ์
- name: SHOW AWS CLI VERSION
run: |
aws --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
AWS_ACCESS_KEY_ID
, AWS_SECRET_ACCESS_KEY
๋ ๋
ธ์ถ ๋๋ฉด ์๋๋ ๋ถ๋ถ์ด๋ผ
ํ๋ ์ฝ๋ฉํ๋ฉด ์ ๋๋ค.
์ฒ์์๋ ํ๊ฒฝ ๋ณ์๋ก ์์ฑํ๋ ์ค ์์์ง๋ง github์์ ์ ์ฅ ํ ์ ์์๋ค.
โฌ๏ธ
github actions ์ํฌ๋ฆฟ ํค ์ ์ฅ ํ๋ ๋ฒ
run: |
aws s3 sync \
--region ap-northeast-2 \
build s3://fe-119-jieun419-s3 \
--delete
working-directory: ./my-agora-states-client-react
๊ตฌ๊ธ๋งํด๋ณด๋
aws s3 sync \
๋ sync, cp์ ๋ฐ๋ผ ์ฐจ์ด๊ฐ ์๋ค.
--region ap-northeast-2 \
๋ฆฌ์ ์ ๋ํ ๋ด์ฉ์ด๋ค.
build s3://fe-119-jieun419-s3 \
ํด๋น ๋ถ๋ถ์ ๋ฒํท ์ด๋ฆ์ ์์ฑํด ์ฃผ๋ฉด ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฑ๊ณตํ ํ๋ฉด ใ
ใ
์ด๋ฐ์ ์๊พธ ์ด๋๊ฐ ๋ฌธ์ ์ด์ง? ํ์๋ค.
์๊ณ ๋ณด๋ working-directory
๊ฐ ๋ง์ง ์์์๋ค.
๊ทธ๋ถ๋ถ์ ์ ๋ถ ์์ ํด ์ฃผ๋ ํด๊ฒฐํ ์ ์์๋ค.
AWS S3์์ ํ์ธ ํ์ ๋๋ ์ ๋์๋ค.
์ค์ต ์ค build
๊น์ง๋ ๋ฌด๋ํ๊ฒ ์ ๋์ด ๊ฐ ์ ์์๋ค.
aws s3
์ฌ๊ธฐ ๋ถํฐ ๋ญ๊ฐ ๊ฒฝ๋ก๋ฅผ ์์ฑํด์ผํ๋ ๊ฑฐ ๊ฐ์๋ฐ ์ด๋ป๊ฒ ์์ฑํด์ผํ๋์ง ๊ฐ์ด ์กํ์ง ์์
์๊ฐ ์๋น๊ฐ ๊ฝค ๋์๋ค.
๊ตฌ๊ธ๋ง ํ๋ค ๋ค๋ฅธ ๋ถ์ด ํ์ จ๋ ๋ธ๋ก๊ทธ๋ฅผ ๋ณด๊ณ ์ฐธ๊ณ ๋ฅผ ํ๋ค.
๊ฐ์ฌํฉ๋๋ค.๐โโ๏ธ
๋ํ ymlํ์ผ์ ์์ฑํ๋ฉด์ ์ด๋ฐ์ ์ด๊ฒ ๋ฌด์จ ๋ง์ด์ง? ์ถ์์ง๋ง
์์ ๊ณต๋ถํ๋ ๋ด์ฉ์ ์๊ฐํด ๋ณด๋ฉด ์๋ํ ๋ฐฐํฌ์ด๊ธฐ์
ํด๋น ๋ช
๋ น์ด์ ๊ทธ ๋ช
๋ น์ด๊ฐ ์คํ๋ ํด๋๋ฅผ ์ง์ ํ๋ ๊ฒ ๊ฐ์๋ค.
์ค์ต์ ํตํด ํ๋์ฉ ์ดํดํ๊ฒ ๋๋ ๊ฒ ๊ฐ๋ค.