최종 전체 아키텍처

GitHub Push ↓ GitHub Actions ↓ Gradle Build ↓ Docker Image 생성 ↓ DockerHub Push ↓ EC2 SSH 접속 ↓ 컨테이너 재배포

로컬 테스트(인텔리제이)

인텔리제이에서 .env를 넣는 방법은 크게 어렵지 않다.
평소 파이썬에서 하듯이 .env에 필요한 환경변수들(예르 들어서 db비밀번호 같은 애들)을 넣어주고 중요한 것은 당연하지만 .gitignore에 포함시키거나 수동으로 git파일에서 제외를 시켜줘야한다.
그 이후에 디버그 옆에 있는 점 세개(한글 기준 액션 더보기)를 누르면 .env파일을 등록할건지 아니면, env없이 개인이 알아서 환경변수 설정을 할 것인지 테스트할 수 있다.

깃허브 Actions를 위한 준비

레파지토리의 셋팅에 들어가면 Secrects and variables탭이 있다.
거기에 들어가서 Actions를 누르고 뉴 레파지토리 시크릿을 누르면 완료가 된다.

CI/CD설정하기

main브랜치에 .github/workflows를 만들어준다.
그리고 나는 사실 권장은 아니지만 그냥 gradle.yml하나로 모두 처리를 했다.

주요 브랜치에서는 pull_request 시 CI만 실행되도록 구성하였다. 이는 검증되지 않은 코드가 바로 배포되는 것을 방지하기 위함이다.

비록 1인 개발 환경에서는 pull_request와 push의 경계가 다소 모호할 수 있지만, 머지 이전 단계에서 빌드 검증을 수행하는 구조를 유지하는 것이 중요하다고 판단하였다.

반면 CD는 push 이벤트에서만 실행되도록 설정하였다. 즉, pull_request가 머지된 이후 발생하는 push를 기준으로 배포가 이루어진다.

이를 통해 검증이 완료된 코드만 실제 서버에 반영되도록 구성하였다.

댓글남기기