여러 개발자의 코드가 실시간으로 병합되고, 테스트가 수행되는 환경, master 브랜치가 푸시되면 배포가 자동으로 이루어지는 환경 구축해 보자
CI, CD
CI(Countinuous Integration. 지속적 통합)
코드 버전 관리를 하는 VCS 시스템(Git, SVN 등)에 PUSH가 되면 자동으로 테스트와 빌드가 수행되어 안정적인 배포 파일을 만드는 과정
CD (Continuous Deployment. 지속적 배포)
빌드 결과를 자동으로 운영 서버에 무중단 배포까지 진행하는 과정
CI 도구를 도입했다고 해서 CI를 하고 있는 것은 아니다.
http://bit.ly/2Yv0vFp
Continuous Integration (original version)
A long-form article entitled: "Continuous Integration (original version)"
martinfowler.com
CI 규칙
- 모든 소스 코드가 살아 있고(현재 실행되고) 누구든 현재의 소스에 접근할 수 있는 단일 지점을 유지할 것
- 빌드 프로세스를 자동화해서 누구든 소스로부터 시스템을 빌드하는 단일 명령어를 사용할 수 있게 할 것
- 테스팅을 자동화해서 단일 명령어로 언제든지 시스템에 대한 건전한 테스트 수트를 실행할 수 있게 할 것
- 누구나 현재 실행 파일을 얻으면 지금까지 가장 완전한 실행 파일을 얻었다는 확신을 하게 할 것
여기서 테스팅 자동화가 중요하다. 지속적 통합을 위해 프로젝트가 완전한 상태임을 보장하기 위해 테스트 코드가 구현되어 있어야만 한다.
https://youtu.be/60lLSe1phks
Github Actions 연동하기
Github Actions를 이용해 볼 것이다.
https://github.com/jojoldu/freelec-springboot2-webservice/issues/806
[정보] p.320 ~ 367 CodeDeploy 유료화로 변경되어 GitHubAction으로 변경해 보았습니다. · Issue #806 · jojold
기존에 올라온 질문이 아닌지 먼저 검색해주세요! 가장 자주 나온 제보 P.105 @PutMapping("/api/v1/posts") P.111 Posts.update 어떤 오류인가요? 오류설명: CodeDeploy 유료화로 GitHubAction으로 무료 변경 Github URL:
github.com
Amazon Linux 또는 RHEL용 CodeDeploy 에이전트 설치 - AWS CodeDeploy
네 번째 명령에서 /home/ec2-user는 Amazon Linux 또는 RHEL Amazon EC2 인스턴스의 기본 사용자 이름을 나타냅니다. 사용자 지정 AMI를 사용하여 인스턴스를 만든 경우 AMI 소유자가 다른 기본 사용자 이름을
docs.aws.amazon.com
위 깃허브 링크의 CodeDeploy 에이전트 설치 방법이 변경되었다. 위 Amazon 문서를 참고하여 설치한다.
sudo yum update
sudo yum install ruby
sudo yum install wget
wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install
chmod +x ./install
sudo ./install auto
https://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/resource-kit.html
CodeDeploy 리소스 키트 참조 - AWS CodeDeploy
CodeDeploy 리소스 키트 참조 CodeDeploy에서 사용되는 여러 파일은 공개적으로 사용할 수 있는 AWS 리전별 Amazon S3 버킷에 저장됩니다. 이러한 파일에는 샘플 애플리케이션 파일, 템플릿 및 CodeDeploy 에
docs.aws.amazon.com
만약 install 설치 중 아래와 같은 에러가 발생했다면 ruby가 설치되어 있지 않아서이다.
// ruby 설치
sudo yum install ruby
appspec.yml 설정 파일을 만들고 깃허브에 푸시를 해줘야 한다. 나는 까먹고 안 한 상태에서 .github/workflows에 있는 yml에 코드를 추가해서 Action에서는 빌드가 성공했지만, CodeDeploy를 보면 배포가 실패했었다.
성공!
yml파일과 sh 파일을 작성할 때 PROJECT_NAME 등을 잘 보고 자신의 프로젝트 네임을 입력해야 한다. (deploy.sh 작성할 때 놓쳐서 시간을 좀 허비했다.;;)
'SpringBoot > AWS' 카테고리의 다른 글
무중단 배포를 진행하며 겪은 에러 (0) | 2023.03.19 |
---|---|
무중단 배포 (0) | 2023.03.19 |
CodeDeploy 로그 확인 (0) | 2023.03.18 |
스프링 부트에서 작성하는 테스트 코드 (0) | 2023.03.14 |
스프링 부트 시작하기 (0) | 2023.03.14 |