CodeDeploy-Agent 설치 (EC2 인스턴스)
EC2 개발 환경 구축
1. JAVA 설치
패키지 정보를 업데이트
sudo apt update
java 설치
sudo apt install openjdk-11-jre-headless
설치 확인
java -version
자바 버전이 정상적으로 나오면 설치 완료
2. AWS CLI 설치
설치
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ sudo apt install unzip
$ unzip awscliv2.zip
$ sudo ./aws/install
설치 확인
aws --version
역시 버전이 보인다면 설치 완료!
3. CodeDeploy Agent 설치
설치
sudo apt update sudo apt install ruby-full sudo apt install wget cd /home/ubuntu sudo wget https://aws-codedeploy-ap-northeast-2.s3.ap-northeast-2.amazonaws.com/latest/install sudo chmod +x ./install sudo ./install auto > /tmp/logfile
설치 확인
sudo service codedeploy-agent status
active(runnung)
가 있다면 정상 설치 후 실행중이다!
EC2 인스턴스 역할 부여
1. IAM 역할 수정
인스턴스 선택 -> 보안 -> IAM
2. IAM 권한 추가
3. 신뢰관계 편집
EC2를 사용한 파이프라인 구축
1. 파이프라인에 올릴 소스코드 준비 (로컬)
🚨주의할 점🚨
단순한 문제로 시간이 많이 끌릴 수 있다. 실수하지 않도록 조심해야 된다.
- 파일명에서 오타가 나지 않게 주의한다.
- 경로를 제대로 확인한다
appspec.yml 파일 추가
배포 자동화를 도와주는 CodeDeploy-Agent가 인식하는 파일
경로: [프로젝트명]/DeployServer
version: 0.0
os: linux
files:
- source: /
destination: /home/ubuntu/build
hooks:
BeforeInstall:
- location: server_clear.sh
timeout: 3000
runas: root
AfterInstall:
- location: initialize.sh
timeout: 3000
runas: root
ApplicationStart:
- location: server_start.sh
timeout: 3000
runas: root
ApplicationStop:
- location: server_stop.sh
timeout: 3000
runas: root
buildspec.yml 파일 추가
배포 자동화에서 빌드를 담당하는 CodeBuild-Agent가 인식하는 파일
경로: [프로젝트명]/DeployServer
version: 0.2
phases:
install:
runtime-versions:
java: corretto11
build:
commands:
- echo Build Starting on `date`
- cd DeployServer
- chmod +x ./gradlew
- ./gradlew build
post_build:
commands:
- echo $(basename ./DeployServer/build/libs/*.jar)
artifacts:
files:
- DeployServer/build/libs/*.jar
- DeployServer/scripts/**
- DeployServer/appspec.yml
discard-paths: yes
쉘 파일 생성
최상위에 scripts 디렉토리를 생성 -> initialize.sh, server_clear.sh, server_start.sh, server_stop.sh
파일 4개를 생성
scripts/initialize.sh
#!/usr/bin/env bash
chmod +x /home/ubuntu/build/**
scripts/server_clear.sh
#!/usr/bin/env bash
rm -rf /home/ubuntu/build
scripts/server_start.sh
#!/usr/bin/env bash
cd /home/ubuntu/build
sudo nohup java -jar DeployServer-0.0.1-SNAPSHOT.jar > /dev/null 2> /dev/null < /dev/null &
scripts/server_stop.sh
#!/usr/bin/env bash
sudo pkill -f 'java -jar'
AWS CodeDeploy 대시보드
1. 애플리케이션 생성
AWS CodeDeploy 대시보드 -> 애플리케이션 -> 애플리케이션 생성
이름입력 -> EC2/온프레스 옵션 선택 -> 애플리케이션 생성
2. 배포 그룹 생성
배포 그룹 선택 -> 배포 그룹 생성
배포 그룹 이름 입력(리소스이름-group) -> 서비스 역할-> IAM 역할 선택 (EC2 인스턴스에 연결O)
환경구성 -> EC2 인스턴스 선택 -> 태그 그룹 -> Name 태그 -> 발급받은 인스턴스 선택
로드 밸런싱 활성화
해제
-> 배포 그룹 생성
파이프라인 구축
1. 파이프라인 설정 선택
AWS CodePipeline -> 파이프라인 생성
파이프라인 이름과 역할 이름을 규칙에 맞게 입력
2. 소스 스테이지 추가
소스: Github(버전2)
GitHub 연결 버튼 -> 연결 이름 임의로 입력 -> 연결
새 앱 설치 클릭
github 계정 클릭 -> Only select repositories -> 소스코드 사용할 리포지토리 선택 -> Install 클릭
리포지토리와 브랜치 지정 -> CodePipeline 기본값 선택 -> 다음
3. 빌드 스테이지 추가
빌드 공급자 -> AWS CodeBuild 선택
프로젝트 생성 -> 프로젝트 이름 입력
환경설정
Buildspec 이름: “DeployServer/buildspec.yml
CodePipeline으로 계속 -> 다음 클릭
4. 배포 스테이지 추가
빨간 상자 안에 정보를 모두 입력
설정을 확인 -> 파이프라인 생성
파이프라인 생성 & 배포 자동 실행!!!
파이프라인 deploy 관련 로그 확인
$ cd (경로가 홈에 있어야 됩니다)
$ cd /opt/codedeploy-agent/deployment-root/deployment-logs
log 파일 읽는 방법
- Vim이나 nano와 같은 편집기를 사용
- cat [파일명]: cat 명령어를 사용해서 파일을 바로 읽기