오늘
출처 : 코드스테이츠 유어클래스
github 레포지토리에 push 를 하면 GitHub Actions 가 알아차리고 작동한다.
AWS S3 에 결과물 전송 및 저장. 그리고 동시에 Code Deploy 에게 배포를 명령한다.
(어제와는 다르게 오늘 S3 는 저장소로 사용됨)
CodoDeploy 가 EC2 에게 프로젝트 전달 후 EC2 인스턴스에서 실행.
어제와의 차이점은 어제는 모든 과정을 AWS 에서 다 했는데 오늘은 Github 에서 변화를 감지하고 전송해준다는 차이점이 있다.
일단 github 에서 레포지토리 생성 후 프로젝트를 push 한다.
그리고 Actions 화면에서 Java with Gradle 구성을 사용한다.
초록색 체크 그림이 뜨면 성공했다는 의미이다.
Github Actions 와 AWS 를 연결하기 위해 액세스 키 를 등록해준다.
키는 코드스테이츠에서 제공해 줬다.
키를 등록하고 gradle.yml 파일을 수정해준다.
ap-norheast-2
는 서울 리전을 의미한다.
그리고 S3 와 연결하기 위해 S3 버킷 이름을 추가해준다.
워크플로가 성공적으로 된다면 S3에 zip 파일이 있는 것을 볼 수 있다.
S3 빌드 파일을 EC2 인스턴스로 전달하기 위해 CodeDeploy 배포 그룹 생성.
만들 파일은 appspec.yml
파일과 scripts
디렉토리 안의 deploy.sh
셸 스크립트이다.
만들 때 위치를 정확하게 만들자. 위치가 틀리면 에러가 발생한다.
appspec.yml
파일 코드.
7번 라인의
file_exists_behavior: OVERWRITE
코드는 필수로 작성하지 않아도 괜찮다.
내가 push 를 전에 했던 것과 병합해서 하니까 이미 파일이 존재하고 있는 파일이라고 에러가 떠서 추가해 준 코드이다.
저 코드는 이미 있는 파일을 OVERWRITE 하겠다는 의미로 그냥 덮어씌우겠다는 의미이다.
deploy.sh
스크립트 코드이다.
여기까지 작성하고 push 를 해준다.
그리고 github yml 파일에도 코드를 추가해준다
위 코드는 Code Deploy 배포 명령코드이다.
수정했으면 Actions 에서 결과를 확인하자.
성공적으로 됬다면
Code Deploy 에서 배포가 성공했는지 확인하자.
만약 성공했다면
EC2 IPv4 주소로 들어가면 위와 같은 에러 페이지가 뜰 것이다.
그럼 성공이다.
EC2 인스턴스에서 /home/ubuntu/action
파일로 이동해 우리가 배포한 파일이 있는지 확인하자.
그리고 ps -ef | grep java
명령어로 잘 실행이 되고 있는지 확인하자.
위 사진의 deploy.log
파일과 deploy_err.log
파일은 EC2 인스턴스에서의 빌드 과정이 기록되는 파일이다.
성공적으로 진행된다면 deploy.log
파일에 기록이 되고, 에러가 난다면 deploy_err.log
파일에 기록 될 것이다.
간단하게 컨트롤러 하나를 생성해보자. push 를 하고 다시 접근한다면
이런 화면이 뜰 것이다.
성공이다.
로그는 어떻게 뜰까?
위와 같이 로그가 추가 된 것을 알 수 있다.
같이 스터디하시는 분이 공유해주셔서 한번 만들어봤다!
HTML 파일에 jQuery 와 javaScript 를 이용해서 만드셨다고 한다.
라고 입력하면
라고 뜬다.