Skip to content

๐Ÿค– Refactor: ์ฝ”๋“œ์—๋””ํ„ฐ ์ฝ”๋“œ ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ ๋ฐ ๋ถ„๋ฆฌ๋œ ๋ธŒ๋ฆฟ์ง€ ๋ ˆ์ด์–ด ์ ์šฉํ•œ ์„ธ์…˜ ์ปค์Šคํ…€ ํ›… ๊ตฌํ˜„ #723

๐Ÿค– Refactor: ์ฝ”๋“œ์—๋””ํ„ฐ ์ฝ”๋“œ ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ ๋ฐ ๋ถ„๋ฆฌ๋œ ๋ธŒ๋ฆฟ์ง€ ๋ ˆ์ด์–ด ์ ์šฉํ•œ ์„ธ์…˜ ์ปค์Šคํ…€ ํ›… ๊ตฌํ˜„

๐Ÿค– Refactor: ์ฝ”๋“œ์—๋””ํ„ฐ ์ฝ”๋“œ ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ ๋ฐ ๋ถ„๋ฆฌ๋œ ๋ธŒ๋ฆฟ์ง€ ๋ ˆ์ด์–ด ์ ์šฉํ•œ ์„ธ์…˜ ์ปค์Šคํ…€ ํ›… ๊ตฌํ˜„ #723

Workflow file for this run

name: local์—์„œ CI๊ฐ€ ์‹คํ–‰ ์ค‘ ์ผ๋•Œ
# dev, main ๋ธŒ๋Ÿฐ์น˜์— push, pull_request ํ• ๋•Œ๋Š” ์ด ๊ณผ์ •์ด ์ƒ๋žต๋ฉ๋‹ˆ๋‹ค.
on:
push:
branches-ignore:
- main
- dev
pull_request:
branches-ignore:
- main
- dev
# ๊ฐ™์€ ๋ธŒ๋Ÿฐ์น˜์—์„œ๋Š” ๊ธฐ์กด์— ๊ฒƒ์— ๋ฐ”๋กœ push ํ•˜๋ฉด ์ „์— ๊ฒƒ์„ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค.
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
jobs:
# ๋ฐฑ์—”๋“œ๋Š” ๋‹จ์œ„ํ…Œ์ŠคํŠธ + ํ†ตํ•ฉํ…Œ์ŠคํŠธ ์ง„ํ–‰ ํ›„ -> docker build -> docker ๋ฐฑ์—”๋“œ ํ†ตํ•ฉํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
main-backend-test:
name: jest๋ฅผ ํ™œ์šฉํ•œ main_backend ํ…Œ์ŠคํŠธ
runs-on: ubuntu-22.04
steps:
# ํ˜„์žฌ ๋ธŒ๋Ÿฐ์น˜๋ฅผ ์ด ํ”„๋กœ์„ธ์Šค์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
- name: Checkout backend
uses: actions/checkout@v5
# pnpm์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋กpnpm์„ ์„ค์ •ํ•œ๋‹ค.
- name: pnpm ์‚ฌ์šฉ์„ ์œ„ํ•œ ์„ธํŒ…
uses: pnpm/action-setup@v4
with:
version: 10
# nodejs๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
# pnpm-lock.yaml์ด ์ด ์ „์—ญ cache๋ฅผ ์ฐธ๊ณ ํ•˜๋„๋ก ํ•œ๋‹ค.
- name: nodejs ์„ค์ •
uses: actions/setup-node@v5
with:
node-version: 22
cache: "pnpm"
cache-dependency-path: ./rep/main_backend/pnpm-lock.yaml
# pnpm์„ ์ด์šฉํ•ด์„œ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ( pnpm-lock.yaml์„ ์‚ฌ์šฉ )
- name: backend package ์„ค์น˜
working-directory: ./rep/main_backend
run: pnpm install --frozen-lockfile
# ๋ฐฑ์—”๋“œ ๊ด€๋ จ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ถ”๊ฐ€
- name: backend ํ™˜๊ฒฝ๋ณ€์ˆ˜ ํŒŒ์ผ ์ถ”๊ฐ€
working-directory: ./rep/main_backend
run: echo "${{ secrets.NODE_MAIN_BACKEND_LOCAL_ENV }}" > .env
# backend ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์‹คํ–‰
- name: backend ๋‹จ์œ„ํ…Œ์ŠคํŠธ ์‹คํ–‰
working-directory: ./rep/main_backend
run: pnpm test:unit
# backend ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์‹คํ–‰ - ์ถ”ํ›„ ์ถ”๊ฐ€
# tool backend test ( main_backend์™€ ๊ฑฐ์˜ ๋™์ผํ•œ ๋กœ์ง ์ž…๋‹ˆ๋‹ค. )
tool-backend-test:
name: jest๋ฅผ ํ™œ์šฉํ•œ tool_backend ํ…Œ์ŠคํŠธ
runs-on: ubuntu-22.04
steps:
- name: Checkout backend
uses: actions/checkout@v5
- name: pnpm ์‚ฌ์šฉ์„ ์œ„ํ•œ ์„ธํŒ…
uses: pnpm/action-setup@v4
with:
version: 10
- name: nodejs ์„ค์ •
uses: actions/setup-node@v5
with:
node-version: 22
cache: "pnpm"
cache-dependency-path: ./rep/tool_backend/pnpm-lock.yaml
- name: backend package ์„ค์น˜
working-directory: ./rep/tool_backend
run: pnpm install --frozen-lockfile
# ๋ฐฑ์—”๋“œ ๊ด€๋ จ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ถ”๊ฐ€
- name: backend ํ™˜๊ฒฝ๋ณ€์ˆ˜ ํŒŒ์ผ ์ถ”๊ฐ€
working-directory: ./rep/tool_backend
run: echo "${{ secrets.NODE_TOOL_BACKEND_LOCAL_ENV }}" > .env
# backend ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์‹คํ–‰
- name: backend ๋‹จ์œ„ํ…Œ์ŠคํŠธ ์‹คํ–‰
working-directory: ./rep/tool_backend
run: pnpm test:unit
# ํ”„๋ก ํŠธ์—”๋“œ ํ…Œ์ŠคํŠธ ์ง„ํ–‰ -> ์ถ”ํ›„ ์ถ”๊ฐ€
# ๋นŒ๋“œ ํ›„ -> ๋นŒ๋“œ ๋œ ์ปจํ…Œ์ด๋„ˆ ํ…Œ์ŠคํŠธ
docker-build-and-integration-test:
name: Docker image ๋นŒ๋“œ ํ›„ ํ†ตํ•ฉํ…Œ์ŠคํŠธ
runs-on: ubuntu-22.04
needs:
- main-backend-test
- tool-backend-test
# ๋‚˜์ค‘์— ํ”„๋ก ํŠธ๋„ ์ถ”๊ฐ€ - ํ…Œ์ŠคํŠธ
steps:
- name: Checkout docker
uses: actions/checkout@v5
- name: docker ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •(backend)
run: |
echo "${{ secrets.NODE_MAIN_BACKEND_LOCAL_ENV }}" > .env.main.backend
echo "${{ secrets.NODE_TOOL_BACKEND_LOCAL_ENV }}" > .env.tool.backend
echo "${{ secrets.NODE_FRONTEND_LOCAL_ENV }}" > ./frontend/.env.frontend
# frontend๋„ ํ•„์š”ํ•˜๋ฉด ์ถ”๊ฐ€
# docker-compose๋ฅผ ํ™œ์šฉํ•ด์„œ ํ•œ๋ฒˆ์— buildํ•˜๊ณ  run
- name: docker compose build and run
run: |
docker compose -f docker-compose.local.yml up -d
# ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ง„ํ–‰
- name: ํ†ตํ•ฉํ…Œ์ŠคํŠธ script ๊ถŒํ•œ ๋ถ€์—ฌ
working-directory: ./test/intergration-build-test
run: |
# ๋‚˜์ค‘์— ํ†ตํ•ฉํ…Œ์ŠคํŠธ ์ถ”๊ฐ€๋˜๋ฉด ์—ฌ๊ธฐ์— ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค.
chmod +x backend-intergration-test.sh
chmod +x frontend-intergration-test.sh
# ๋ฐฑ์—”๋“œ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ง„ํ–‰
- name: backend ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ง„ํ–‰
working-directory: ./test/intergration-build-test
run: ./backend-intergration-test.sh ${{ vars.MAIN_BACKEND_LOCAL_URL }} ${{ vars.TOOL_BACKEND_LOCAL_URL }}
# ํ”„๋ก ํŠธ์—”๋“œ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ง„ํ–‰
- name: frontend ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ง„ํ–‰
working-directory: ./test/intergration-build-test
run: ./frontend-intergration-test.sh ${{ vars.FRONTEND_LOCAL_URL }}
# ๋งŒ์•ฝ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์—ฌ๊ธฐ์„œ ๋””๋ฒ„๊น… ํ•ด์•ผ ํ•œ๋‹ค.
- name: docker ์—๋Ÿฌ ๋กœ๊น…
if: failure()
run: |
docker ps -a
echo "==== tool-backend logs ===="
docker logs --tail=200 tool-backend-app || true
echo "==== main-backend logs ===="
docker logs --tail=200 main-backend-app || true
echo "==== frontend logs ===="
docker logs --tail=200 frontend || true