권한문제 에러를 한번 맞닥뜨리고 파워쉘로 EC2인스턴스 접속했다.
이제 CodeDeploy를 생성하려고한다.
✔️CodeDeploy 생성
CodeDeploy Agent를 설치했다.
잠깐, apt가 뭐지?
apt는 리눅스 운영체제에서 패키지 관리를 위해 사용하는 도구이다.
📌apt (Advanced Package Tool)
- 사용 배포판: 주로 Debian, Ubuntu 및 그 파생 배포판들
- 기본 명령어:
- apt-get: 고전적인 apt 도구로, 설치, 업데이트, 제거 등에 사용
- apt: apt-get의 기능을 포함하면서, 더 직관적이고 사용자 친화적인 인터페이스를 제공
- 기능:
- 패키지 설치: sudo apt install package_name
- 패키지 제거: sudo apt remove package_name
- 패키지 업데이트: sudo apt update (패키지 리스트 갱신), sudo apt upgrade (모든 패키지 업그레이드)
- 시스템 업그레이드: sudo apt full-upgrade (전체 시스템 업그레이드)
- 패키지 형식: .deb 파일 (Debian 패키지)
- 특징: apt는 의존성 해결과 관련된 다양한 도구를 제공하며, 사용자 친화적이고 비교적 쉽게 사용
https://java-girl.tistory.com/158
AWS CLI 안깔리는 에러
또,,에러를 만났다&^^^aws cli가 깔리지 않는다.구글링 해보니 apt update하면 된다던데 안된다. ㅎㅎ재빨리 구글링했다...우분투 버전확인하고.. 내 우분투는 24.04버전https://www.liberiangeek.net/2024/04/instal
java-girl.tistory.com
위와 같이 에러 해결 후 아차. S3버킷을 안만들었다는 점이 생각났다...^^
권한문제 에러를 한번 맞닥뜨리고 파워쉘로 EC2인스턴스 접속했다.
이제 CodeDeploy를 생성하려고한다.
✔️CodeDeploy 생성
✔️main.yml 수정 - 배포 코드 추가
name: Build and Deploy to EC2
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
# --------------------------추가
env:
PROJECT_NAME: mounwan_project_server
BUCKET_NAME: mounwan_deploy
CODE_DEPLOY_APP_NAME: mounwanm_cicd
DEPLOYMENT_GROUP_NAME: mounwan_instance
# --------------------------추가
jobs:
build:
runs-on: ubuntu-latest # 3 실행 환경 지정
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: '17'
- name: Make application.properties
run: |
cd ./src/main/resources
touch ./application.properties
echo "${{ secrets.DATABASE_PROPERTIES }}" >> ./application.properties
shell: bash
- name: Setup Postgressql
uses: harmon758/postgresql-action@v1
with:
postgresql version: '14'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew clean build
- name: Build with Gradle
run: ./gradlew build
shell: bash
# --------------------------추가
- name: Make Zip File
run: zip -qq -r ./$GITHUB_SHA.zip .
shell: bash
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ap-northeast-2
- name: Upload to S3
run: aws s3 cp --region ap-northeast-2 ./$GITHUB_SHA.zip s3://$BUCKET_NAME/$PROJECT_NAME/$GITHUB_SHA.zip
- name: Code Deploy To EC2 instance
run: aws deploy create-deployment
--application-name $CODE_DEPLOY_APP_NAME
--deployment-config-name CodeDeployDefault.AllAtOnce
--deployment-group-name $DEPLOYMENT_GROUP_NAME
--s3-location bucket=$BUCKET_NAME,bundleType=zip,key=$PROJECT_NAME/$GITHUB_SHA.zip
# --------------------------추가
시크릿키는 먼저 설정해놓았었다.
하지만 단번에 될 리가 없다 하하
📌에러해결 포스팅.
우여곡절 끝에 빌드 성공했따.
✔️appspec.yml 생성
AWS CodeDeploy는 이 appspec.yml을 통해서 어떤 파일들을, 어느 위치로 배포하고, 이후 어떤 스크립트를 실행시킬것인지를 모두 관리한다.
version: 0.0
os: linux
files:
- source: /
destination: /home/ubuntu/mounwan
permissions:
- object: /home/ubuntu/mounwan
owner: ubuntu
group: ubuntu
hooks:
AfterInstall:
- location: scripts/deploy.sh
timeout: 60
runas: ubuntu
files:아래에 있는 코드는 Code Build / S3 / Github 등을 통해서 받은 전체 파일들(source: /)을 /home/ubuntu/mounwan으로 옮기겠다는 의미다.
EC2에 지정 디렉토리를 만들어주었다.
✔️scripts/deploy.sh 배포 쉘 스크립트 생성
스크립트는 Spring Boot 애플리케이션을 배포하기 위해 사용되며, 이전에 실행중인 프로세스를 중단하고 최신 버전의 JAR 파일을 실행하는 작업을 수행된다.
#!/usr/bin/env bash
REPOSITORY=/home/ec2console/mounwan
cd $REPOSITORY
APP_NAME=MoUnWan
JAR_NAME=$(ls $REPOSITORY/build/libs/ | grep 'SNAPSHOT.jar' | tail -n 1)
JAR_PATH=$REPOSITORY/build/libs/$JAR_NAME
CURRENT_PID=$(pgrep -f $APP_NAME)
if [ -z $CURRENT_PID ]
then
echo "> 종료할 애플리케이션이 없습니다."
else
echo "> kill -9 $CURRENT_PID"
kill -15 $CURRENT_PID
sleep 5
fi
echo "> Deploy - $JAR_PATH "
nohup java -jar $JAR_PATH > /dev/null 2> /dev/null < /dev/null &
🔗배포 명령어 공식 문서 : AWS Docs - CodeDeploy awscli
'개인프로젝트' 카테고리의 다른 글
API 설계 (0) | 2024.04.07 |
---|---|
Gitghub Actions로 CI/CD 파이프라인 구축하기 大 삽질일기 - 5 (0) | 2024.04.06 |
Gitghub Actions로 CI/CD 파이프라인 구축하기 大 삽질일기 - 3 (0) | 2024.04.02 |
Gitghub Actions로 CI/CD 파이프라인 구축하기 大 삽질일기 - 2 (0) | 2024.04.01 |
Gitghub Actions로 CI/CD 파이프라인 구축하기 大 삽질일기 - 1 (0) | 2024.03.30 |