본문 바로가기

PROGRAMMING/CI&CD

4-3. AWS EC2와 CodeDeploy 연동하기

이전글

https://dvpdvp.tistory.com/196

 

4-2. AWS EC2와 CodeDeploy 연동하기

이전글 https://dvpdvp.tistory.com/195?category=996035 4-1. AWS EC2와 CodeDeploy 연동하기 이전글 https://dvpdvp.tistory.com/194?category=996035 AWS EC2에 배포를 해보려 한다. 첫 번째 할 일은" data-og-..

dvpdvp.tistory.com

전체 과정

Push로 Travis 빌드 -> IAM키 발급 >  AWS S3를 통해 업로드 -> AWS CodeDeploy -> AWS EC2에 배포

 

이번 포스트에선

1.  EC2에 배포 디렉토리 생성

2. Travis와 CodeDeploy 연동 이 두가지 작업을 해보려한다.

 

이제 이 작업이 마무리되면 배포스크립트 작성만하면 된다!

 

배포 디렉토리는 원하는 위치에 생성하면 된다.

나는 /home/ec2-user/app/deploy/zip 이렇게 생성하였다.

mkdir /home/ec2-user/app/deploy && /home/ec2-user/app/deploy/zip

 

EC2에 디렉토리를 생성하였다면 

.travis.yml이 위치해있는 곳에 codeDeploy 설정파일을 생성한다.

destination은 위에서 생성한 디렉토리 위치를 입력하면된다.

 

version : 0.0 #CodeDeploy version
os: linux
files:
  - source: /
    destination: /home/ec2-user/app/deploy/zip #EC2 deploy file path
    overwrite: yes

파일명은 appspec.yml

 

그리고 travis와 codeDeploy 연동 설정을 .travis.yml에 추가해준다.

 

추가될 설정

 

  deploy:
   - provider: codedeploy
    access_key_id: $AWS_ACCESS_KEY #Travis에 저장한 키 변수 사용
    secret_access_key: $AWS_SECRET_KEY #Travis에 저장한 키 변수 사용
    bucket: taglog-build
    key: taglog.zip
    bundle-type: zip
    application: taglog #Codedeploy에 설정한 application 명
    deployment_group: taglog #Codedeploy에 설정한 deployment_group
    region: ap-northeast-2
    wait-until-deployed : true

 

전체 설정

language: java
jdk:
  - openjdk11

branches:
  only:
    - master

# Travis ci 서버의 home
cache:
  directories:
    - '$HOME/.m2/repository'
    - '$HOME/.gradle'

script: "./gradlew clean build"

# CI 실행 완료시 메일로 알람
notifications:
  email:
    recipients:
      - email
    on_success: never # default: change
    on_failure: always # default: always

before_deploy:
  - zip -r taglog * #파일 압축
  - mkdir -p deploy #travis가 설치된 위치에 배포 디렉토리 생성
  - mv taglog.zip deploy/taglog.zip
deploy:
  - provider: s3
    access_key_id: $AWS_ACCESS_KEY #Travis에 저장한 키 변수 사용
    secret_access_key: $AWS_SECRET_KEY #Travis에 저장한 키 변수 사용
    bucket: taglog-build
    region: ap-northeast-2
    skip_cleanup: true
    acl: private #zip 파일 접근을 private으로
    local_dir: deploy #before_deploy에서 생성한 디렉토리. 여기에 있는 파일만 s3로 전송
    wait-until-deploy: true

  - provider: codedeploy
    access_key_id: $AWS_ACCESS_KEY #Travis에 저장한 키 변수 사용
    secret_access_key: $AWS_SECRET_KEY #Travis에 저장한 키 변수 사용
    bucket: taglog-build
    key: taglog.zip
    bundle-type: zip
    application: taglog #Codedeploy에 설정한 application 명
    deployment_group: taglog #Codedeploy에 설정한 deployment_group
    region: ap-northeast-2
    wait-until-deployed : true

 

그리고 PUSH를 하면

travis

반가운 초록불이 뜬다.

Job Log

Job Log를 봐도 성공으로 보인다.

 

CodeDeploy

CodeDeploy에서도 성공으로 확인된다.

 

EC2에 아까 디렉토리로 가서 확인해보자

 

EC2

파일이 잘 도착한것을 확인할 수 있다.