๐ ๏ธ Todo
๋ง๋ค์ด ๋ ์น์ Github Actions์ Amazon S3๋ฅผ ํ์ฉํด ๋น๋ ๋ฐ ๋ฐฐํฌํ์ฌ, ์ฌ์ฉ์๋ค์ด ์ฌ์ฉํ ์ ์๊ฒ ํ๊ธฐ
์ด๋ฒ ํด๋ผ์ด์ธํธ ๋ฐฐํฌ์ 3๋จ๊ณ
1. Source : Github ๋ธ๋์น์ ์ฝ๋๊ฐ commit ๋๋ฉด
2. Build : Github Actions์ YAML ํ์ผ์ ์ ํ ๋ช ๋ น์ด๋ฅผ ํ ๋๋ก Webpack์ ์ด์ฉํด build ํ๊ธฐ
3. Deploy : Github Actions์ YAML ํ์ผ์ ์ ํ ๋ช ๋ น์ด๋ฅผ ํ ๋๋ก S3๋ก build ๊ฒฐ๊ณผ๋ฅผ upload ํ๊ธฐ
๐ง YAML ํ์ผ์ ์ฝ๋ ์ ๊ธฐ
1. ํด๋น repository์ ๋ธ๋์น ์ด๋ฆ์ ์ ์ด์ค๋ค.
ํ์ฌ ๋ธ๋์น ๋ช ์ ํ์ธํ๋ ค๋ฉด git branch๋ผ๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅ ํ ํ์ธ, q๋ฅผ ๋๋ฌ ์ข ๋ฃํ๋ฉด ๋๋ค.
name: client
on:
push:
branches:
- reference # ๋ธ๋์น ๋ช
2. working-directory์๋ ์์ ํ ๋๋ ํ ๋ฆฌ ๋ช ์ ์ ์ด์ค๋ค.
๋๋ฉ์ธ ๋ช ์๋ ์ฃผ์!
jobs:
build:
runs-on: ubuntu-20.04
steps:
- name: Checkout source code.
uses: actions/checkout@v2
- name: Install dependencies
run: npm install # install ์ ๋ช
๋ น์ด
working-directory: ./my-agora-states-client-react # ์์
ํ ๋๋ ํ ๋ฆฌ ๋ช
3. install, build ์ ๋ช ๋ น์ด๋ค์ ์ ์ด์ค๋ค.
e.g. npm install, npm run build ๋ฑ
- name: Build
run: npm run build # build ์ ๋ช
๋ น์ด
working-directory: ./my-agora-states-client-react # ์์
ํ ๋๋ ํ ๋ฆฌ ๋ช
- name: SHOW AWS CLI VERSION
run: aws --version # aws version ํ์ธ ๋ช
๋ น์ด
4. yml ํ์ผ์ ์ํฌ๋ฆฟ ํค '์ด๋ฆ'์ ์ ๋ ฅํ๋ค.
์ฃผ์ํ ์ ์ ์ ๋ ์ํฌ๋ฆฟ ํค ์์ฒด๋ฅผ ์ ๋ ฅํ์ง ๋ง์์ผ ํ๋ค๋ ๊ฒ์ด๋ค. ์์ธํ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ๋ค.
(1) Github์ ํด๋น ๋ ํฌ์งํ ๋ฆฌ > Settings > ์ข์ธก์ Secrets and variables > Actions > [New repository secret]์ ๋๋ฌ AWS์์ ๋ฐ๊ธ๋ฐ์ ํค๋ฅผ ๋ฑ๋กํ๋ค.
(2) ๊นํ์ AWS_ACCESS_KEY๋ผ๊ณ ๋ฑ๋กํ๋ค๋ฉด > yml ํ์ผ์๋ AWS_ACCESS_KEY ๋ผ๊ณ ์ ๋ ฅํด์ผ ํ๋ค.
- name: Sync Bucket
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY }} # AWS access ํค
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_KEY }} # AWS secret ํค
AWS_EC2_METADATA_DISABLED: true
5. ๋ฒํท ์ด๋ฆ์ ๊ธฐ์ฌํ๋ค.
๋ฒํท ์ด๋ฆ์ S3 > ๋ฒํท > ์์ฑ์์ > Amazon ๋ฆฌ์์ค ์ด๋ฆ (ARN)์ ::: ๋ท๋ถ๋ถ์ ์ ๋ ฅํ๋ค.
run: |
aws s3 sync \ # ๋ฒํท์ ์์ฑ
--region ap-northeast-2 \ # ๋ฆฌ์
build s3://๋ฒํท ์ด๋ฆ \ # ๋ฒํท ์ด๋ฆ์ ๊ธฐ์ฌ
--delete
working-directory: ./my-agora-states-client-react # ์์
ํ ๋๋ ํ ๋ฆฌ ๋ช
๐คฉ ์์ฑํ client.yml ์ฝ๋
name: client
on:
# PUSH ------------------------------------------------
push:
branches:
- reference # ๋ธ๋์น ๋ช
jobs:
# BUILD ------------------------------------------------
build:
runs-on: ubuntu-20.04
steps:
- name: Checkout source code.
uses: actions/checkout@v2
# INSTALL ------------------------------------------------
- name: Install dependencies
run: npm install # install ์ ๋ช
๋ น์ด
working-directory: ./my-agora-states-client-react # ์์
ํ ๋๋ ํ ๋ฆฌ ๋ช
# BUILD ------------------------------------------------
- name: Build
run: npm run build # build ์ ๋ช
๋ น์ด
working-directory: ./my-agora-states-client-react # ์์
ํ ๋๋ ํ ๋ฆฌ ๋ช
# AWS VERSION ------------------------------------------------
- name: SHOW AWS CLI VERSION
run: aws --version # aws version ํ์ธ ๋ช
๋ น์ด
# AWS BUCKET and KEY ------------------------------------------------
- name: Sync Bucket
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY }} # AWS access ํค
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_KEY }} # AWS secret ํค
AWS_EC2_METADATA_DISABLED: true
run: |
aws s3 sync \
--region ap-northeast-2 \ # ๋ฆฌ์
build s3://๋ฒํท ์ด๋ฆ \ # ๋ฒํท ์ด๋ฆ์ ๊ธฐ์ฌ
--delete
working-directory: ./my-agora-states-client-react # ์์
ํ ๋๋ ํ ๋ฆฌ ๋ช
๐ฅณ ๋น๋์ ๋ฐฐํฌ
1. ์์ฑํ yml ํ์ผ์ ์ปค๋ฐ, ๊ทธ๋ฆฌ๊ณ ํธ์ํ๋ค.
2. ๊นํ์ ํด๋น repository > Actions์์ ํ์ธํ๋ค.
์๋์ ๊ฐ์ด ๋ ธ๋๋ถ > ์ด๋ก์ ์ฒดํฌํ์๋ก ๋ฐ๋๋ฉด ์ฑ๊ณต! (๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ค๋ฆด ๋ ์๊ทผ ๊ธด์ฅ๋๋ค... ๊ธฐ๋ ๋ฉํ ๐๐ป) ๋ง์ฝ ๋นจ๊ฐ์ X ํ์๊ฐ ๋ฌ๋ค๋ฉด ํด๋น ์๋ฌ๋ฅผ ํด๊ฒฐํ ํ, ๋ค์ ํธ์ํด์ผ ํ๋ค.
3. ์๋ํฌ์ธํธ๋ฅผ ํตํด ์ ์ํ๋ค.
AWS > S3 > ๋ฒํท > ์์ฑ > ์์ฑ ํ์ด์ง ๋งจ ํ๋จ์ '๋ฒํท ์น ์ฌ์ดํธ ์๋ ํฌ์ธํธ'๋ฅผ ํด๋ฆญํ๋ฉด
4. ์๋์ ๊ฐ์ด ๋ด๊ฐ ๋ง๋ ์น ์ฌ์ดํธ๊ฐ ๋ฌ๋ค!
'๐ ์์ธ ์ง์ > ์์๋๋ฉด ์ข์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฐ์คํฌ๋ฆฝํธ ์์ ๋ถ๋ ๋จ์ด๊ฐ ๊ถ๊ธํด - '๋ชจ๋' ํธ (0) | 2023.09.15 |
---|---|
๋งํฌ๋ค์ด์ผ๋ก ํ ๊ธ ๊ธฐ๋ฅ์ ์ธ ์ ์์๊น? (0) | 2023.06.30 |
์์๋๋ฉด ์ธ๋ฐ์๋ package.json๊ณผ package-lock.json์ ์ฐจ์ด (3) | 2023.04.30 |
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๊ฐ ์ UI/UX๋ฅผ ์์์ผ ํฉ๋๊น? (11) | 2023.04.16 |
Library vs. Framework ์ฐจ์ด์ ์ ํ์คํ๊ฒ ์ ๋ฆฌํ๊ธฐ (0) | 2023.04.02 |
๋๊ธ