728x90
사전지식
https://galid1.tistory.com/459 - CI/CD 란 ?
https://galid1.tistory.com/743 - 로컬 PC에 Jenkins를 이용해 CICD 환경 구축하기
https://galid1.tistory.com/745 - codedeploy란?, codedeploy로 자동배포환경 구축하기
https://blog.ull.im/engineering/2019/06/25/git-workflow-for-ci-cd.html - cicd를 위한 git workflow 브랜치 전략
이전에 포스팅한 위 내용들을 먼저 참고하시면 이 글을 이해하시기 더욱 편리합니다.
아키텍쳐
저희가 구축할 아키텍쳐는 위그림과 같습니다. Docker를 이용해 설치한 Jenkins
가 통합 즉, CI
를 담당하며, CodeDeploy
가 CD
역할을 맡아 EC2들에게 배포를 합니다. 통합 및 배포가 모두 완료되면, SNS를 통해 Slack의 개발자 채널에 알립니다.
자세한 과정은 아래에서 다시 설명드리겠습니다.
필요조건
- Codedeploy Agent가 설치된 Ec2 서버 2대(Codedeploy와 S3에 접근가능한)
- Load Balander
- S3 버킷
- CodeDeploy Application
- Jenkins(+ AWS CodeDeploy Plugin)가 설치된 서버 1대 (CodeDeploy에 접근 가능한)
과정
Jenkins
는 자동 테스트 및 빌드를 진행할 CI Tool
로써 사용할 것이며, AWS Code deploy
는 자동배포를 진행할 CD Tool
로써 사용할 것입니다.
- 개발자가 소스코드를 GitHub에 업로드합니다.
- GitHub의 WebHook을 통해 Jenkins에게 알립니다.
- Jenkins에서 GitHub로부터 소스코드를 받아와 테스트 후 빌드를 합니다.
- Jenkins에서 빌드된 app과, appspec.yml 그리고 scripts를 번들링하여 S3 버킷에 업로드합니다.
- 업로드가 완료되면, CodeDeploy에게 배포 요청을 합니다.
- 배포가 시작되면 EC2에서 S3버킷으로부터 app과 appspec, scripts를 다운 받고, appspec에 기술된 내용을 바탕으로 script를 실행합니다.
- 배포가 완료되면 SNS가 알림을 받습니다.
- SNS가 Lambda를 트리거합니다.
- Slack에 존재하는 개발자 채널에 알립니다.
다음 포스팅에서는 위 내용을 바탕으로 CICD환경을 구축해보도록 하겠습니다.
'Software Engineering > CICD (jenkins, etc)' 카테고리의 다른 글
CICD - Jenkins와 CodeDeploy를 이용한 CICD 구축하기 - 3 (Slack 채널에 메시지 보내기) (0) | 2020.06.24 |
---|---|
CICD - Jenkins와 CodeDeploy를 이용한 CICD 구축하기 - 2 (구축) (2) | 2020.06.23 |
CICD - Codedeploy란? (Codedeploy를 이용한 자동배포(CD) 환경 구축하기) (1) | 2020.06.22 |
CICD - 로컬 PC에 CICD환경 구축하기 (Jenkins, Ngrok, docker) (3) | 2020.06.17 |
Jenkins - AmazonLinux2 에서 Jenkins 구축 및 gitlab 연동 (push 시 자동 빌드) (0) | 2019.07.12 |