From e63d5d9e5acad884a1c5ad1cf6b8ced83775c63b Mon Sep 17 00:00:00 2001 From: Jaemin Choi <1dotolee@gmail.com> Date: Wed, 5 Jun 2024 22:25:06 -0700 Subject: [PATCH] feat: add ci/cd guide --- .vitepress/config.ts | 10 ++++++++++ dev/infra/ci-cd.md | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 dev/infra/ci-cd.md diff --git a/.vitepress/config.ts b/.vitepress/config.ts index 97f4592..43da15c 100644 --- a/.vitepress/config.ts +++ b/.vitepress/config.ts @@ -120,6 +120,16 @@ export default defineConfig({ ] }, + { + text: 'Infra', + items: [ + { + text: 'CI/CD (GitHub Actions)', + link: '/dev/infra/ci-cd' + } + ] + }, + { text: 'Tools', items: [ diff --git a/dev/infra/ci-cd.md b/dev/infra/ci-cd.md new file mode 100644 index 0000000..861009c --- /dev/null +++ b/dev/infra/ci-cd.md @@ -0,0 +1,39 @@ +# CI/CD (GitHub Actions) + +CI/CD란 코드를 작성하는 순간부터 서비스에 배포되기까지의 연결된 과정을 말해요. +조금 더 자세한 의미는 아래와 같아요. + +- **CI(Continuous Integration)**: 개발자가 작성한 코드를 main 브랜치에 문제 없이 합치도록 돕는 과정을 말해요. Linting이나 formatting, 또는 다양한 testing 등이 해당돼요. +- **CD(Continuous Delivery)**: main 브랜치의 코드를 실제 서비스에 배포하는 과정을 말해요. + +조금 더 자세한 설명을 원한다면, 이 [YouTube 영상](https://youtu.be/42UP1fxi2SY)을 확인해보세요! + +## Pipeline 구성 + +코드당의 CI/CD pipeline은 GitHub Actions를 사용해요. +아래 그림처럼 CI, CD(Staging, Production)로 크게 세 개로 이루어져있어요. + + + +- **CI**: Pull Request를 생성하거나 `main` branch에 push했을 때 실행돼요. Linting, formatting, testing 등 여러 과정을 통해 코드가 main branch에 합쳐져도 괜찮은지 검사해요. +- **CD (Staging)**: `main` branch에 push했을 때 실행돼요. 코드를 스테이징 환경에 배포해요. +- **CD (Production)**: 직접 클릭해서 동작시켰을 때 실행돼요. 스테이징 환경의 코드를 실제 서비스에 배포해도 괜찮겠다고 판단하면, 이 pipeline을 실행해서 프로덕션 환경에 배포해요. + +> [!INFO] +> 스테이징 환경과 프로덕션 환경의 차이가 궁금하다면 ['Stage Server' 글을 확인해보세요!](/dev/project/stage-server) + +## CI + +> TODO: 설명 추가 예정 + +## CD (Staging) + +> TODO: 설명 추가 예정 + +## CD (Production) + +> TODO: 설명 추가 예정 + +## More pipelines + +> TODO: 설명 추가 예정