콘텐츠로 이동

2.2.2 릴리스 실행 기록

문서 역할

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

목적

  • v2.2.2 API hotfix와 Mobile NextPush 배포의 대상 커밋, 실행 순서, 검증 근거, 태그/기록 기준을 한 문서에 고정한다.

범위

  • 대상: docs, coupler-api, coupler-mobile-app
  • 포함 범위: 프로필 사진 승인 알림 중복 방지 API hotfix, API 개발계 최신 커밋 반영, API 운영 배포/검증, API 서비스 태그, Mobile NextPush Android/iOS Production 배포, docs Release 기록
  • 제외 범위: coupler-admin-web 운영 배포, Mobile Store 제출/승인, 운영 RDS 변경

상위 규범 문서

릴리스 상태

  • 목표 버전: v2.2.2
  • 전체 상태: released
  • 완료 범위: coupler-api 개발계/운영 최신 커밋 반영, coupler-api 운영 배포/검증, coupler-api v2.2.2 태그, Mobile NextPush Android/iOS Production 배포/검증, docs 검증, docs 태그/GitHub Release 생성
  • docs 태그: v2.2.2 -> docs release workflow 실행 시점의 docs tag commit
  • coupler-api 기준 커밋: 0d3532141f82c8582fe6676e39ce7d4a0b03e439
  • coupler-api 직전 태그: v2.2.1 -> 1075ec4523908b03e9f6f04412654c2edb627983
  • coupler-api 태그: v2.2.2 -> 0d3532141f82c8582fe6676e39ce7d4a0b03e439
  • coupler-api 태그 객체: 1933d19f82e17df4cc83d9d3e87c67c7ede5daa1
  • coupler-admin-web 태그: N/A (이번 운영 배포 범위에서 제외)
  • coupler-mobile-app Store 릴리즈 태그: N/A (NextPush-only 배포, Store binary 변경 없음)
  • coupler-mobile-app 기준 커밋: 13d7eec420169360126e569011de893cb1ba297c
  • coupler-mobile-app 직전 Store 릴리즈 태그: v2.2.0 -> e4dd5b7c5d56b26065c6de31eca7b9c5f6225248
  • coupler-mobile-app 제출 마커 태그: N/A (Mobile Store 제출 없음)
  • 제출 마커 증빙 이관/삭제: N/A

릴리스 결과

  • coupler-api는 개발계와 운영 EC2에 0d3532141f82c8582fe6676e39ce7d4a0b03e439 기준으로 반영됐다.
  • coupler-api 운영 배포 후 내부/외부 응답, DB-backed 공개 API, PM2 상태, 로그를 확인했다.
  • 운영 검증 완료 후 coupler-api v2.2.2 annotated tag를 생성하고 원격에 push했다.
  • coupler-api는 프로필 사진 승인 알림이 이미지별로 중복 발송되지 않도록, 프로필 세트 상태가 승인으로 전이될 때만 profile_photo_ok 승인 도메인을 기록한다.
  • coupler-api는 설정 승인 푸시 문구에 profile_photo_ok를 추가해 프로필 사진 승인과 기본정보 승인을 구분한다.
  • coupler-mobile-app은 native metadata 변경 없이 JS/locale/test/package script 변경만 포함하므로 Mobile NextPush-only로 Android Production v20, iOS Production v17을 배포했다.
  • coupler-admin-web, Mobile Store, 운영 RDS는 이번 릴리스 범위에 포함하지 않는다.

메인 흐름

  1. 배포 범위를 coupler-api, Mobile NextPush, docs, Tag/Release Record로 고정했다.
  2. coupler-api 로컬 품질 게이트를 확인했다.
  3. 운영 coupler-apiorigin/main0d3532141f82c8582fe6676e39ce7d4a0b03e439까지 fast-forward 반영했다.
  4. 운영 coupler-api에서 sudo env PATH="$PATH" pnpm install --frozen-lockfile, sudo pm2 restart coupler-api --update-env, sudo pm2 save를 수행했다.
  5. 운영 API 내부/외부 응답, DB-backed 공개 API, PM2 상태, 로그를 확인했다.
  6. 운영 검증 완료 후 coupler-api v2.2.2 annotated tag를 생성하고 원격에 push했다.
  7. coupler-mobile-app 로컬 품질 게이트와 native 변경 없음 기준을 확인했다.
  8. coupler-mobile-app Android/iOS NextPush Production 배포를 수행했다.
  9. NextPush Android/iOS Production history에서 새 label, target binary version, package hash, rollout/mandatory/disabled 상태를 확인했다.
  10. 이 문서를 운영 결과로 갱신하고 docs v2.2.2 태그/GitHub Release를 생성했다.

검증 근거

  • coupler-api
    • 배포 대상 커밋: 0d3532141f82c8582fe6676e39ce7d4a0b03e439
    • 직전 운영 태그 커밋: v2.2.1 -> 1075ec4523908b03e9f6f04412654c2edb627983
    • v2.2.1 이후 커밋:
      • ee7e4e6 fix: 프로필 사진 승인 알림 중복 방지
      • 0d35321 test: 프로필 사진 승인 알림 회귀 보강
    • 변경 파일:
      • controller/admin/member.ts
      • controller/common.ts
      • lib/member-review-push-policy.ts
      • locales/ko.json
      • __tests__/admin-member-detail-pending-regression.test.ts
      • __tests__/common-send-fcm-push-storage.test.ts
      • __tests__/member-review-push-policy.test.ts
    • 개발계 반영: 최신 커밋 배포 완료(사용자 확인, 2026-06-30 KST)
    • focused test: pnpm test -- __tests__/member-review-push-policy.test.ts __tests__/common-send-fcm-push-storage.test.ts __tests__/admin-member-detail-pending-regression.test.ts --runInBand 통과 (3 suites / 62 tests)
    • 표준 품질 게이트: pnpm lint && pnpm typecheck && pnpm format && pnpm test:ci 통과 (70 suites / 446 tests)
    • 운영 배포 시각: 2026-06-30 21:20 KST
    • 운영 커밋: 0d3532141f82c8582fe6676e39ce7d4a0b03e439
    • 태그 객체: 1933d19f82e17df4cc83d9d3e87c67c7ede5daa1
    • 태그 커밋: 0d3532141f82c8582fe6676e39ce7d4a0b03e439
    • PM2 상태: coupler-api online, pid 3130231, user root, restart count 23
    • 내부 응답: http://127.0.0.1:3002/ -> ritzy API Running ...
    • 내부 DB-backed 공개 API: GET /app/manager/list -> 200, result_code=0
    • 외부 응답: https://api.ritzy.fourhundred.co.kr/ -> 200, ritzy API Running ...
    • 외부 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는 확인되지 않았다.
  • coupler-mobile-app
    • NextPush 배포 대상 커밋: 13d7eec420169360126e569011de893cb1ba297c
    • 직전 Store 릴리즈 태그 커밋: v2.2.0 -> e4dd5b7c5d56b26065c6de31eca7b9c5f6225248
    • v2.2.0 이후 커밋:
      • 1792b19 feat: 매칭카드 하단 카피라이팅 변경 및 가운데정렬 처리
      • 65580ac refactor: 매칭카드 카피 정렬 스타일 분리
      • f58daaa refactor: 매칭카드 스타일 키 카멜케이스 적용
      • f2030e7 chore: lint 스크립트 명시 분리
      • 1b43076 fix: Meta 광고 식별자 수집 설정 추가
      • dc5173e fix: 매칭 알림 For You 탭 이동
      • 13d7eec fix: 라운지 기본 탭을 모든 회원으로 변경
    • 변경 파일: src/**, jest.setup.js, package.json
    • native metadata 변경: 없음(android/, ios/, native version/build 변경 없음)
    • 현재 Store binary 기준: Android versionName 2.2.0, iOS MARKETING_VERSION 2.2.0, build 97
    • focused test: yarn test src/__tests__/marketingEvents.test.ts src/__tests__/pushNavigation.test.ts src/__tests__/squareTabs.test.ts --runInBand --watchman=false 통과 (3 suites / 25 tests)
    • 표준 품질 게이트: yarn lint && yarn typecheck && yarn format && yarn test:ci 통과 (44 suites / 332 tests / 10 snapshots)
    • 배포 전 Android Production 기준 label: v19
    • 배포 전 Android target binary version: 2.2.0
    • 배포 전 Android package hash: cc04c60ca205b484ec6d35f833bc806d36e67121c212799352a3cbc2b98bb2f8
    • 배포 전 Android upload time: 2026-06-28T09:42:59.932Z
    • 배포 전 Android rollout/mandatory/disabled: 100/false/false
    • 배포 후 Android Production label: v20
    • 배포 후 Android target binary version: 2.2.0
    • 배포 후 Android package hash: e143858043956e510046015cf187ae0b83e0b202bcd9702af3cbefd3f5892588
    • 배포 후 Android upload time: 2026-06-30T12:22:09.018Z
    • 배포 후 Android rollout/mandatory/disabled: 100/false/false
    • 배포 전 iOS Production 기준 label: v16
    • 배포 전 iOS target binary version: 2.2.0
    • 배포 전 iOS package hash: d59959a8835bc7470ab4e8abd72497891e858ec81a7d57dac8df1f9cf01e2975
    • 배포 전 iOS upload time: 2026-06-28T09:42:04.235Z
    • 배포 전 iOS rollout/mandatory/disabled: 100/false/false
    • 배포 후 iOS Production label: v17
    • 배포 후 iOS target binary version: 2.2.0
    • 배포 후 iOS package hash: d0126aef44da4d8bf1c787cd4a3fea04ac436d0e0625e22256f99730a8bcb10b
    • 배포 후 iOS upload time: 2026-06-30T12:22:37.733Z
    • 배포 후 iOS rollout/mandatory/disabled: 100/false/false
  • coupler-admin-web
    • 현재 main 커밋: 03bcd31a22711dc80047c138bff81720cd4f118c
    • 직전 태그 커밋: v2.1.2 -> 3eb4a699980a0e035766ba341d12359790921c0f
    • 이번 운영 배포 범위에서 제외한다. 태그 생성 대상 N/A.
    • 참고: v2.1.2 이후 main에는 03bcd31 Revert "fix: 준회원 소개글 미제출 라벨 보정" 1개 커밋이 있으나, 이번 릴리스 목표가 API hotfix와 Mobile NextPush이므로 Admin 운영 반영은 별도 배포로 분리한다.
  • DB migration
    • DB schema/data migration 없음. DB migration 범위 N/A.
  • docs
    • 릴리즈 기록 문서: content/releases/v2.2.2.md
    • content/AGENTS.md 인덱스 동기화: 완료
    • mkdocs.yml nav 동기화: 완료
    • docs 검증: PATH="/Library/Frameworks/Python.framework/Versions/3.11/bin:$PATH" yarn validate:docs 통과
    • docs 태그/GitHub Release: v2.2.2 생성 완료

롤백 기준

  • coupler-api: 운영 배포 후 문제가 확인되면 직전 운영 태그 v2.2.1 또는 운영 배포 전 PM2 상태 기준으로 rollback한다.
  • Mobile NextPush: Android는 배포 후 기준 Production v20, iOS는 배포 후 기준 Production v17을 기준으로 rollback한다. 직전 label로 되돌릴 때는 Android v19, iOS v16을 기준으로 확인한다.
  • coupler-mobile-app: NextPush-only 배포이므로 Store binary rollback은 대상이 아니다.
  • coupler-admin-web: 이번 릴리스에서 운영 배포하지 않으므로 rollback 대상 N/A다.
  • 운영 RDS: 이번 릴리스에 DB 변경이 없으므로 DB rollback 대상 N/A다.

후속 작업

  • 없음.

관련 문서