2022.08.08(Mon)

[TIL] Day72
[SEB FE] Day73

β˜‘οΈ λ°°ν¬ μžλ™ν™”

: 1번 클릭 / λͺ…λ Ήμ–΄ μž…λ ₯을 톡해 전체 배포 과정을 μžλ™μœΌλ‘œ μ§„ν–‰ν•˜λŠ” 것

  • μ‹œκ°„ μ ˆμ•½
  • Human Error λ°©μ§€
    • Human Error? μ‚¬λžŒμ΄ μˆ˜λ™μ μœΌλ‘œ 배포 과정을 μ§„ν–‰ν•˜λŠ” 쀑에 μƒκΈ°λŠ” μ‹€μˆ˜

πŸ”· λ°°ν¬ μžλ™ν™” Pipeline

  • Pipeline? μ†ŒμŠ€ μ½”λ“œ 관리뢀터 μ‹€μ œ μ„œλΉ„μŠ€λ‘œμ˜ 배포 과정을 μ—°κ²°ν•˜λŠ” ꡬ쑰
    • 전체 배포 과정을 μ—¬λŸ¬ λ‹¨κ³„λ‘œ 뢄리 (단계별 순차적으둜 μ£Όμ–΄μ§„ μž‘μ—…(Actions)λ“€ μˆ˜ν–‰)
  1. Source단계: 원격 μ €μž₯μ†Œ μ†ŒμŠ€ μ½”λ“œμ— λ³€κ²½ 사항 λ°œμƒ β†’ 이λ₯Ό κ°μ§€ν•˜κ³  λ‹€μŒ λ‹¨κ³„λ‘œ μ „λ‹¬ν•˜λŠ” μž‘μ—… μˆ˜ν–‰
  2. Build단계: 전달받은 μ½”λ“œλ₯Ό 컴파일, λΉŒλ“œ, ν…ŒμŠ€νŠΈν•˜μ—¬ 가곡 & μƒμ„±λœ 결과물을 λ‹€μŒ λ‹¨κ³„λ‘œ μ „λ‹¬ν•˜λŠ” μž‘μ—… μˆ˜ν–‰
  3. Deploy단계: 전달받은 결과물을 μ‹€μ œ μ„œλΉ„μŠ€μ— λ°˜μ˜ν•˜λŠ” μž‘μ—… μˆ˜ν–‰

πŸ™Œ CI/CD Pipeline

  • CI(지속적 톡합): Plan β†’ Code β†’ Build β†’ Test β†’
  • CD(지속적 배포): Release β†’ Deploy β†’ Operate β†’ Plan

πŸ”Έ μ§€μ†μ  톡합 (CI; continuous integration)

: νŒ€ ꡬ성원이 각자의 μž‘μ—…μ„ 자주 ν†΅ν•©ν•˜λŠ” SW 방식

βœ”οΈ λͺ¨λ“  μ½”λ“œ λ³€ν™”λ₯Ό ν•˜λ‚˜μ˜ Repositoryμ—μ„œ κ΄€λ¦¬ν•˜λŠ” 것뢀터 μ‹œμž‘~!
βœ”οΈ μž¦μ€ Pull Repust & Merge둜 μ½”λ“œλ₯Ό 자주 톡합 (기본적인 ν…ŒμŠ€νŠΈλ„ μž‘λ™ κ°€λŠ₯)
πŸ‘‰ κ° κ°œλ°œν•œ μ½”λ“œλ₯Ό 이λ₯Έ μ‹œμ μ— 자주 ν•©μΉ˜κ³ , 자주 ν…ŒμŠ€νŠΈ ν•΄λ³Ό 수 있음!! β†’ 효율적인 개발 πŸ‘

  • Code: κ°œλ°œμžκ°€ μ½”λ“œλ₯Ό μ½”λ“œ μ €μž₯μ†Œμ— Push
  • Build: μ½”λ“œ μ €μž₯μ†Œλ‘œλΆ€ν„° μ½”λ“œλ₯Ό κ°€μ Έμ™€μ„œ (Unit Test ν›„) Build
  • (Test): μ½”λ“œ Build 결과물이 λ‹€λ₯Έ μ»΄ν¬λ„ŒνŠΈμ™€ 잘 ν†΅ν•©λ˜λŠ”μ§€ 확인

βœ‹ Build? 개발자만 읽을 수 μžˆλŠ” μ†ŒμŠ€ μ½”λ“œλ₯Ό μ‹€ν–‰ κ°€λŠ₯ν•œ μ½”λ“œ/ν”„λ‘œκ·Έλž¨μœΌλ‘œ λ³€ν™˜ν•˜λŠ” κ³Όμ •
βœ‹ λ²ˆλ“€λ§? λΈŒλΌμš°μ €κ°€ μ†ŒμŠ€ μ½”λ“œλ₯Ό 더 잘 읽을 수 있게 λ„μ™€μ€ŒμœΌλ‘œ, λΉŒλ“œ κ³Όμ • 쀑 ν•˜λ‚˜!

  1. New Repository 생성
  2. git remote add [myRepo] [μƒˆλ‘œμš΄ Repository URL]
  3. git push myRepo [branch name]

πŸ”Έ μ§€μ†μ  배포 (CD; continuous delivery/deployment)

: CI 과정이 μ›ν™œνžˆ λλ‚˜λ©΄ λ°”λ‘œ κ³ κ°μ—κ²Œ λ°°ν¬ν•˜λŠ” 것 (ex- Github Page)

  • Release: BuildκΉŒμ§€ λͺ¨λ‘ μ€€λΉ„ μ™„λ£Œ! β†’ μ–΄λ–€ κΈ°λŠ₯이 κ°œλ°œλ˜μ—ˆλŠ”μ§€ λΉ„μ¦ˆλ‹ˆμŠ€ κ΄€κ³„μžλ“€κ³Ό 이야기 λ‚˜λˆ„λŠ” 단계
  • Deploy: μ‹€μ œ 배포 단계
  • Operation: 배포된 SWλ₯Ό μ‹€μ œ μš΄μš©ν•˜λŠ” κ³Όμ • (고객 ν”Όλ“œλ°±μ„ λ°›μ•„ κΈ°νšμ— 반영)

β˜‘οΈ Vercel

: Front-end 배포λ₯Ό μžλ™ν™”ν•˜κ³ , κ·Έ μ™Έ μ—¬λŸ¬ μΆ”κ°€ κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” 배포 ν”„λ ˆμž„μ›Œν¬

πŸ”· Client 배포 with CI/CD

  1. Vercel νšŒμ›κ°€μž… (Githubκ³Ό 연동)

  2. New Project λ²„νŠΌ λˆ„λ₯΄κ³  Add Github Account 클릭 (졜초 μƒμ„±μ‹œ 말고 λ‹€μ‹œ 또 μƒμ„±μ‹œ)

    스크란샷 2022-08-08 α„‹α…©α„Œα…₯ᆫ 11 34 28
  1. Configure λ²„νŠΌ ν΄λ¦­ν•΄μ„œ Repository access λΆ€λΆ„ 찾은 ν›„, λ°°ν¬ν•˜κ³ μž ν•˜λŠ” λ ˆν¬μ§€ν† λ¦¬ 선택

    스크란샷 2022-08-08 α„‹α…©α„Œα…₯ᆫ 11 34 54
  2. Import 클릭

    스크란샷 2022-08-08 α„‹α…©α„Œα…₯ᆫ 11 46 35
  1. μˆ˜μ •ν•  λΆ€λΆ„ μˆ˜μ •ν•΄μ£Όκ³  Deploy 클릭
    스크란샷 2022-08-08 α„‹α…©α„Œα…₯ᆫ 11 45 34
  1. μ’€ 기닀리면 배포 링크 μ§œμž”βœ¨

    πŸ“Ž https://react-express-crud-project.vercel.app/

    스크란샷 2022-08-08 α„‹α…©α„Œα…₯ᆫ 11 31 17

βž• index.test.js 짜보기

// index.test.js
// test ν†΅κ³Όμ‹œμ— λ°°ν¬λ˜λ„λ‘ testcase μž‘μ„±
import { render } from "@testing-library/react";
import "@testing-library/jest-dom/extend-expect";

import App from "./App";

describe("Bare minimum requirement", () => {
  describe("App.js μ»΄ν¬λ„ŒνŠΈ μœ λ‹› ν…ŒμŠ€νŠΈ", () => {
    test('H1 μ—˜λ¦¬λ¨ΌνŠΈμ— "My Agora States" ν…μŠ€νŠΈ λ…Έλ“œκ°€ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.', () => {
      const { container } = render(<App />);
      const h1 = container.querySelector("h1");
      expect(h1.textContent).toBe("My Agora States"); // h1 νƒœκ·Έ μ•ˆμ˜ λ‚΄μš©μ΄ 이거면 testκ°€ ν†΅κ³Όλ˜λ„λ‘~!
    });
  });
});

✨ Vercelμ—μ„œ Deploy 후에 Build logλ₯Ό 확인해보면 μœ„μ˜ test codeκ°€ ν†΅κ³Όν•˜λŠ”κ±Έ 확인 κ°€λŠ₯!

스크란샷 2022-08-09 α„‹α…©α„Œα…₯ᆫ 3 24 30
profile
FE developer

0개의 λŒ“κΈ€

Powered by GraphCDN, the GraphQL CDN