Description 작업 배경
PR #35에서 GSMSV 운영용 Dockerfile, docker-compose.prod.yml, application-prod.yaml, .env.production.example이 develop에 반영되었습니다.
GSMSV 최초 수동 배포 이후 develop 반영을 기준으로 이미지를 만들고 서버에 자동 배포할 CD가 필요합니다.
현재 GitHub Secret이 등록되지 않았으므로, 준비 전 develop Push마다 실제 배포가 실행되거나 실패하는 Workflow를 만들지 않습니다.
목표
develop 반영을 운영 배포 기준으로 사용합니다.
GHCR에 commit SHA 기반 불변 이미지를 빌드·Push합니다.
GSMSV 서버에 전용 SSH Key로 접속해 /opt/mudda의 운영 Compose를 갱신합니다.
App readiness 통과를 배포 성공 조건으로 사용합니다.
배포 시작·성공·실패 및 rollback 결과를 Discord embed로 알립니다.
구현 체크리스트
문서·검증
제외 범위
GitHub Secret·Variable 실제 생성·등록 및 실제 Webhook 호출
GSMSV 서버 SSH 접속·실제 배포
자동 DB rollback, Blue-Green, Kubernetes, Nginx·Certbot
운영 Docker 파일의 기능 범위를 넘어서는 애플리케이션 변경
실제 Secret·SSH Key·AWS/OAuth Credential 생성 또는 출력
완료 조건
Secret 미등록 상태에서 자동 배포가 안전하게 비활성화됩니다.
dry-run과 검증 가능한 CD 흐름이 구현되고 운영 문서가 작성됩니다.
SHA rollback 기준과 DB migration 호환성 위험이 문서화됩니다.
develop 대상 PR이 생성되며 병합하지 않습니다.
대상 브랜치: develop
Reactions are currently unavailable
You can’t perform that action at this time.
작업 배경
Dockerfile,docker-compose.prod.yml,application-prod.yaml,.env.production.example이develop에 반영되었습니다.develop반영을 기준으로 이미지를 만들고 서버에 자동 배포할 CD가 필요합니다.developPush마다 실제 배포가 실행되거나 실패하는 Workflow를 만들지 않습니다.목표
develop반영을 운영 배포 기준으로 사용합니다./opt/mudda의 운영 Compose를 갱신합니다.구현 체크리스트
developPush 자동 실행과workflow_dispatch수동 실행을 구성합니다.CD_ENABLED가 정확히true일 때만 자동 배포합니다.workflow_dispatch에 기본값dry-run: true입력을 제공합니다.GITHUB_TOKEN으로 GHCR에 인증하고 SHA 불변 태그를 사용합니다.Dockerfile을 재사용합니다.APP_IMAGE환경변수로 운영 Compose의 이미지 주소를 주입합니다.docker compose build/up방식을 유지합니다.DEPLOY_HOST,DEPLOY_PORT,DEPLOY_USER,DEPLOY_SSH_KEY,DISCORD_DEPLOY_WEBHOOK_URL을 지원합니다..env.production을 읽거나 출력하지 않습니다.문서·검증
CD_ENABLED활성화 순서를 문서화합니다.제외 범위
완료 조건
develop대상 PR이 생성되며 병합하지 않습니다.대상 브랜치:
develop