우아한테크코스 5기 레벨3 팀 프로젝트 중, CI/CD 툴로 Github Actions를 선택한 이유와 에 대해 간단하게 정리해보려 한다.
Continuous Injection + Continuous Deployment 의 약자로,
지속적인 통합, 배포를 의미한다.
협업과 버전 관리를 진행하는 프로젝트에서 변경 사항이 생길 때 마다 개발자가 직접 코드를 테스트하고, 서버에 배포하는 과정을 반복하는 것은 귀찮은 일이다. 이러한 과정을 자동화해주는 것이 바로 CI/CD 이다.
CI는 작업한 feat 브랜치가 main 브랜치와 합쳐졌을 때, 모든 테스트를 성공적으로 통과하는지 확인하는 단계를 자동화해준다.
CI가 실패하면 CD까지 이어지지 않도록 설정하기 때문에 테스트에 실패하는 어플리케이션이 배포되는 상황을 최소화해준다.
또한, PR이 열리자마자 CI가 진행되기 때문에 오류를 초기에 발견할 수 있다.
CD는 CI가 통과한 후, 변경된 코드를 서버에 배포하는 과정을 자동화하기 때문에 개발자가 직접 서버에 접속해야할 필요가 사라진다.
특히, 우아한테크코스에서는 EC2에 ssh 접속할 수 있는 IP가 제한되어 있기 때문에 배포 자동화를 사용하면 허용 IP가 아닌 상황에서도 배포가 가능하다.
팀의 개발 서버 CI/CD 플로우를 간략하게 정리하면 다음과 같다.
( S-HOOK에서는 실제 배포용 브랜치인 main과 작업 브랜치인 feat 브랜치들로 구성된 Github Flow를 사용하고 있다. )
S-HOOK에서는 CI/CD 툴로 Github Actions를 선택했다.
Github Actions는 Github Repository에서 바로 workflow를 자동화할 수 있도록 도와주는 툴이다.
GitHub Actions 이해 - GitHub Docs
Github Actions를 선택했을 때의 장점은 다음과 같다.
jobs:
build:
name: CI
runs-on: ubuntu-22.04
이렇게 workflow에서 작업을 실행할 환경을 지정하면, repository 내에 가상 환경이 구축되고, 해당 환경에서 CI를 진행할 수 있다.
따라서 실제 서버를 구축하지 않아도 배포 서버와 동일한 환경에서 테스트가 성공하는지 검증할 수 있기 때문에 관리 및 유지보수 비용을 줄일 수 있다.
Github Actions는 ./github/workflows
하위의 {파일명}.yml
파일들을 통해서 모든 CI/CD 플로우를 관리할수 있다.
플로우를 수정하거나, 추가하고 싶으면 repository에서 빠르게 수정하고 반영할 수 있다.
steps:
- uses: actions/checkout@v2 # 마켓에서 제공되는 체크아웃 액션
팀원들이 모두 Github와 yml 파일의 구조에 익숙하기 때문에 다른 CI/CD 툴들에 비해 학습 곡선이 완만하다.
Github Actions를 사용한 CI/CD 구축 방법 및 트러블 슈팅은 다음 글에 이어서 작성하겠다.
좋은 글이네요. 공유해주셔서 감사합니다.