[INFRA-07] deploy-dev.yml — dev 자동 배포 워크플로

작업 내용 (설계 의도)

변경 사항

근거 TDD: ../TDD.md “시스템 역할 경계”, “상태 전이 표”. FR-3, NFR(10분). dev 브랜치 push 시 self-hosted runner가 이미지 빌드·배포한다.

  • 트리거: push to dev 브랜치.
  • job(self-hosted runner): checkout → docker build -t sports-backend:latest -t sports-backend:${GITHUB_SHA}scripts/deploy.sh dev ${GITHUB_SHA} → health UP 확인.
  • concurrency: deploy-dev 그룹으로 중복 배포 직렬화.
  • 실패 시 source=deployment 통지(⑩ 연동 지점 — 알림 스텝 자리 표시).
  • NFR: 머지→반영 10분 이내. Success Metrics 근거로 run 이력 기록.

롤백: 배포 실패 시 이전 이미지 유지(deploy.sh exit 1). 자동배포 중단은 워크플로 파일 revert.

의존

  • INFRA-01 (Dockerfile), INFRA-03 (deploy.sh), INFRA-05 (dev override)

다이어그램

처리 흐름

sequenceDiagram
    participant GH as GitHub
    participant Wf as deploy-dev.yml
    participant Rn as self-hosted runner
    GH->>Wf: push dev
    Wf->>Rn: docker build + tag SHA
    Wf->>Rn: deploy.sh dev <sha>
    Rn-->>Wf: health UP → 성공
    Wf-->>GH: run 이력 기록

테스트 케이스

  • actionlint가 error 0건이다
  • dev push 트리거가 워크플로를 기동한다(다른 브랜치는 미기동)
  • 빌드→deploy.sh dev <sha> 호출 흐름이 정의된다
  • concurrency: deploy-dev로 중복 배포가 직렬화된다
  • 배포 실패 시 source=deployment 통지 스텝이 존재한다
  • health UP 확인 후에만 성공 처리한다