CI/CD
-
CI (Continuous Integration, 지속적 통합)
⇒ 개별적으로 작성한 코드를 지속적으로 통합하여 통합 오류를 최소화하고 품질을 유지
-
CD (Continuous Delivery/Continuous Deployment, 지속적 전달/지속적 배포)
⇒ CI의 결과물을 자동으로 테스트하고 배포하는 프로세스
개발에만 집중할 수 있도록, 개발 초기에 CI/CD 환경을 구축하기로 했습니다 :)
GithubActions / Jenkins 설정 방법
- GithubActions + Docker
- Jenkins + Docker
GithubActions 선택 이유
⇒ Jenkins는 오랜 기간 사용되어 온 기술이기 때문에 참고할 자료가 많았지만, 알아야 할 설정들이 많았고, 플러그인에 의존적이라는 단점이 있었습니다. 반면, GithubActions는 잘 만들어진 템플릿을 통해 간단하게 CI/CD 설정이 가능했으며, 무엇보다 Github와 연동되어 접근성이 좋았습니다.
PipeLine 설명
- yml 파일을 통해 CI 설정 → feat 브랜치에서 push가 발생할 경우, 통합(CI)을 위한 테스트 진행
- CD 설정 → feat 브랜치에서 dev 브랜치로 PR이 발생할 경우, 테스트 진행
- develop 브랜치 혹은 main 브랜치로 merge가 일어나는 경우, 테스트 진행
- Docker Image 파일 빌드 → Docker Hub로 push 진행
- EC2 dns와 pem키를 통해 접속한 후, DockerHub에서 image pull 받기