본문 바로가기
Cloud/AWS

AWS Pipeline 배포 자동화

by 2D3 2022. 10. 22.
728x90

CodeDeploy-Agent 설치 (EC2 인스턴스)

 

EC2 개발 환경 구축

 

1. JAVA 설치

패키지 정보를 업데이트

  1. sudo apt update
  1. java 설치
  2. sudo apt install openjdk-11-jre-headless
  1. 설치 확인
  2. 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. 파이프라인에 올릴 소스코드 준비 (로컬)

 

🚨주의할 점🚨

단순한 문제로 시간이 많이 끌릴 수 있다. 실수하지 않도록 조심해야 된다.

  1. 파일명에서 오타가 나지 않게 주의한다.
  2. 경로를 제대로 확인한다

 

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 대시보드 -> 애플리케이션 -> 애플리케이션 생성 

 

<span style="font-size:120%"> 이름입력 -> EC2/온프레스 옵션 선택 -> 애플리케이션 생성 </span>


2. 배포 그룹 생성

배포 그룹 선택 -> 배포 그룹 생성

 

<span style="font-size:120%"> 배포 그룹 이름 입력(리소스이름-group) -> 서비스 역할-> IAM 역할 선택 (EC2 인스턴스에 연결O) </span>

 

환경구성 -> 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와 같은 편집기를 사용

  1. cat [파일명]: cat 명령어를 사용해서 파일을 바로 읽기

728x90

댓글