Skip to content

ci: prod 배포 build-once GitOps 전환 — gitops-update-prod 추가, ECS 제거 - #59

Merged
gimyw merged 2 commits into
mainfrom
ci/gitops-update-prod
Jun 24, 2026
Merged

ci: prod 배포 build-once GitOps 전환 — gitops-update-prod 추가, ECS 제거#59
gimyw merged 2 commits into
mainfrom
ci/gitops-update-prod

Conversation

@gimyw

@gimyw gimyw commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

🔎개요

prod 배포를 ECS 직접배포에서 build-once GitOps 승격으로 전환한다. main push 시 ECS task def를 갱신하던 deploy-prod(ECS) job을 제거하고, dev에서 빌드된 이미지를 crane copy로 prod 리포에 승격(재빌드 X) 후 values-prod.yaml 태그를 바꾸는 PR을 자동 생성하는 gitops-update-prod job을 추가한다. ([2-2]+[2-4]+[2-7])

전제: prod는 ALB weight 실측 100% EKS(prod-eks-tg=100 / prod-tg=0) → ECS 잡 제거 안전.


📝작업 내용

  • push-image → feat 전용(build-once): 이미지는 dev(feat)에서 1번만 빌드. main 재빌드 중단.
  • deploy-prod(ECS) 제거 — 원본 코드는 블로그 ECS-4편 보존.
  • gitops-update-prod 추가 (main push 한정):
    • SHA 매핑: SRC_SHA = git rev-parse HEAD^2 || HEAD (머지커밋 2nd parent = dev 이미지를 빌드한 feat tip), fetch-depth: 2
    • crane copy farmily-api-dev:dev-<SRC_SHA>farmily-api:prod-<SRC_SHA> (재빌드 X·동일 digest). IAM = farmily-cicd-backend-rolefarmily-api* 와일드카드(추가 IAM 0)
    • 결정 C (없으면 skip) + 계층화 Slack: 앱 코드 변경(src/·build.gradle·infra/docker/) O + dev 이미지 없음 → ⚠️ Slack 경고 / 앱 변경 X(ci·docs 머지) → 조용히 skip
    • prod = PR 게이트(peter-evans/create-pull-request@v7, 봇 명의) — dev=직접커밋과 대비
  • crane 설치 = imjasonh/setup-crane@v0.6(SHA 핀)

👀변경 사항

  • ⚠️ 이 PR이 main 머지되는 순간 gitops-update-prod가 처음 돎 — 변경이 .github/workflows/뿐이라 app_changed=false조용히 skip(spurious prod PR 안 생김). 첫 실행 로그로 확인 필요.
  • prod 승격 PR은 사람 머지 후 ArgoCD가 prod-eks에 반영. (dev=직접 push와 의도적 비대칭 — prod는 사람 게이트)
  • ⚠️ ECS prod-app-service(weight 0 standby)는 코드 제거와 별개로 계속 구동 — 실자원 내림(Terraform desired=0/destroy)은 후속.
  • ⚠️ dev ECR lifecycle 10→30 상향(승격 전 dev 이미지 만료 방지)은 별도 Terraform PR.
  • 전제 secret: AWS_ROLE_ARN, GITOPS_APP_ID, GITOPS_APP_PRIVATE_KEY, SLACK_WEBHOOK_URL(등록 완료).

#️⃣관련 이슈

김영원 and others added 2 commits June 24, 2026 15:37
- push-image: feat 전용(build-once, main 재빌드 중단)
- deploy-prod(ECS) 제거 — prod ALB weight 100% EKS(원본 ECS-4편 보존)
- gitops-update-prod 추가: SRC_SHA(HEAD^2||HEAD) → crane copy dev→prod(재빌드 X)
  → values-prod.yaml 태그 PR(사람 게이트). 결정 C(없으면 skip) + 계층화 Slack
- crane = imjasonh/setup-crane@v0.6 SHA 핀

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
C Security Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

@gimyw
gimyw merged commit 5075f2f into main Jun 24, 2026
4 of 5 checks passed
@gimyw
gimyw deleted the ci/gitops-update-prod branch June 24, 2026 06:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant