Files
baron_qa_write/docs/qa-production-deployment-checklist.md
T
root 0755155368
Deploy EG-BIM QA Gateway / deploy (push) Failing after 7s
feat: add manual production deployment pipeline
2026-10-28 14:14:02 +09:00

7.5 KiB

Q&A 운영 배포 체크리스트

대상 도메인: https://qa.baroncs.co.kr 정리일: 2026-10-28

현재 저장소에서 확인한 상태

  • 스테이징은 baron-qa-gateway-test, qa-test.baroncs.co.kr, baron-qa-pages를 사용한다.
  • 운영 Worker baron-qa-gateway-prod, custom domain qa.baroncs.co.kr, R2 버킷 baron-qa-write 생성과 연결을 사용자가 완료했다.
  • 운영 전용 wrangler.production.toml과 수동 배포 workflow Deploy EG-BIM QA Production을 추가했다.
  • 운영 등록값과 실행 방법은 production 파이프라인 안내를 따른다. 실제 운영 배포는 아직 수행하지 않았다.

내가 준비·확정할 항목

1. DNS와 Cloudflare

  • baroncs.co.kr zone이 운영 Cloudflare 계정에 있는지 확인했다.
  • qa.baroncs.co.kr을 운영 Worker custom domain으로 연결했다.
  • 스테이징과 같은 Cloudflare 계정에 운영 Worker와 버킷을 생성했다.
  • 운영 정적 파일용 R2 버킷을 생성했다: baron-qa-write. 스테이징 baron-qa-pages와 분리해 사용한다.
  • 배포용 Cloudflare API token에 계정 범위의 Workers Scripts Read/Write, Workers R2 Storage Read/Write, Account Settings Read 권한을 부여하고 PROD_CLOUDFLARE_API_TOKEN Secret에 등록했다. 사용자 등록 완료 보고 기준이며 실제 token 인증은 배포 실행 시 검증한다. 도메인 연결은 대시보드에서 완료했다. 권한 상세

2. SSO 운영 등록

  • 운영 callback URI를 SSO에 등록했다: https://qa.baroncs.co.kr/auth/callback. 사용자 완료 보고 기준이다.
  • 로그아웃 후 이동 URI를 SSO에 등록했다: https://qa.baroncs.co.kr/. 사용자 완료 보고 기준이다.
  • 운영 SSO 설정에 맞는 PROD_AUTH_CLIENT_ID 등 관련 변수 등록을 완료했다. 실제 로그인 동작 확인은 운영 배포 후 수행한다.
  • 운영 도메인에서 실제 사내 사용자로 로그인·로그아웃할 수 있는지 확인한다.

3. ABC UserFeedback 운영 대상

  • 보류 — 관리페이지 서버 확정 후 진행: 운영 API 주소를 확정하고 PROD_ABC_API_BASE_URL에 등록한다.
  • 보류 — 관리페이지 서버 확정 후 진행: 운영 project ID와 channel ID를 확정하고 PROD_ABC_PROJECT_ID, PROD_ABC_CHANNEL_ID에 등록한다. 현재 저장소의 ID를 운영에서 재사용해도 되는지 확인한다.
  • 보류 — 관리페이지 서버 확정 후 진행: 운영 project/channel에 문의 생성, 첨부, 댓글 조회·등록·수정·삭제 권한이 있는 API key를 준비하고 Gitea Secret PROD_ABC_API_KEY에 등록한다. 이 키가 등록될 때까지 첫 운영 배포는 진행하지 않는다.
  • requester_affiliation, requester_department 필드가 운영 channel에서 허용되는지 확인한다.
  • 운영 문의를 스테이징 데이터와 분리할지 결정한다. 기존 데이터 이전이 필요하면 별도 이관 범위와 실행 계획을 정한다.
  • 운영 source namespace와 idempotency consumer를 스테이징과 구분할 값을 정한다.

4. 조직 컨텍스트 API

  • 운영에서 조회할 기준 tenant UUID를 확정한다. 여러 개면 JSON 배열로 제공한다.
  • 운영용 ORG_CONTEXT_KEY_ID와 ORG_CONTEXT_KEY_SECRET을 준비한다. 스테이징 키 재사용이 허용되는지 API 소유자에게 확인한다.
  • 운영 키가 해당 기준 tenant에 대해 SCOPED / identifiers 조회 권한을 갖는지 확인한다.
  • 운영 설정으로 org API 사전 검증을 통과시킨다. 키와 조직 원문이 빌드 로그에 출력되지 않는지 확인한다.

5. 운영 배포 값 등록

스테이징에 등록한 STAGING_* 값은 운영 배포에 자동 적용되지 않는다. production 파이프라인 안내의 확정된 PROD_* 등록 목록을 사용해 Gitea Actions Variables / Secrets에 등록한다. 아래는 운영 대상 값의 요약이다.

  • 사용자 보고 기준, 관리페이지 연동 PROD_ABC_* 4개를 제외한 운영 Secrets와 Variables 등록을 완료했다. 실제 연결·권한은 배포 전에 검증한다.

운영 설정

설정 운영 값
Worker 이름 baron-qa-gateway-prod
Worker custom domain qa.baroncs.co.kr
AUTH redirect URI https://qa.baroncs.co.kr/auth/callback
AUTH post logout URI https://qa.baroncs.co.kr/
AUTH client ID 운영 SSO client ID
ABC API base URL https://feedback.hmac.kr 또는 운영 API 주소
ABC project ID / channel ID 운영 대상 ID
ABC source namespace / idempotency consumer 스테이징과 구별되는 운영 값
R2 bucket baron-qa-write
ORG_CONTEXT_ENABLED true
ORG_CONTEXT_API_URL https://sadmin.hmac.kr/api/v1/integrations/org-context
ORG_CONTEXT_SCOPE_MODE / EXPOSURE SCOPED / identifiers
ORG_CONTEXT_TENANT_IDS 운영 기준 tenant UUID JSON 배열
ORG_CONTEXT_CACHE_TTL_SECONDS 300 권장

운영 Secrets 용도

Secret 용도
Cloudflare API token 운영 Worker와 정적 파일 배포
SESSION_SECRET 운영 세션 서명용. 스테이징과 별도 값
ABC_API_KEY 운영 ABC project/channel API 접근
ORG_CONTEXT_KEY_ID 조직 컨텍스트 연동 Key ID
ORG_CONTEXT_KEY_SECRET 조직 컨텍스트 연동 Key Secret

Secret 원문은 소스, Markdown, 채팅, workflow 로그에 넣지 않는다.

개발 측에서 필요한 변경

  • 스테이징 설정을 보존하면서 production 전용 Wrangler 설정을 추가했다.
  • Worker 이름, domain, OAuth URL, R2 bucket, ABC 대상, 조직 API 값을 환경별로 분리했다.
  • 별도 운영 배포 스크립트를 추가하고, 운영 배포 전에 npm run org:verify를 수행하도록 연결했다.
  • production 수동 배포 workflow에 PROD_* 매핑과 필수값 검증을 추가했다.
  • 운영 정적 파일을 운영 버킷의 커밋별 release 경로에 업로드하도록 연결했다.
  • 배포 실행 전에 변경 범위와 대상 도메인을 검토하고, staging 배포와 product 배포가 섞이지 않도록 확인한다.

운영 배포 후 확인

  • https://qa.baroncs.co.kr의 TLS 인증서와 정적 페이지 응답을 확인한다.
  • SSO 로그인·로그아웃 및 세션 쿠키 동작을 확인한다.
  • 회사·부서가 조직 API 기준 정보와 일치하는지 확인한다.
  • 텍스트 문의와 이미지 첨부 문의를 각각 1건 등록하고, 운영 ABC 화면의 requester 정보·회사·부서 값을 확인한다.
  • 목록, 상세, 댓글 조회·등록을 확인하고 댓글 수정·삭제 권한을 작성자 기준으로 확인한다.
  • 브라우저 Network 탭과 Cloudflare Worker logs에 API key, 연동 secret, 사용자 전화번호 원문이 노출되지 않는지 확인한다.
  • 오류 시 이전 Worker 버전으로 되돌리는 방법과 담당자를 기록한다.

진행 순서

  1. 사용자가 DNS/SSO/ABC/Cloudflare 운영 값과 데이터 분리 방침을 확정한다.
  2. 개발 측에서 production 설정·workflow를 분리하고, 운영 변수·secret 이름을 확정해 공유한다.
  3. 사용자가 운영용 Gitea Variables/Secrets를 등록한다.
  4. production 조직 API 사전 검증과 배포 전 점검을 통과시킨다.
  5. production 배포 승인 후 qa.baroncs.co.kr에서 위 운영 확인 항목을 완료한다.