728x90
항해 73일차
Travis CI와 AWS S3 연동
배포하기전에 Travis CI를 통해 빌드된 결과물을 보관할 수 있는 공간이 필요하다.
AWS S3에 저장한다.
S3 버킷 생성
파일들을 저장하고 접근 권한을 관리, 검색 등을 지원하는 파일 서버의 역할을 한다.
팀 프로젝트에서 S3를 사용하고 있는데 기존에는 게시글 작성 시 첨부되는 파일을 저장하는 용도로 사용하고 있다.
버킷 생성은 https://velog.io/@kyungwoon/TIL-%ED%95%AD%ED%95%B499-Day-50
참고하면 된다.(1번,2번,4번 과정 참고)
단, 2번 과정에서 모든 퍼블릭 액세스 차단에 체크해준다.
현재 프로젝트야 이미 깃허브에 오픈소스로 풀려있으니 문제없지만, 실제 서비스에서 할 때는 Jar 파일이 퍼블릭일 경우 누구나 내려받을 수 있어 코드나 설정값, 주요 키값들이 다 탈취될 수 있다.
퍼블릭이 아니더라도 IAM 사용자로 발급받은 키를 사용하니 접근 가능하므로 모든 액세스를 차단하는 설정에 체크
AWS Key 발급 과정
Travis CI가 AWS의 S3와 CodeDeploy에 접근할 수 있도록 설정해줘야 한다.
이미 사용자를 생성해놨다면 사용자명을 클릭해서 들어가 권한 추가를 해주면 되고 생성해둔 사용자가 없다면 사용자 추가를 눌러 생성해준다.
- 권한 설정 방식은 3개 중[기존 정책 직접연결]을 선택한다.
- 정책 검색에서 s3full로 검색하여 체크하고 다음 권한으로 CodeDeployFull을 검색하여 체크 후 완료
Travis CI에 키 등록
- 설정 화면으로 이동 후 아래로 조금 내려보면 Environment Variables 항목이 있다.
여기에 AWS_ACCESS_KEY, AWS_SECRET_KEY를 변수로 해서 IAM 사용자에서 발급받은 키 값들을 등록한다.
.travis.yml 추가
- Travis CI에서 빌드하여 만든 Jar 파일을 S3에 저장을 위해 .travis.yml에 다음 코드를 추가
before_deploy:
- zip -r hanghae8-final-project ./*
- mkdir -p deploy
- mv hanghae8-final-project.zip deploy/hanghae8-final-project.zip
deploy:
- provider: s3
access_key_id: $AWS_ACCESS_KEY
secret_access_key: $AWS_SECRET_KEY
bucket: hanghae8-final-project-travis # S3 버킷
region: ap-northeast-2
skip_cleanup: true
acl: private # zip 파일 접근을 private으로
local_dir: deploy # before_deploy에서 생성한 디렉토리
wait-until-deployed: true
전체 코드
language: java
jdk:
- openjdk8
branches:
only:
- master
# Travis CI 서버의 Home
cache:
directories:
- '$HOME/.m2/repository'
- '$HOME/.gradle'
before_install:
- chmod +x gradlew
script: "./gradlew clean build"
before_deploy:
# - zip -r hanghae8-final-project ./*
# - mkdir -p deploy
# - mv hanghae8-final-project.zip deploy/hanghae8-final-project.zip
- mkdir -p before-deploy
- cp scripts/*.sh before-deploy/
- cp appspec.yml before-deploy/
- cp build/libs/*.jar before-deploy/
- cd before-deploy && zip -r before-deploy *
- cd ../ && mkdir -p deploy
- mv before-deploy/before-deploy.zip deploy/hanghae8-final-project.zip
deploy:
- provider: s3
access_key_id: $AWS_ACCESS_KEY
secret_access_key: $AWS_SECRET_KEY
bucket: hanghae8-final-project-travis # S3 버킷명
region: ap-northeast-2
skip_cleanup: true
acl: private # zip 파일 접근을 private으로
local_dir: deploy # before_deploy에서 생성한 디렉토리
wait-until-deployed: true
# CI 실행 완료 시 메일로 알람
notifications:
email:
recipients:
- 본인 이메일
- 설정이 다 되었다면 깃허브 푸시를 하고 Travis CI에서 모든 빌드 성공 확인 후
- S3버킷으로 가보면 업로드가 성공한 것을 확인 가능하다.
'Spring' 카테고리의 다른 글
Nginx 무중단 배포 (0) | 2024.04.16 |
---|---|
Travis CI와 AWS S3, CodeDeploy 연동 (3) (0) | 2024.04.16 |
Travis CI 연동 (1) (0) | 2024.04.16 |
CI/CD (1) | 2024.04.16 |
WebSocket_2 (0) | 2024.04.15 |