콘텐츠로 이동

2.2.3 릴리스 실행 기록

문서 역할

  • 역할: 시나리오
  • 문서 종류: flow
  • 충돌 시 우선 문서: policy/release-process.md, 태그 기준은 policy/release-tag-policy.md
  • 기준 성격: as-is

목적

  • v2.2.3 docs 릴리스 기록에 Admin/API 운영 배포 기준점을 고정한다.
  • docs 릴리스 번호는 서비스 레포 태그 번호를 강제하지 않고, 이번 배포 기록의 순번으로 사용한다.
  • Mobile Store 2.2.1 (100) 릴리스는 이 기록으로 완료 처리하지 않고 별도 릴리스로 분리한다.

범위

  • 대상: docs, coupler-admin-web, coupler-api, coupler-mobile-app
  • 포함 범위: Admin 소개글 입력 필요 라벨/계약 처리 운영 배포, API 소개글 미제출 Admin DTO 운영 배포, Mobile NextPush label/history 기록, 서비스 태그, docs Release 기록
  • 제외 범위: 운영 RDS 변경, Mobile Store 제출/승인, Mobile Store 2.2.1 (100) 릴리스, coupler-mobile-app 릴리스 태그

상위 규범 문서

릴리스 상태

  • 목표 버전: v2.2.3
  • 전체 상태: released
  • 완료 범위: coupler-admin-web 운영 배포/검증/v2.1.3 태그, coupler-api 운영 배포/검증/v2.2.3 태그, Mobile NextPush Android/iOS Production label/history 기록, docs 릴리스 기록
  • docs 기록 버전: v2.2.3 (통합 릴리스 기록 번호)
  • coupler-admin-web 배포 버전: v2.1.3
  • coupler-api 배포 버전: v2.2.3
  • coupler-mobile-app Store 버전: 2.2.1 (100) 릴리스 별도 예정, 이 기록에서 제출/승인/태그 미수행
  • coupler-mobile-app NextPush label: Android Production v21, iOS Production v18. NextPush label은 Store 버전이나 릴리스 태그가 아니다.
  • docs 태그: v2.2.3 -> docs release workflow 실행 시점의 docs tag commit
  • coupler-admin-web 태그: v2.1.3 -> e7beb8f7ee5d3c79cca82530e5823b7e51d310c1
  • coupler-admin-web 태그 객체: 53abb1a2f6ed76420cbe420779acedcb280049ee
  • coupler-api 태그: v2.2.3 -> ae7b81558ee01c86a6d19a9a98bd6c288d6a0a0d
  • coupler-api 태그 객체: 819543d745c4b00593550e3742240edf82d7288e
  • coupler-mobile-app Store 릴리스 태그: N/A (Store 2.2.1 (100) 별도 예정, Store binary 변경 없음)
  • coupler-mobile-app 기준 커밋: 12afc06af82662f4b49e271135df50a1ea5c0f06
  • coupler-mobile-app 직전 Store 릴리스 태그: v2.2.0 -> e4dd5b7c5d56b26065c6de31eca7b9c5f6225248
  • coupler-mobile-app 제출 마커 태그: N/A (Mobile Store 제출 없음)
  • 제출 마커 증빙 이관/삭제: N/A

릴리스 결과

  • coupler-admin-web는 운영 EC2 정적 산출물을 e7beb8f7ee5d3c79cca82530e5823b7e51d310c1 기준 build로 교체했다.
  • coupler-admin-webmember_review_status.key/display_state=input_required 계약을 인식하고, 소개글 미입력 상태를 "소개글 입력 필요"로 표시한다.
  • coupler-api는 운영 EC2에 ae7b81558ee01c86a6d19a9a98bd6c288d6a0a0d 기준으로 반영됐다.
  • coupler-api는 소개글 미제출 Admin DTO를 input_required 계약으로 내려, 기존 edit_need 액션 필요 상태와 분리한다.
  • coupler-mobile-app Store 2.2.1 (100) 릴리스는 이번 docs 릴리스로 완료 처리하지 않는다.
  • coupler-mobile-app NextPush Android Production v21, iOS Production v18 label/history를 Store 버전과 분리해 기록한다.
  • 운영 RDS와 Mobile Store 제출/승인은 이번 릴리스 범위에 포함하지 않는다.

메인 흐름

  1. 배포 범위를 coupler-admin-web, coupler-api, docs, Tag/Release Record로 고정하고, Mobile Store 2.2.1 (100)은 별도 릴리스로 분리했다.
  2. 계약 호환 순서를 고려해 coupler-admin-web를 먼저 운영 배포했다.
  3. coupler-admin-web 로컬 품질 게이트와 production build를 완료했다.
  4. 운영 EC2의 기존 Admin 정적 산출물을 /var/www/coupler-admin-web-backup-20260705213140로 백업했다.
  5. coupler-admin-web/build/ 산출물을 /var/www/coupler-admin-web/로 업로드하고 내부/외부 응답을 확인했다.
  6. 운영 coupler-apiorigin/mainae7b81558ee01c86a6d19a9a98bd6c288d6a0a0d까지 fast-forward 반영했다.
  7. 운영 coupler-api에서 pnpm install --frozen-lockfile, pm2 restart coupler-api --update-env, pm2 save를 수행했다.
  8. 운영 API 내부/외부 응답, DB-backed 공개 API, PM2 상태, 로그를 확인했다.
  9. coupler-mobile-app Android/iOS NextPush Production label/history를 Store 버전과 분리해 확인했다.
  10. NextPush Android/iOS Production history에서 label, target binary version, package hash, rollout/mandatory/disabled 상태를 확인했다.
  11. 운영 검증 완료 후 coupler-admin-web v2.1.3, coupler-api v2.2.3 annotated tag를 생성하고 원격에 push했다.
  12. 이 문서를 운영 결과로 갱신하고 docs v2.2.3 태그/GitHub Release의 기준 문서로 확정했다.

검증 근거

  • coupler-admin-web
    • 배포 대상 커밋: e7beb8f7ee5d3c79cca82530e5823b7e51d310c1
    • 직전 운영 태그 커밋: v2.1.2 -> 3eb4a699980a0e035766ba341d12359790921c0f
    • v2.1.2 이후 커밋:
      • 03bcd31 Revert "fix: 준회원 소개글 미제출 라벨 보정"
      • 6d2786d fix: 소개글 미제출 라벨 분리
      • 60d09a7 fix: 소개글 입력 필요 라벨 축약
      • e7beb8f test: 소개글 반려 상태 fixture 정정
    • 변경 파일:
      • src/pages/member/utils/member-review-status.ts
      • src/lang/locales/ko.ts
      • src/__tests__/member-review-status.test.tsx
    • focused test: yarn test:ci src/__tests__/member-review-status.test.tsx --runInBand 통과 (1 suite / 15 tests)
    • 표준 품질 게이트: yarn lint, yarn typecheck, yarn format, CI=true yarn test:ci 통과 (5 suites / 39 tests)
    • production build: yarn build 통과, main bundle build/static/js/main.29b49dce.js
    • 운영 배포 시각: 2026-07-05 21:31-21:32 KST
    • 운영 백업: /var/www/coupler-admin-web-backup-20260705213140
    • 내부 응답: http://127.0.0.1:8000 -> 200, Last-Modified: Sun, 05 Jul 2026 12:31:05 GMT
    • 외부 응답: https://cms.ritzy.fourhundred.co.kr -> 200, server: nginx/1.18.0 (Ubuntu)
    • nginx 검증: sudo nginx -t 통과
    • 태그 객체: 53abb1a2f6ed76420cbe420779acedcb280049ee
    • 태그 커밋: e7beb8f7ee5d3c79cca82530e5823b7e51d310c1
  • coupler-api
    • 배포 대상 커밋: ae7b81558ee01c86a6d19a9a98bd6c288d6a0a0d
    • 직전 운영 태그 커밋: v2.2.2 -> 0d3532141f82c8582fe6676e39ce7d4a0b03e439
    • v2.2.2 이후 커밋:
      • ae7b815 fix: 소개글 미제출 Admin DTO 분리
    • 변경 파일:
      • controller/admin/member.ts
      • lib/admin-member-review-status-view.ts
      • __tests__/admin-member-detail-pending-regression.test.ts
      • __tests__/admin-member-review-status-view.test.ts
    • focused test: pnpm test -- __tests__/admin-member-review-status-view.test.ts __tests__/admin-member-detail-pending-regression.test.ts --runInBand 통과 (2 suites / 51 tests)
    • 표준 품질 게이트: pnpm lint, pnpm typecheck, pnpm format, pnpm test:ci 통과 (71 suites / 450 tests)
    • 운영 배포 시각: 2026-07-05 21:35 KST
    • 운영 커밋: ae7b81558ee01c86a6d19a9a98bd6c288d6a0a0d
    • 태그 객체: 819543d745c4b00593550e3742240edf82d7288e
    • 태그 커밋: ae7b81558ee01c86a6d19a9a98bd6c288d6a0a0d
    • PM2 상태: coupler-api online, pid 3230643, user root, restart count 24
    • 내부 응답: http://127.0.0.1:3002/ -> 200, ritzy API Running ...
    • 외부 응답: https://api.ritzy.fourhundred.co.kr/ -> 200, ritzy API Running ...
    • 내부 DB-backed 공개 API: GET /app/manager/list -> 200, result_code=0
    • 외부 DB-backed 공개 API: GET https://api.ritzy.fourhundred.co.kr/app/manager/list -> 200, result_code=0
    • 운영 로그: 재시작 후 server started on port 3002 확인. 기존 FCM invalid token 로그와 NODE_APP_INSTANCE config warning이 있었으나, 이번 배포 커밋의 startup 실패나 crash는 확인되지 않았다.
    • 운영 git 상태: 기존 untracked .bak 파일 2개는 배포 범위가 아니므로 변경하지 않았다.
  • coupler-mobile-app
    • NextPush 작업 기준 커밋: 12afc06af82662f4b49e271135df50a1ea5c0f06
    • 직전 Store 릴리스 태그 커밋: v2.2.0 -> e4dd5b7c5d56b26065c6de31eca7b9c5f6225248
    • 직전 NextPush 기준 커밋: 13d7eec420169360126e569011de893cb1ba297c
    • 13d7eec 이후 커밋:
      • 79893de feat: 최종 매칭 수락/취소 팝업 플로우 개선
      • c9ee507 fix: lint fix
      • 0ccc3e1 feat: 최종 매칭 세로 팝업 플로우 및 PageSettings 타입 계약 정리
      • 12afc06 fix: 미니프로필보기 버튼 사이즈 및 위치 조정
    • 변경 파일: App.tsx, src/**
    • native metadata 변경: 없음(android/, ios/, native version/build 변경 없음)
    • 작업 당시 native metadata 기준: Android versionName 2.2.0, iOS MARKETING_VERSION 2.2.0, build 97
    • Store 2.2.1 (100) 제출/승인/태그: 이 기록에서 미수행, 별도 릴리스 예정
    • focused test: yarn test src/__tests__/profilePreviewFinalMatchingFlow.test.tsx --runInBand --watchman=false 통과 (1 suite / 2 tests)
    • 표준 품질 게이트: yarn lint, yarn typecheck, yarn format, yarn test:ci 통과 (45 suites / 332 tests / 10 snapshots)
    • 배포 전 Android Production 기준 label: v20
    • 배포 전 Android target binary version: 2.2.0
    • 배포 전 Android package hash: e143858043956e510046015cf187ae0b83e0b202bcd9702af3cbefd3f5892588
    • 배포 후 Android Production label: v21
    • 배포 후 Android target binary version: 2.2.0
    • 배포 후 Android package hash: a91f5fa5a816bfacd5f4e6657564b96a6f1aff69134ae014eb164f7e760c00da
    • 배포 후 Android upload time: 2026-07-05T12:37:46.052Z
    • 배포 후 Android rollout/mandatory/disabled: 100/false/false
    • 배포 전 iOS Production 기준 label: v17
    • 배포 전 iOS target binary version: 2.2.0
    • 배포 전 iOS package hash: d0126aef44da4d8bf1c787cd4a3fea04ac436d0e0625e22256f99730a8bcb10b
    • 배포 후 iOS Production label: v18
    • 배포 후 iOS target binary version: 2.2.0
    • 배포 후 iOS package hash: 499861bd02803e66a63292b3e1e262c021107d4baedce76048ea6318c2b6245c
    • 배포 후 iOS upload time: 2026-07-05T12:39:25.207Z
    • 배포 후 iOS rollout/mandatory/disabled: 100/false/false
  • DB migration
    • DB schema/data migration 없음. DB migration 범위 N/A.

롤백 기준

  • coupler-admin-web: /var/www/coupler-admin-web-backup-20260705213140 백업 산출물 또는 직전 운영 태그 v2.1.2 기준 build로 rollback한다.
  • coupler-api: 운영 배포 후 문제가 확인되면 직전 운영 태그 v2.2.2 또는 운영 배포 전 PM2 상태 기준으로 rollback한다.
  • Mobile NextPush: Android Production v21, iOS Production v18 label 기준으로 문제가 확인될 때만 별도 rollback 판단을 수행한다. 직전 label 확인 기준은 Android v20, iOS v17이다.
  • coupler-mobile-app: Store 2.2.1 (100) 릴리스는 이 기록에서 수행하지 않았으므로 Store binary rollback 대상이 아니다.
  • 운영 RDS: 이번 릴리스에 DB 변경이 없으므로 DB rollback 대상 N/A다.

후속 작업

  • 없음.

관련 문서