Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
0958e24
feat : Spring Boot Initializer
pmsu2007 Feb 14, 2025
b6900dc
feat : 의존성 추가
pmsu2007 Feb 14, 2025
4524f3f
feat : application.yml 추가
pmsu2007 Feb 14, 2025
cf8f8c0
feat : API 응답을 위한 BaseResponse 추가
pmsu2007 Feb 14, 2025
5e44a37
feat : 전역 예외 처리를 위한 RestControllerAdvice 추가
pmsu2007 Feb 14, 2025
497f28d
feat : 도메인 클래스 & 엔티티 클래스 추가
pmsu2007 Feb 14, 2025
4e473e7
feat : Query DSL 의존성 추가
pmsu2007 Feb 14, 2025
0c2d95d
fix : LocalDateTime을 LocalDate로 변경
pmsu2007 Feb 14, 2025
fa67176
feat : Stock Repository 구현
pmsu2007 Feb 14, 2025
551cced
feat : Stock Service 구현
pmsu2007 Feb 14, 2025
dc7395c
feat : Stock Controller 구현
pmsu2007 Feb 14, 2025
0912b4b
feat : PropertiesConfig 설정 추가
pmsu2007 Feb 14, 2025
9383f3a
feat : API Key 검증 AOP 구현
pmsu2007 Feb 14, 2025
e45a3e9
feat : GlobalExceptionHandler가 ResponseEntity를 반환하도록 변경
pmsu2007 Feb 14, 2025
3b70fc3
feat : @EnableConfigurationProperties 추가
pmsu2007 Feb 14, 2025
c2e20ac
feat : 요청 파라미터 유효성 검사
pmsu2007 Feb 15, 2025
45abf61
feat : 에러 핸들링 시 로그 추가
pmsu2007 Feb 15, 2025
a106baa
feat : 존재하지 않는 엔드포인트 요청 시 에러 핸들링
pmsu2007 Feb 15, 2025
381cac0
fix : findStockInfoByCompanyAndDateRange이 Optional을 반환하도록 수정
pmsu2007 Feb 15, 2025
23d6d26
fix : getStockInfoByCompanyCode이 Optional을 처리하도록 수정
pmsu2007 Feb 15, 2025
82d03c1
refactor : 기업의 종가 정보를 조회하는 비즈니스 로직 수정
pmsu2007 Feb 15, 2025
2c6b2de
test : 단위 테스트 추가
pmsu2007 Feb 15, 2025
522df8b
docs : 주석 추가
pmsu2007 Feb 15, 2025
885bd7a
feat : 배포
pmsu2007 Feb 15, 2025
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
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/gradlew text eol=lf
*.bat text eol=crlf
*.jar binary
36 changes: 36 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Deploy to EC2

on:
push:
branches:
- main

jobs: # 잡 (Jobs) : 워크플로우에서 실행되는 작업 단위
build-and-deploy: # 잡 이름
runs-on: ubuntu-latest

steps:
# 1. GitHub 레포지토리 체크아웃
- name: Checkout Repository
uses: actions/checkout@v3

# 2. Docker 이미지 빌드 & 푸시
- name: Build and Push Docker Image to Docker Hub
run: |
docker build -t ${{ secrets.DOCKER_HUB_USERNAME }}/ktb-be-assignment --platform linux/amd64 .
docker push ${{ secrets.DOCKER_HUB_USERNAME }}/ktb-be-assignment

# 3. EC2 접속 & 어플리케이션 실행
- name: Deploy to EC2
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
port: 22
key: ${{ secrets.EC2_SSH_KEY }}
script: |
docker pull ${{ secrets.DOCKER_HUB_USERNAME }}/ktb-be-assignment
cd ~/app
echo "${{ secrets.APPLICATION_CONFIG }}" > ./config/application-secret.yml
docker-compose down
docker-compose up -d
43 changes: 43 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
HELP.md
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### VS Code ###
.vscode/

### application.yml ###
application-*.yml

### shell script
*.sh
18 changes: 18 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
FROM gradle:8.7.0-jdk17 as builder
WORKDIR /app

COPY build.gradle settings.gradle gradlew /app/
COPY gradle /app/gradle
COPY src /app/src

RUN ./gradlew build

# 배포
FROM eclipse-temurin:17-jre-jammy as app
WORKDIR /app

COPY --from=builder /app/build/libs/*.jar app.jar

# 애플리케이션 실행
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app/app.jar"]
52 changes: 52 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
plugins {
id 'java'
id 'org.springframework.boot' version '3.4.2'
id 'io.spring.dependency-management' version '1.1.7'
}

group = 'ktb.mason'
version = '0.0.1-SNAPSHOT'

java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}

configurations {
compileOnly {
extendsFrom annotationProcessor
}
}

repositories {
mavenCentral()
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-validation:3.4.2'

// MySQL
runtimeOnly 'com.mysql:mysql-connector-j'

// Query DSL
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"

// Lombok
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
testCompileOnly 'org.projectlombok:lombok'

testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

tasks.named('test') {
useJUnitPlatform()
}
Binary file added gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
7 changes: 7 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Loading