Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 1 addition & 4 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,4 @@ jobs:
run: chmod +x ./gradlew

- name: Build and Test with Gradle
run: ./gradlew bootJar -Pprofile=dev --info



run: ./gradlew bootJar -Pprofile=dev
29 changes: 18 additions & 11 deletions .github/workflows/cicd-ec2-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ on:
# 환경 변수 $변수명으로 사용
env:
PROJECT_NAME: "devdevdev"
BUCKET_NAME: "devdevdev-cicd-bucket"
CODE_DEPLOY_APP: "devdevdev-server"
CODE_DEPLOY_DEPLOYMENT_GROUP: "devdevdev-server-deployment-group"
BUCKET_NAME: "dev-devdevdev-cicd-bucket"
CODE_DEPLOY_APP: "dev-devdevdev-server"
CODE_DEPLOY_DEPLOYMENT_GROUP: "dev-devdevdev-server-deployment-group"

jobs:
build:
Expand All @@ -36,31 +36,38 @@ jobs:
run: |
## create application-dev.yml
cd ./src/main/resources

echo "${{ secrets.application_dev }}" >> ./application-dev.yml
echo "${{ secrets.application_jwt_dev }}" >> ./application-jwt-dev.yml
echo "${{ secrets.application_oauth2_dev }}" >> ./application-oauth2-dev.yml
echo "${{ secrets.application_storage_s3_dev }}" >> ./application-storage-s3-dev.yml
echo "${{ secrets.application_open_ai }}" >> ./application-open-ai.yml
echo "${{ secrets.application_opensearch_dev }}" >> ./application-opensearch-dev.yml

# Dockerfile 주입
- name: make Dockerfile
# Dockerfile-dev 주입
- name: make Dockerfile-dev
run: |
cd $GITHUB_WORKSPACE
ls
rm Dockerfile
echo "${{ secrets.dockerfile_dev }}" >> ./Dockerfile
cat ./Dockerfile-prod >> ./Dockerfile

# appspec.yml, deploy.sh 주입
- name: make appspec.yml, deploy.sh
run: |
cd $GITHUB_WORKSPACE
ls
rm appspec.yml
rm deploy.sh
cat ./appspec-dev.yml >> ./appspec.yml
cat ./deploy-dev.sh >> ./deploy.sh

## 테스트 코드에도 sotrage-s3, open-ai 가 필요함!
- name: make application-test.yml
run: |
cd ./src/test/resources

echo "${{ secrets.application_storage_s3 }}" >> ./application-storage-s3.yml
echo "${{ secrets.application_open_ai }}" >> ./application-open-ai.yml
echo "${{ secrets.application_opensearch_test }}" >> ./application-opensearch-test.yml

shell: bash

## Springboot 프로젝트 빌드
Expand All @@ -80,8 +87,8 @@ jobs:
- 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-access-key-id: ${{ secrets.DEV_AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.DEV_AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}

# S3에 빌드파일 업로드
Expand Down
19 changes: 13 additions & 6 deletions .github/workflows/cicd-ec2-prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,31 +36,38 @@ jobs:
run: |
## create application-prod.yml
cd ./src/main/resources

echo "${{ secrets.application_prod }}" >> ./application-prod.yml
echo "${{ secrets.application_jwt_prod }}" >> ./application-jwt-prod.yml
echo "${{ secrets.application_oauth2_prod }}" >> ./application-oauth2-prod.yml
echo "${{ secrets.application_storage_s3_prod }}" >> ./application-storage-s3-prod.yml
echo "${{ secrets.application_open_ai }}" >> ./application-open-ai.yml
echo "${{ secrets.application_opensearch_prod }}" >> ./application-opensearch-prod.yml

# Dockerfile 주입
- name: make Dockerfile
# Dockerfile-prod 주입
- name: make Dockerfile-prod
run: |
cd $GITHUB_WORKSPACE
ls
rm Dockerfile
echo "${{ secrets.dockerfile_prod }}" >> ./Dockerfile
cat ./Dockerfile-dev >> ./Dockerfile

# appspec.yml, deploy.sh 주입
- name: make appspec.yml, deploy.sh
run: |
cd $GITHUB_WORKSPACE
ls
rm appspec.yml
rm deploy.sh
cat ./appspec-prod.yml >> ./appspec.yml
cat ./deploy-proc.sh >> ./deploy.sh

## 테스트 코드에도 storage-s3, open-ai 가 필요함!
- name: make application-test.yml
run: |
cd ./src/test/resources

echo "${{ secrets.application_storage_s3 }}" >> ./application-storage-s3.yml
echo "${{ secrets.application_open_ai }}" >> ./application-open-ai.yml
echo "${{ secrets.application_opensearch_test }}" >> ./application-opensearch-test.yml

shell: bash

## Springboot 프로젝트 빌드
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile → Dockerfile-dev
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ COPY build/libs/*.jar app.jar
ENV TZ Asia/Seoul

# 시스템 진입점 정의
CMD java -jar -Dspring.profiles.active=local /app.jar
CMD java -jar -Dspring.profiles.active=dev /app.jar
9 changes: 9 additions & 0 deletions Dockerfile-prod
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
FROM openjdk:21-jdk
# JAR 파일 메인 디렉토리에 복사
COPY build/libs/*.jar app.jar

# 타임존 설정
ENV TZ Asia/Seoul

# 시스템 진입점 정의
CMD java -jar -Dspring.profiles.active=prod -javaagent:/pinpoint-agent/pinpoint-bootstrap-3.0.1.jar -Dpinpoint.agentId=devdevdev -Dpinpoint.applicationName=devdevdev-server /app.jar
24 changes: 24 additions & 0 deletions appspec-dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
version: 0.0
os: linux

# 배포 파일에 대한 설정
files:
- source: / # 인스턴스에 복사할 디렉토리 경로
destination: /home/ec2-user/devdevdev # 인스턴스에서 파일이 복사되는 위치
overwrite: yes # 복사할 위치에 파일이 있는 경우 덮어쓰기

# files 섹션에서 복사한 파일에 대한 권한 설정
permissions:
- object: / # 권한이 지정되는 파일 또는 디렉토리
pattern: "**" # 매칭되는 패턴에만 권한 부여
owner: ec2-user # object의 소유자
group: ec2-user # object의 그룹 이름

# 배포 이후에 수행할 스크립트 지정
# 파일 설치 후 기존 실행중이던 컨테이너 종료, 컨테이너 삭제, 도커 이미지 삭제 후
# 새로운 도커 이미지 빌드와 컨테이너 실행
hooks:
AfterInstall:
- location: deploy.sh # hooks 에서 실행할 스크립트 위치
timeout: 500 # (optional) 스크립트 실행에 허용되는 최대 시간이며, 넘으면 배포 실패로 간주됨
runas : ec2-user # (optional) 스크립트를 실행하는 사용자
File renamed without changes.
2 changes: 1 addition & 1 deletion deploy.sh → deploy-dev.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env bash

APP_NAME=devdevdev
REPOSITORY=/home/ubuntu/devdevdev
REPOSITORY=/home/ec2-user/devdevdev

echo "> Check the currently running container"
CONTAINER_ID=$(docker ps -aqf "name=$APP_NAME")
Expand Down
25 changes: 25 additions & 0 deletions deploy-prod.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#!/usr/bin/env bash

APP_NAME=devdevdev
REPOSITORY=/home/ubuntu/devdevdev

echo "> Check the currently running container"
CONTAINER_ID=$(docker ps -aqf "name=$APP_NAME")

if [ -z "$CONTAINER_ID" ];
then
echo "> No such container is running."
else
echo "> Stop and remove container: $CONTAINER_ID"
docker stop "$CONTAINER_ID"
docker rm "$CONTAINER_ID"
fi

echo "> Remove previous Docker image"
docker rmi "$APP_NAME"

echo "> Build Docker image"
docker build -t "$APP_NAME" "$REPOSITORY"

echo "> Run the Docker container"
docker run -d -p 8080:8080 --name "$APP_NAME" -v /home/ubuntu/pinpoint-agent-3.0.1:/pinpoint-agent "$APP_NAME"