From ae0709841049c19986b670f8c355a9f007445be5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=82=98=EB=AF=B8?= Date: Tue, 11 Aug 2026 17:03:09 +0900 Subject: [PATCH] =?UTF-8?q?ci:=20=EC=83=81=EC=9A=A9=20=EB=B0=B0=ED=8F=AC?= =?UTF-8?q?=20=ED=8A=B8=EB=A6=AC=EA=B1=B0=EB=A5=BC=20main=20push=EC=97=90?= =?UTF-8?q?=EC=84=9C=20git=20tag(v*)=EB=A1=9C=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 지금까지는 main push마다 staging(Render)과 상용(AWS CodeDeploy)이 동시에 배포됐다. staging에서 검증할 시간 없이 merge=상용 반영이라 안전망이 없는 구조였다. 이제 staging은 main push에 그대로 자동 배포되고, 상용은 v로 시작하는 git tag를 push해야 배포되도록 분리했다(Continuous Delivery). merge → staging 확인 → 태그 push 순서로 상용 반영. --- .github/workflows/prod-cd.yml | 6 ++++-- README.md | 13 ++++++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/.github/workflows/prod-cd.yml b/.github/workflows/prod-cd.yml index d91527f..65d3be2 100644 --- a/.github/workflows/prod-cd.yml +++ b/.github/workflows/prod-cd.yml @@ -2,10 +2,12 @@ name: RUNNECT-PROD-CD # 해당 workflow가 언제 실행될 것인지에 대한 트리거를 지정 -# push시에 실행 +# v로 시작하는 태그가 push될 때만 실행 (예: v1.3.0) +# main push마다 자동으로 상용까지 나가지 않도록, 상용 배포는 태그로 명시적으로 트리거한다. +# staging(Render)은 main push에 그대로 자동 배포된다 — staging에서 먼저 확인 후 태그를 찍는 흐름. on: push: - branches: [ main ] # main branch로 push 될 때 실행됩니다. + tags: [ 'v*' ] env: S3_BUCKET_NAME: runnect-prod-bucket-604764467555-ap-northeast-2-an diff --git a/README.md b/README.md index 7f353b8..0ffca49 100644 --- a/README.md +++ b/README.md @@ -165,7 +165,18 @@ - 미완성 기능은 브랜치를 오래 살려두지 말고, feature flag로 감싸 `main`에 빠르게 합친다 - 리뷰 완료 후 squash merge, 병합된 branch는 삭제 -과거에는 `dev`/`main` 두 개의 장수 branch를 cherry-pick으로 동기화하는 방식이었으나, 두 branch가 내용상 계속 어긋나는 문제(cherry-pick hell)가 반복되어 폐기했다. staging 배포도 `main` push를 기준으로 트리거된다. +과거에는 `dev`/`main` 두 개의 장수 branch를 cherry-pick으로 동기화하는 방식이었으나, 두 branch가 내용상 계속 어긋나는 문제(cherry-pick hell)가 반복되어 폐기했다. + +### 🚀 배포 전략 (Continuous Delivery) + +`main`은 항상 배포 가능한 상태를 유지하되, staging과 상용의 배포 트리거는 분리했다 — merge 즉시 상용까지 나가면 검증 없이 바로 노출되는 문제가 있어서다. + +| 환경 | 트리거 | 방식 | +| --- | --- | --- | +| staging (Render) | `main` push | 자동 배포 | +| 상용 (AWS CodeDeploy) | `v*` 형식의 git tag push | 수동 승격 | + +merge → staging에서 자동 확인 → 문제 없으면 `git tag v1.x.x && git push origin v1.x.x`로 상용 배포. 버전은 느슨한 semver(기능 추가 minor, 버그 수정 patch)를 따른다. ### 🚩 Feature Flag