self-hosted runner로 만든 dev / prd 배포 파이프라인
브랜치 전략
| 브랜치 | 용도 | 배포 |
|---|---|---|
feature/* |
기능 개발 | PR 때 CI 빌드 검증만 |
develop |
통합 | push/merge 하면 dev 자동 배포 |
release/YYYYMMDD |
운영 후보 | Actions에서 수동 실행 → prd |
main |
운영에 나간 코드 | prd 검증 후 merge |
release가 아닌 브랜치에서 prd 배포를 실행하면 reject 잡이 바로 실패시킵니다.
파이프라인
develop push → 사무실 Mac 러너가 잡을 가져가 docker build → kind load → terraform apply (롤링 업데이트) → infra 저장소에 배포 기록 커밋
왜 self-hosted runner인가
사무실은 이중 NAT라서 GitHub이 사무실 서버로 들어올 수 없습니다. 러너는 바깥으로 GitHub에 붙어 일을 가져가므로 포트포워딩이 필요 없습니다. 이미지도 같은 Mac에서 빌드하니 레지스트리 없이 kind load로 넣습니다.
왜 배포 기록을 Git에 남기나
- "지금 prd에 무엇이 떠 있나"를 커밋 이력으로 확인할 수 있습니다.
- 롤백할 때는 이미지 태그 파일을 이전 값으로 되돌리고 apply하면 됩니다.
GET /api/v1/system/version이 현재 배포 환경과 버전을 알려줍니다.
보안
infra 저장소는 public입니다. 외부 포크 PR이 사무실 Mac에서 코드를 실행하지 못하도록 외부 기여자 워크플로는 승인을 거치게 했습니다. self-hosted 러너 잡은 pull_request로 트리거하지 않습니다.