Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
…o test/#359
  • Loading branch information
LJH098 committed Jul 19, 2024
2 parents 3a713d2 + 691afdb commit 80c4da3
Show file tree
Hide file tree
Showing 301 changed files with 2,007 additions and 1,169 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
name: testAndDeploy
name: testAndDeploy_dev

on:
pull_request:
branches:
- develop
types:
- closed

Expand Down
108 changes: 108 additions & 0 deletions .github/workflows/prodWorkflow.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
name: testAndDeploy_prod

on:
pull_request:
branches:
- release
types:
- closed

defaults:
run:
working-directory: ./BE/exceed

jobs:
build:
runs-on: ubuntu-22.04
permissions:
contents: read
pull-requests: write

steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'

- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Cache Gradle
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Build with Gradle Wrapper
run: ./gradlew build

- name: Jacoco Report to PR
id: jacoco
uses: madrapps/jacoco-report@v1.6.1
with:
paths: ${{ github.workspace }}/**/build/reports/jacoco/test/jacocoTestReport.xml
token: ${{ secrets.GITHUB_TOKEN }}

- name: Send docker-compose-prod.yml
uses: appleboy/scp-action@master
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_KEY }}
source: ./BE/exceed/docker-compose-prod.yml
target: /home/ubuntu/backend-deploy

- name: Send resources-prod-environment
uses: appleboy/scp-action@master
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_KEY }}
source: ./BE/exceed/resources/gaebaljip-prod-environment
target: /home/ubuntu/backend-deploy

- name: Create .env.prod file
run: |
echo "${{ secrets.ENV_PROD_VARS }}" > .env.prod
- name: Send env.prod file
uses: appleboy/scp-action@master
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_KEY }}
source: ./BE/exceed/.env.prod
target: /home/ubuntu/backend-deploy

- name: Docker Image Build
run: docker build -f Dockerfile-prod -t ${{ secrets.DOCKER_HUB_USER_NAME }}/gaebaljip-prod:latest .

- name: Docker Hub Login
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_HUB_USER_NAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}

- name: docker Hub Push
run: docker push ${{ secrets.DOCKER_HUB_USER_NAME }}/gaebaljip-prod:latest

- name: SSH Deploy
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_KEY }}
script: |
cd backend-deploy/BE/exceed
sudo docker compose down
sudo docker pull ${{ secrets.DOCKER_HUB_USER_NAME }}/gaebaljip-prod:latest
sudo docker-compose --env-file .env.prod -f docker-compose-prod.yml up -d
sudo docker image prune -a -f
3 changes: 1 addition & 2 deletions BE/exceed/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,7 @@ src/main/resources/static/docs/api-doc.html

### env
.env
env-dev

.env.prod

### jmh

Expand Down
2 changes: 1 addition & 1 deletion BE/exceed/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ COPY ./food_data.csv ./food_data.csv
EXPOSE 8080

# CMD 명령어에서 CSV 파일의 위치를 절대 경로로 지정
CMD ["java", "-jar", "-Dspring.profiles.active=dev", "eatceed.jar", "./food_data.csv"]
CMD ["java", "-jar", "-Dspring.profiles.active=dev", "eatceed.jar", "./food_data.csv"]
18 changes: 18 additions & 0 deletions BE/exceed/Dockerfile-prod
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
FROM openjdk:17-oracle

ENV TZ=Asia/Seoul

# 앱을 위한 작업 디렉토리 설정
WORKDIR /app

# JAR 파일 복사
ARG JAR_FILE="./build/libs/*.jar"
COPY ${JAR_FILE} eatceed.jar

# CSV 파일 복사
COPY ./food_data.csv ./food_data.csv

EXPOSE 8080

# CMD 명령어에서 CSV 파일의 위치를 절대 경로로 지정
CMD ["java", "-jar", "-Dspring.profiles.active=prod", "eatceed.jar", "./food_data.csv"]
4 changes: 3 additions & 1 deletion BE/exceed/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ plugins {
}

group = 'com.gaebaljip'
version = '0.0.1-SNAPSHOT'
version = '1.0.0'

java {
sourceCompatibility = '17'
Expand Down Expand Up @@ -58,6 +58,8 @@ dependencies {
testImplementation "org.testcontainers:mariadb:1.19.8"
testImplementation "org.testcontainers:testcontainers:1.19.8"
testImplementation "org.testcontainers:junit-jupiter:1.19.8"
testImplementation "org.testcontainers:localstack:1.19.8"



// querydsl
Expand Down
76 changes: 76 additions & 0 deletions BE/exceed/docker-compose-prod.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
version: '3'
services:
eatceed-redis:
image: redis:alpine
container_name: gaebaljip-redis
command: redis-server --port 6379
expose:
- "6379"
networks:
- gaebaljip-network

eatceed-backend:
image: hwangdaesun/gaebaljip-prod:latest
container_name: gaebaljip-spring
ports:
- 8080:8080
depends_on:
- eatceed-redis
environment:
- RDS_DATABASE_ENDPOINT=${RDS_DATABASE_ENDPOINT}
- RDS_PORT=${RDS_PORT}
- RDS_DB_NAME=${RDS_DB_NAME}
- RDS_DATABASE_USERNAME=${RDS_DATABASE_USERNAME}
- RDS_DATABASE_PASSWORD=${RDS_DATABASE_PASSWORD}
- S3_BUCKET_NAME=${S3_BUCKET_NAME}
- CLOUD_AWS_ACCESS_KEY=${CLOUD_AWS_ACCESS_KEY}
- CLOUD_AWS_SECRET_KEY=${CLOUD_AWS_SECRET_KEY}
- JWT_SECRET=${JWT_SECRET}
- SES_MAIL_ADDRESS=${SES_MAIL_ADDRESS}
- ENCRYPTION_SPEC=${ENCRYPTION_SPEC}
- ENCRYPTION_SECRET=${ENCRYPTION_SECRET}
- ENCRYPTION_ALGORITHM=${ENCRYPTION_ALGORITHM}
- SPRING_REDIS_HOST=gaebaljip-redis
- SPRING_REDIS_PORT=6379
networks:
- gaebaljip-network
restart: "always"

grafana:
image: grafana/grafana:latest
container_name: grafana
restart: "always"
ports:
- "3000:3000"
volumes:
- grafana-data:/var/lib/grafana
- ./resources/gaebaljip-prod-environment/grafana/provisioning/:/etc/grafana/provisioning/
environment:
- GF_SERVER_ROOT_URL=localhost:3000
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD}
depends_on:
- prometheus
networks:
- gaebaljip-network

prometheus:
image: prom/prometheus:latest
container_name: prometheus
restart: "always"
ports:
- "9090:9090"
volumes:
- ./resources/gaebaljip-prod-environment/prometheus/config:/etc/prometheus/
- prometheus-data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
networks:
- gaebaljip-network

volumes:
grafana-data:
prometheus-data:

networks:
gaebaljip-network:
11 changes: 5 additions & 6 deletions BE/exceed/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,13 +47,12 @@ services:
- SPRING_REDIS_PORT=6379
networks:
- gaebaljip-network
restart:
no
restart: "no"

grafana:
image: grafana/grafana:latest
container_name: grafana
restart: no
restart: "no"
ports:
- "3000:3000"
volumes:
Expand All @@ -70,7 +69,7 @@ services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
restart: no
restart: "no"
ports:
- "9090:9090"
volumes:
Expand All @@ -83,8 +82,8 @@ services:
- gaebaljip-network

volumes:
grafana-data:
prometheus-data:
grafana-data:
prometheus-data:

networks:
gaebaljip-network:
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
rule_files:
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
#추가
- job_name: "spring-actuator"
metrics_path: '/actuator/prometheus'
scrape_interval: 1s
static_configs:
- targets: ['3.37.117.77:8080']
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.gaebaljip.exceed.auth.adapter;
package com.gaebaljip.exceed.adapter.in.auth;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
Expand All @@ -10,14 +10,14 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.gaebaljip.exceed.auth.application.port.in.AuthUsecase;
import com.gaebaljip.exceed.auth.docs.AuthExceptionDocs;
import com.gaebaljip.exceed.adapter.in.auth.request.LoginRequest;
import com.gaebaljip.exceed.application.port.in.auth.AuthUsecase;
import com.gaebaljip.exceed.common.ApiResponse;
import com.gaebaljip.exceed.common.ApiResponseGenerator;
import com.gaebaljip.exceed.common.docs.auth.AuthExceptionDocs;
import com.gaebaljip.exceed.common.dto.LoginResponseDTO;
import com.gaebaljip.exceed.common.security.AuthConstants;
import com.gaebaljip.exceed.common.swagger.ApiErrorExceptionsExample;
import com.gaebaljip.exceed.dto.LoginResponseDTO;
import com.gaebaljip.exceed.dto.request.LoginRequest;
import com.gaebaljip.exceed.security.AuthConstants;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.gaebaljip.exceed.dto.request;
package com.gaebaljip.exceed.adapter.in.auth.request;

import javax.validation.constraints.Email;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.gaebaljip.exceed.food.adapter.in;
package com.gaebaljip.exceed.adapter.in.food;

import javax.validation.Valid;

Expand All @@ -8,12 +8,12 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.gaebaljip.exceed.adapter.in.food.request.CreateFoodRequest;
import com.gaebaljip.exceed.application.port.in.food.CreateFoodUseCase;
import com.gaebaljip.exceed.common.ApiResponse;
import com.gaebaljip.exceed.common.ApiResponse.CustomBody;
import com.gaebaljip.exceed.common.ApiResponseGenerator;
import com.gaebaljip.exceed.common.annotation.AuthenticationMemberId;
import com.gaebaljip.exceed.dto.request.CreateFoodRequest;
import com.gaebaljip.exceed.food.application.port.in.CreateFoodUseCase;

import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.gaebaljip.exceed.food.adapter.in;
package com.gaebaljip.exceed.adapter.in.food;

import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;

import com.gaebaljip.exceed.adapter.in.food.response.GetFoodResponse;
import com.gaebaljip.exceed.adapter.in.food.response.GetFoodsAutoResponse;
import com.gaebaljip.exceed.application.port.in.food.GetFoodQuery;
import com.gaebaljip.exceed.common.ApiResponse;
import com.gaebaljip.exceed.common.ApiResponseGenerator;
import com.gaebaljip.exceed.dto.response.GetFoodResponse;
import com.gaebaljip.exceed.dto.response.GetFoodsAutoResponse;
import com.gaebaljip.exceed.food.application.port.in.GetFoodQuery;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
Expand Down
Loading

0 comments on commit 80c4da3

Please sign in to comment.