티스토리 뷰

먼저 배포를 위한 가이드를 보고싶은 분이시라면, 아래 블로그들을 참고해 주세요!

뱀귤님 블로그 https://bcp0109.tistory.com/363

연로그 https://yeonyeon.tistory.com/73

수바리의 코딩일기  https://suyeoniii.tistory.com/97

 

아래 내용은 제가 마주한 에러 기록용입니다

/////////////////////////////////////////////////////////////////////

일단 큰 흐름은 이렇다!

출처 https://bcp0109.tistory.com/363 뱀귤님 블로그

(순서대로 진행되지 않음)

ec2에서 하기 작업을 진행해야함.

  1. Tag 추가 (CodeDeploy 에서 어떤 인스턴스에 실행할 지 구분하는 값)
  2. IAM 역할 등록
  3. EC2 서버에 CodeDeploy Agent 설치 (이거 설치 빼먹었다가 계속 에러남)

ec2 codeDeploy agent 설치는 아래 링크의 가이드를 통해 

https://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/codedeploy-agent-operations-install-ubuntu.html

 

Ubuntu Server용 CodeDeploy 에이전트 설치 - AWS CodeDeploy

출력을 임시 로그 파일에 쓰는 것은 Ubuntu 20.04에서 install 스크립트를 사용하여 알려진 버그를 해결하는 동안 사용해야 하는 해결 방법입니다.

docs.aws.amazon.com

그리고 deploy 설정을 하다보니 아래와 같은 설정도 있었다. 하지만 이걸로 설치가 되는지는 테스트 해 보지 않았다.

 

 

나의 경우는 첫번째로 설치하려고 하니 에러가 발생했다.

Ruby version 2.x needs to be installed. 요런 에러였다.

버전 문제 인 듯 했으나, 재설치를 해도 같은 에러가 나왔다.

 

이 블로그를 보고 광명을 찾았다.

https://supern0va.tistory.com/27

 

EC2 CodeDeploy Agent 설치 Ruby version 2.x needs to be installed.

EC2에 CodeDeploy Agent 설치해보자 EC2에 CodeDeploy로 배포 자동화를 만들기 위해 Ubuntu 22.04.1 LTS 환경에 CodeDeply Agent를 설치했습니다. https://docs.aws.amazon.com/ko_kr/codedeploy/latest/userguide/codedeploy-agent-operations-

supern0va.tistory.com

이 깃허브에 답이 있다고 알려주었다.

https://github.com/aws/aws-codedeploy-agent/issues/301#issuecomment-1129912011

 

CodeDeploy agent is not supporting ruby v3.0.1 · Issue #301 · aws/aws-codedeploy-agent

When I tried to install codedeploy agent on my server: $ bundle install Fetching gem metadata from http://rubygems.org/........... Resolving dependencies... Bundler found conflicting requirements f...

github.com

 

당신... 복 많이 받아... 이걸로 deploy agent 설치 해결

 

 

codeDeploy 전용 iam 역할 만들기

 

ec2 / s3 / codeDeploy가 준비되었으면 codeDeploy에서 참조할 appspec 파일을 만들어야 한다.

이 파일을 통해서 내 프로젝트 파일에서 어떤 파일을 ec2의 어떤 경로에 복사할 지 설정이 가능하고 배포 프로세스 이후에 실행할 스크립트를 지정할 수도 있다. 

 

appspec은 기본적으로 루트 디렉터리(최상단)에 위치해야 한다!!

#appspec.yml
version: 0.0
os: linux

files:
  - source:  /
    destination: /home/ubuntu/app
    overwrite: yes

permissions:
  - object: /
    pattern: "**"
    owner: ubuntu
    group: ubuntu

hooks:
  AfterInstall:
    - location: script/stop.sh
      timeout: 60
      runas: ubuntu
  ApplicationStart:
    - location: script/start.sh
      timeout: 60
      runas: ubuntu

 

그리고 의존성 없는 plain jar는 필요 없으니

build.gradle에 이걸 추가하자

//plain 없도록
jar {
    enabled = false
}

 

이후는 절차를 따라 진행하고 배포에 실패하면 codeDeploy에 가서 로그를 확인하자

댓글