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-web는 member_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 제출/승인은 이번 릴리스 범위에 포함하지 않는다.
메인 흐름
- 배포 범위를
coupler-admin-web, coupler-api, docs, Tag/Release Record로 고정하고, Mobile Store 2.2.1 (100)은 별도 릴리스로 분리했다.
- 계약 호환 순서를 고려해
coupler-admin-web를 먼저 운영 배포했다.
coupler-admin-web 로컬 품질 게이트와 production build를 완료했다.
- 운영 EC2의 기존 Admin 정적 산출물을
/var/www/coupler-admin-web-backup-20260705213140로 백업했다.
coupler-admin-web/build/ 산출물을 /var/www/coupler-admin-web/로 업로드하고 내부/외부 응답을 확인했다.
- 운영
coupler-api를 origin/main의 ae7b81558ee01c86a6d19a9a98bd6c288d6a0a0d까지 fast-forward 반영했다.
- 운영
coupler-api에서 pnpm install --frozen-lockfile, pm2 restart coupler-api --update-env, pm2 save를 수행했다.
- 운영 API 내부/외부 응답, DB-backed 공개 API, PM2 상태, 로그를 확인했다.
coupler-mobile-app Android/iOS NextPush Production label/history를 Store 버전과 분리해 확인했다.
- NextPush Android/iOS Production history에서 label, target binary version, package hash, rollout/mandatory/disabled 상태를 확인했다.
- 운영 검증 완료 후
coupler-admin-web v2.1.3, coupler-api v2.2.3 annotated tag를 생성하고 원격에 push했다.
- 이 문서를 운영 결과로 갱신하고 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다.
후속 작업
관련 문서