스프링부트 공부기록(16) - Travis CI 배포 자동화, S3, CodeDeploy 연동
my code archive
article thumbnail
반응형

🔍앞서 진행한 배포의 불편한 점

  • 수동 실행되는 Test : 본인이 짠 코드를 확인하기 위해 전체 테스트를 수행해야만 함.
  • 수동 Build : 다른 사람이 작성한 브랜치와 본인이 작성한 브랜치가 합쳐졌을 때(Merge) 이상이 없는지는 Build를 수행해야만 알 수 있고 이를 매번 개발자가 직접 실행해야 함.

=> 24시간, 365일 운영되는 서비스에서 배포 환경 구축은 필수 과제임. 

 

🤍CI & CD

하나의 프로젝트를 여러 개발자가 함께 진행 시 각자 개발한 코드를 합치는 것이 번거로움.

  • CI, CD : 지속해서 코드가 통합되는 환경을 구축하는 것. 깃허브에 푸시될 때마다 코드를 병합, 더는 수동으로 코드를 통합할 필요가 없어짐.
  • 특히나 중요한 것은 테스팅 자동화.

🤍Travis CI 연동하기

Travix 홈페이지에서 깃허브 계정으로 로그인 후 오른쪽 위에 계정명 -> Settings 클릭

 

깃허브 저장소 활성화

 

travis.yml 생성

  • yml : JSON에서 괄호를 제거한 것.

 

yml 파일 작성 후 깃허브 커밋하고 Travis CI 저장소 페이지 확인해 보면 빌드 성공이 뜬다.

 


🤍Travix CI와 AWS S3 연동하기

  • S3 : AWS에서 제공하는 일종의 파일 서버, 보통 이미지 업로드를 구현할 때 사용함.
  • 실제 배포는 AWS CodeDeploy라는 서비스를 이용하지만 Jar 파일을 전달하기 위해 S3 연동이 먼저 필요함.

 

AWS Key 발급

  • 일반적으로 AWS 서비스에 외부 서비스가 접근할 수 없음 -> 접근 가능한 권한을 가진 Key를 생성해서 사용해야함.
  • AWS에서는 이러한 인증과 관련된 기능을 제공하는 서비스로 IAM이 있음.

사용자 추가 버튼 클릭

 

액세스 유형은 프로그래밍 방식 엑세스 체크

 

  • 기존 정책 직접 연결
  • s3full 검색하여 체크

 

  • CodeDeployFull 검색하여 체크

 

  • 태그 Name 값 지정

 

Travis CI에서 사용될 엑세스키, 비밀 엑세스 키가 생성되었다.

Travix CI에 키 등록

설정 화면으로 이동

 

Environment Variables 항목에서 아까 발급받은 키 값 등록

 

S3 버킷 생성

  • S3은 보통 게시글을 쓸 때 나오는 첨부파일 등록 시 많이 이용함. S3에 저장된 Build 파일은 이후 AWS의 CodeDeploy에서 배포할 파일로 가져도록 구성 예정.

 

버킷 만들기 클릭

 

모든 퍼블릭 액세스 차단

  • 실제 서비스에서는 Jar 파일이 퍼블릭일 경우 누구나 내려받을 수 있어 중요한 정보가 탈취될 수 있기 때문에 IAM 사용자로 발급받은 키를 사용해야함.

Travis CI에서 빌드하여 만든 Jar파일을 S3에 올릴 수 있도록 travis.yml에 코드

 

깃허브 푸시 후 아래 로그가 나오면 Travis CI 빌드가 성공한 것이다.

 

S3 버킷을 가보면 업로드 성공!

 

🤍Travis CI와 AWS S3, CodeDeploy 연동하기

 

EC2에 IAM 역할 추가하기

IAM 검색 후 역할 탭을 클릭해서 이동, 역할 만들기 버튼 클릭

  • 역할 : AWS 서비스에만 할당할 수 있는 권한(EC2,CodeDeploy,SQS 등)
  • 사용자 : AWS 서비스 외에 사용할 수 있는 권한

 

AWS 서비스, EC2 선택

 

권한 추가

 

태그 Name 추가 

 

EC2 서비스에 등록하기 위해 인스턴스 설정->IAM 역할 연결/바꾸기 선택

 

방금 생성한 역할 선택

 

재부팅을 해야 역할이 정상적으로 적용된다.


🤍CodeDeploy 에이전트 설치

EC2에 접속해서 설치 후 실행 권한 추가한 뒤 상태 검사 해보면 running 이라고 정상 메시지가 출력됨.

 

CodeDeploy에서 EC2에 접근하려면 마찬가지로 권한이 필요하므로 IAM 역할 생성하기

 

CodeDeploy는 권한이 하나 뿐이라 선택 없이 바로 다음으로 넘어가면 된다.

 

Name 태그 추가

 

CodeDeploy 생성

CodeDeploy 서비스로 이동해서 애플리케이션 생성 버튼 클릭

 

컴퓨터 플랫폼에선 EC2/온프레미스 선택

 

배포 그룹 생성

 

현재 위치 선택

 

Amazon EC2 인스턴스 체크

 

ㅇ...왜죠????

 

왜 실패야!!!

 

오타였다고 한다..^^

 

다시 커밋하고

 

드디어 성공!!

 

Travis CI, S3, CodeDeploy 연동

 

appspec.yml 파일 생성

 

travis.yml에 CodeDeploy 내용 추가

 

배포가 끝난 다음 cd /home/ec2-user/app/step2/zip 명령어를 실행하면 프로젝트 파일들이 잘 도착한 것을 확인할 수 있다.

반응형
profile

my code archive

@얼레벌레 개발자👩‍💻

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

반응형