Front End CI CD - TEAM-ARK/inflearn-clone-front GitHub Wiki

CSR( Cliend Side Rendering)

  • CSR์˜ ๊ฒฝ์šฐ ํ”„๋ก ํŠธ์„œ๋ฒ„๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— CI๋งŒ ๊ตฌ์ถ•
  • ๊ตฌ์ถ• ์ ˆ์ฐจ
    1. github action์„ ์‚ฌ์šฉํ•˜๊ณ  eslint๋ฅผ ์ ์šฉํ•˜์—ฌ push ์ „์— eslint ๊ทœ์•ฝ์— ๋งž์ง€ ์•Š์œผ๋ฉด push๊ฐ€ ๋˜์ง€ ์•Š๋„๋ก ํ•จ
    2. ํ…Œ์ŠคํŠธ ์ง„ํ–‰
      • ์œ ๋‹›ํ…Œ์ŠคํŠธ( JEST)
      • ํ†ตํ•ฉํ…Œ์ŠคํŠธ( JEST)
      • E2E ํ…Œ์ŠคํŠธ( Cypress)
    3. ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ
    4. AWS S3์— ์—…๋กœ๋“œ
      • ์—…๋กœ๋“œ ํ›„ S3์—์„œ index.html์— ์ ‘๊ทผํ•˜์—ฌ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ์„ค์ •

SSR( Server Side Rendering)

  • SSR์˜ ๊ฒฝ์šฐ ํ”„๋ก ํŠธ์„œ๋ฒ„๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฑ์—”๋“œ์™€ ๊ฐ™์ด CI/CD๊นŒ์ง€ ๊ตฌ์ถ•( Nextjs ๊ธฐ์ค€)
  • ๊ตฌ์ถ• ์ ˆ์ฐจ
    1. github action์„ ์‚ฌ์šฉํ•˜๊ณ  eslint๋ฅผ ์ ์šฉํ•˜์—ฌ push ์ „์— eslint ๊ทœ์•ฝ์— ๋งž์ง€ ์•Š์œผ๋ฉด push๊ฐ€ ๋˜์ง€ ์•Š๋„๋ก ํ•จ
    2. ํ…Œ์ŠคํŠธ ์ง„ํ–‰
      • ์œ ๋‹›ํ…Œ์ŠคํŠธ( JEST)
      • ํ†ตํ•ฉํ…Œ์ŠคํŠธ( JEST)
      • E2E ํ…Œ์ŠคํŠธ( Cypress)
    3. ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ
    4. AWS EC2์— ๋ฐฐํฌ
      • ์šฐ๋ถ„ํˆฌ์„œ๋ฒ„์—์„œ ๋นŒ๋“œํ•˜๊ณ  ๋นŒ๋“œ ๋œ ์ฝ”๋“œ๋ฅผ PM2์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰

๋นŒ๋“œ

๋นŒ๋“œ๋ž€ ๋ณดํ†ต webpack๊ณผ ๊ฐ™์€ ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋ง์„ ์‚ฌ์šฉํ•ด์„œ ํŠธ๋žœ์Šค ์ปดํŒŒ์ผ๋ง ์ž‘์—…์„ ๋นŒ๋“œ๋ผ๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ES5 ํ˜น์€ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์™€ ๊ฐ™์€ ์–ธ์–ด๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐ”๋กœ ์ฝ์–ด์„œ ์ฒ˜๋ฆฌ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋ณ€ํ™˜์ด ์ด๋ฃจ์–ด์ ธ์•ผ ํ•œ๋‹ค. ์ด๋Ÿฐ๊ฒƒ๋“ค์„ webpack ํ˜น์€ tsc๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠธ๋žœ์Šค์ปดํŒŒ์ผ์„ ์ง„ํ–‰ํ•˜๋Š”๊ฒƒ์„ ๋นŒ๋“œ๋ผ๊ณ  ํ•œ๋‹ค

ํ…Œ์ŠคํŠธ

์œ ๋‹›, ํ†ตํ•ฉ, e2e ํ…Œ์ŠคํŠธ๋Š” ๊ฐ๊ฐ ๋ฒ”์œ„๊ฐ€ ๋‹ค๋ฅด๋ฉฐ ๋ชฉ์ ๋„ ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅด๋‹ค. ํ…Œ์ŠคํŠธ๋กœ์ง์€ ๊ตญ์†Œ๋ถ€๋ถ„์˜ ์œ ๋‹›ํ…Œ์ŠคํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๊ฑฐ๋‚˜ e2e ํ…Œ์ŠคํŠธ๋ฅผ ๋„์ž…ํ•  ์—ฌ๋ ฅ์ด ์žˆ๋Š” ํŒ€์—์„œ ๋„์ž…์„ ๊ณ ๋ คํ•˜๋Š”๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค. ์œ ๋‹›, ํ†ตํ•ฉ์— ๋Œ€ํ•ด์„œ๋Š” ์ค‘์š”ํ•œ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์—๋งŒ ์„ ํƒ์ ์œผ๋กœ ์ ์šฉํ•˜๊ณ  ๋ชจ๋“  ๋ถ€๋ถ„์— ์ ์šฉํ•  ํ•„์š”๋Š” ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๊ฐ ํŒ€์›์ด ์ปค๋ฐ‹ํ•˜๋Š” ์‹œ์ ์— ํ…Œ์ŠคํŠธ๋ฅผ ๋Œ๋ฆฐ๋‹ค๋ฉด ๋น„๊ต์  ๊ฐ„๋‹จํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ๋Š” ํ•„์ˆ˜ ํ…Œ์ŠคํŠธ๋งŒ ๋Œ๋ฆฌ๊ณ  e2e์˜ ๊ฒฝ์šฐ ํ…Œ์ŠคํŠธ ์‹œ๊ฐ„๋„ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ณ  ๋ฒ”์œ„๋„ ๋„“๊ธฐ ๋•Œ๋ฌธ์— ์Šคํ…Œ์ด๋”ฉ ๋ฐฐํฌ์— ์‹ค์‹œํ•˜๋Š”๊ฒŒ ๋‚ซ๋‹ค๊ณ  ๋ณธ๋‹ค. ์œ ๋‹›ํ…Œ์ŠคํŠธ์˜ ๊ฒฝ์šฐ๋„ ๋ฒ”์œ„์— ๋”ฐ๋ผ ํ…Œ์ŠคํŠธ ์‹œ์ ์ด ๋‹ฌ๋ผ์ ธ์•ผ ํ•œ๋‹ค๊ณ ๋ณด๊ณ  ์ค‘์š”ํ•œ๊ฑด ๋„ˆ๋ฌด ๋นˆ๋ฒˆํ•œ ํ…Œ์ŠคํŠธ ๋•Œ๋ฌธ์— ์ž‘์—…์— ๋”œ๋ ˆ์ด๊ฐ€ ์ƒ๊ฒจ์„œ ์•ˆ๋œ๋‹ค๊ณ  ๋ณด๋ฉฐ ๊ฐ„๋‹จํ•˜๊ณ  ํ•„์ˆ˜์ ์ธ ๋ถ€๋ถ„์€ commit ์‹œ์ ์— ์ฒดํฌํ•˜๊ณ  ๋ฒ”์œ„๊ฐ€ ๋„“๋‹ค๋ฉด ๋ธŒ๋Ÿฐ์น˜๋‹จ์œ„๋กœ ๋ณ‘ํ•ฉ์‹œ์ ์— ํ•˜๋Š”๊ฒŒ ๋‚ซ๋‹ค๊ณ  ๋ณธ๋‹ค.( ์‹œ๋‹ˆ์–ด ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์˜๊ฒฌ)

์ฐธ๊ณ 

React Test ์‹œ๋ฆฌ์ฆˆ

์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ React Test