From e1f194bf33225947907ceb155a98a33a91fb997a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=9D=B8=ED=99=94?= Date: Mon, 17 Nov 2025 22:20:50 +0900 Subject: [PATCH 1/6] =?UTF-8?q?feat:=20=EC=9D=98=EC=A1=B4=EC=84=B1=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 6635b0e..73ee8fe 100644 --- a/build.gradle +++ b/build.gradle @@ -37,13 +37,22 @@ dependencies { implementation 'org.locationtech.jts:jts-core:1.19.0' // Swagger-ui - implementation "org.springdoc:springdoc-openapi-starter-webmvc-ui:2.5.0" + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.5.0' // EXIF metadata extraction implementation 'com.drewnoakes:metadata-extractor:2.19.0' // File type validation implementation 'org.apache.tika:tika-core:2.9.1' + + // BOM + implementation platform('io.awspring.cloud:spring-cloud-aws-dependencies:3.2.1') + + // 사용하려는 프레임워크 모듈 + implementation 'io.awspring.cloud:spring-cloud-aws-starter-parameter-store' + + // AWS 자격 증명 + implementation 'io.awspring.cloud:spring-cloud-aws-starter' } tasks.named('test') { From 383eb40c13c366c06c37fe3917dbbcfef97fca04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=9D=B8=ED=99=94?= Date: Tue, 18 Nov 2025 00:38:45 +0900 Subject: [PATCH 2/6] =?UTF-8?q?feat:=20=EC=84=A4=EC=A0=95=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=20=EB=B6=84=EB=A6=AC=20=EB=B0=8F=20=ED=8C=8C=EB=9D=BC?= =?UTF-8?q?=EB=AF=B8=ED=84=B0=20=EC=8A=A4=ED=86=A0=EC=96=B4=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 +- src/main/resources/application-dev.yml | 19 +++++++++++++ .../resources/application-local-example.yml | 10 +++++++ src/main/resources/application.yml | 27 +++++++++++++++++++ 4 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/application-dev.yml create mode 100644 src/main/resources/application-local-example.yml create mode 100644 src/main/resources/application.yml diff --git a/.gitignore b/.gitignore index 88938d8..94d228a 100644 --- a/.gitignore +++ b/.gitignore @@ -37,7 +37,7 @@ out/ ### VS Code ### .vscode/ -**/application.yml +**/application-local.yml **/application.properties /lib/ diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml new file mode 100644 index 0000000..26f867e --- /dev/null +++ b/src/main/resources/application-dev.yml @@ -0,0 +1,19 @@ +spring: + config: + import: + - "aws-parameterstore:/PHOTO_LINER_API/rds/dev/" + - "aws-parameterstore:/PHOTO_LINER_API/ec2/dev/" + + cloud: + aws: + region: + static: ap-northeast-2 + + datasource: + url: ${MYSQL_URL} + username: ${MYSQL_USER_NAME} + password: ${MYSQL_PASSWORD} + +photo: + upload: + base-dir: ${PHOTOS_UPLOAD_URL} diff --git a/src/main/resources/application-local-example.yml b/src/main/resources/application-local-example.yml new file mode 100644 index 0000000..6f4bf1d --- /dev/null +++ b/src/main/resources/application-local-example.yml @@ -0,0 +1,10 @@ +spring: + + datasource: + url: url + username: username + password: password + +photo: + upload: + base-dir: url \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 0000000..af82374 --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,27 @@ +spring: + profiles: + active: local + + application: + name: PhotoLiner + + servlet: + multipart: + enabled: true + max-file-size: 10MB + max-request-size: 100MB + + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + + jpa: + hibernate: + ddl-auto: validate + show-sql: true + properties: + hibernate: + format_sql: true + + flyway: + enabled: true + baseline-on-migrate: true From 840f3f825709f7ba10b8f4586416960d6e1a7f48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=9D=B8=ED=99=94?= Date: Tue, 18 Nov 2025 00:57:02 +0900 Subject: [PATCH 3/6] =?UTF-8?q?feat:=20cd=20=EC=9B=8C=ED=81=AC=ED=94=8C?= =?UTF-8?q?=EB=A1=9C=EC=9A=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy-dev.yml | 75 ++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 .github/workflows/deploy-dev.yml diff --git a/.github/workflows/deploy-dev.yml b/.github/workflows/deploy-dev.yml new file mode 100644 index 0000000..5dc4db3 --- /dev/null +++ b/.github/workflows/deploy-dev.yml @@ -0,0 +1,75 @@ +name: Spring Boot CD to EC2 + +on: + push: + branches: + - main + - develop + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + + steps: + # 1. 코드 체크아웃 + - name: Checkout code + uses: actions/checkout@v3 + + # 2. JDK 설정 + - name: Set up JDK 21 + uses: actions/setup-java@v3 + with: + java-version: '21' + distribution: 'temurin' + cache: 'gradle' + + # 3. Gradle 실행 권한 부여 + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + # 4. 빌드 (테스트 포함) + - name: Build with Gradle + run: ./gradlew clean build + + # 5. JAR 파일명 확인 및 환경변수 설정 + - name: Get JAR file name + id: jar_name + run: | + JAR_FILE=$(ls build/libs/*.jar | grep -v plain | head -n 1) + echo "jar_path=$JAR_FILE" >> $GITHUB_OUTPUT + echo "jar_name=$(basename $JAR_FILE)" >> $GITHUB_OUTPUT + + # 6. EC2로 JAR 파일 전송 + - name: Copy JAR to EC2 + uses: appleboy/scp-action@master + with: + host: ${{ secrets.EC2_HOST }} + username: ${{ secrets.EC2_USERNAME }} + key: ${{ secrets.EC2_SSH_KEY }} + port: ${{ secrets.EC2_SSH_PORT }} + source: ${{ steps.jar_name.outputs.jar_path }} + target: "/home/${{ secrets.EC2_USERNAME }}/app" + strip_components: 2 + + # 7. 배포 스크립트 실행 + - name: Execute deployment script on EC2 + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.EC2_HOST }} + username: ${{ secrets.EC2_USERNAME }} + key: ${{ secrets.EC2_SSH_KEY }} + port: ${{ secrets.EC2_SSH_PORT }} + script: | + cd /home/${{ secrets.EC2_USERNAME }}/app + chmod +x deploy.sh + ./deploy.sh ${{ steps.jar_name.outputs.jar_name }} + + # 8. 배포 결과 알림 + - name: Notify deployment status + if: always() + run: | + if [ ${{ job.status }} == 'success' ]; then + echo "✅ 배포 성공!" + else + echo "❌ 배포 실패!" + fi \ No newline at end of file From 4510643156ebe4cdbd45b9138db40f843f7212ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=9D=B8=ED=99=94?= Date: Tue, 18 Nov 2025 01:00:18 +0900 Subject: [PATCH 4/6] chore: eof --- src/main/resources/application-local-example.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/application-local-example.yml b/src/main/resources/application-local-example.yml index 6f4bf1d..02a44f7 100644 --- a/src/main/resources/application-local-example.yml +++ b/src/main/resources/application-local-example.yml @@ -7,4 +7,4 @@ spring: photo: upload: - base-dir: url \ No newline at end of file + base-dir: url From 606be251439a80e2c7b53b1cd3e840b76507f435 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=9D=B8=ED=99=94?= Date: Tue, 18 Nov 2025 01:00:55 +0900 Subject: [PATCH 5/6] =?UTF-8?q?chore:=20main=20=EB=B8=8C=EB=9E=9C=EC=B9=98?= =?UTF-8?q?=20CD=20=EB=8C=80=EC=83=81=20=EC=A0=9C=EC=99=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy-dev.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/deploy-dev.yml b/.github/workflows/deploy-dev.yml index 5dc4db3..b418ddf 100644 --- a/.github/workflows/deploy-dev.yml +++ b/.github/workflows/deploy-dev.yml @@ -3,7 +3,6 @@ name: Spring Boot CD to EC2 on: push: branches: - - main - develop jobs: From 13b6082f2e1076a4f9d26995ddf975db9a234db1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=9D=B8=ED=99=94?= Date: Tue, 18 Nov 2025 01:01:50 +0900 Subject: [PATCH 6/6] chore: eof --- .github/workflows/deploy-dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-dev.yml b/.github/workflows/deploy-dev.yml index b418ddf..c63586c 100644 --- a/.github/workflows/deploy-dev.yml +++ b/.github/workflows/deploy-dev.yml @@ -71,4 +71,4 @@ jobs: echo "✅ 배포 성공!" else echo "❌ 배포 실패!" - fi \ No newline at end of file + fi