diff --git a/.github/workflows/ci_gradle.yml b/.github/workflows/ci_gradle.yml index 1b3ac95e..97762ba9 100644 --- a/.github/workflows/ci_gradle.yml +++ b/.github/workflows/ci_gradle.yml @@ -24,8 +24,8 @@ jobs: echo "spring:" > application.yml echo " profiles:" >> application.yml echo " group:" >> application.yml - echo " "local": "db, s3, email, portone, secret"" >> application.yml - echo " "prod": "db, s3, redis, email, portone"" >> application.yml + echo " "local": "db, s3, email, portone, firebase, secret"" >> application.yml + echo " "prod": "db, s3, redis, email, portone, firebase"" >> application.yml echo " default: prod" >> application.yml echo " servlet:" >> application.yml @@ -38,8 +38,8 @@ jobs: env: DATA: ${{ secrets.FIREBASE_KEY }} run: | - mkdir -p ./api/src/main/resources/firebase - echo $DATA > ./api/src/main/resources/firebase/firebase-key.json + mkdir -p ./core/core-infra-firebase/src/main/resources/firebase + echo $DATA > ./core/core-infra-firebase/src/main/resources/firebase/firebase-key.json - name: 3) Set prod.yml uses: microsoft/variable-substitution@v1 @@ -49,8 +49,6 @@ jobs: spring.jwt.secret: ${{ secrets.JWT_SECRET }} spring.jwt.token.access-expiration-time: ${{ secrets.JWT_ACCESS_EXPIRATION_TIME }} spring.jwt.token.refresh-expiration-time: ${{ secrets.JWT_REFRESH_EXPIRATION_TIME }} - firebase.fcmUrl: ${{ secrets.FIREBASE_URL}} - firebase.firebaseConfigPath: ${{ secrets.FIREBASE_PATH}} - name: 4) Set application-db.yml uses: microsoft/variable-substitution@v1 @@ -96,6 +94,14 @@ jobs: PORT_ONE_KEY: ${{ secrets.PORT_ONE_KEY}} PORT_ONE_SECRET: ${{ secrets.PORT_ONE_SECRET}} + - name: 9) Set application-firebase.yml + uses: microsoft/variable-substitution@v1 + with: + files: ./core/core-infra-firebase/src/main/resources/application-firebase.yml + env: + firebase.fcmUrl: ${{ secrets.FIREBASE_URL}} + firebase.firebaseConfigPath: ${{ secrets.FIREBASE_PATH}} + - name: Grant execute permission for gradlew and build run: | chmod +x ./gradlew diff --git a/api/build.gradle b/api/build.gradle index 5129809c..3c34cb34 100644 --- a/api/build.gradle +++ b/api/build.gradle @@ -6,6 +6,7 @@ dependencies { implementation project(':core:core-infra-redis'); implementation project(':core:core-infra-email'); implementation project(':core:core-infra-portone'); + implementation project(':core:core-infra-firebase'); // Core implementation 'org.springframework.boot:spring-boot-starter-data-jpa' @@ -32,10 +33,6 @@ dependencies { // Validation implementation 'org.springframework.boot:spring-boot-starter-validation' - - // FCM - implementation 'com.google.firebase:firebase-admin:9.1.1' - implementation group: 'com.squareup.okhttp3', name: 'okhttp', version: '4.2.2' } bootJar { enabled = true } jar { enabled = false } diff --git a/api/src/main/java/com/sponus/sponusbe/domain/notification/controller/FirebaseTestController.java b/api/src/main/java/com/sponus/sponusbe/domain/notification/controller/FirebaseTestController.java index 15791eda..18f9e139 100644 --- a/api/src/main/java/com/sponus/sponusbe/domain/notification/controller/FirebaseTestController.java +++ b/api/src/main/java/com/sponus/sponusbe/domain/notification/controller/FirebaseTestController.java @@ -8,9 +8,9 @@ import org.springframework.web.bind.annotation.RestController; import com.sponus.coredomain.domain.organization.Organization; +import com.sponus.coreinfrafirebase.FirebaseService; import com.sponus.sponusbe.auth.annotation.AuthOrganization; import com.sponus.sponusbe.domain.notification.dto.request.NotificationTestRequest; -import com.sponus.sponusbe.domain.notification.service.FirebaseService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/api/src/main/java/com/sponus/sponusbe/domain/propose/service/ProposeService.java b/api/src/main/java/com/sponus/sponusbe/domain/propose/service/ProposeService.java index b06291ca..2534824d 100644 --- a/api/src/main/java/com/sponus/sponusbe/domain/propose/service/ProposeService.java +++ b/api/src/main/java/com/sponus/sponusbe/domain/propose/service/ProposeService.java @@ -14,10 +14,10 @@ import com.sponus.coredomain.domain.propose.ProposeAttachment; import com.sponus.coredomain.domain.propose.ProposeStatus; import com.sponus.coredomain.domain.propose.repository.ProposeRepository; +import com.sponus.coreinfrafirebase.FirebaseService; import com.sponus.coreinfras3.S3Util; import com.sponus.sponusbe.domain.announcement.exception.AnnouncementErrorCode; import com.sponus.sponusbe.domain.announcement.exception.AnnouncementException; -import com.sponus.sponusbe.domain.notification.service.FirebaseService; import com.sponus.sponusbe.domain.propose.dto.request.ProposeCreateRequest; import com.sponus.sponusbe.domain.propose.dto.request.ProposeStatusUpdateRequest; import com.sponus.sponusbe.domain.propose.dto.request.ProposeUpdateRequest; diff --git a/api/src/main/java/com/sponus/sponusbe/domain/report/service/ReportService.java b/api/src/main/java/com/sponus/sponusbe/domain/report/service/ReportService.java index 50a38bbd..b37a0de1 100644 --- a/api/src/main/java/com/sponus/sponusbe/domain/report/service/ReportService.java +++ b/api/src/main/java/com/sponus/sponusbe/domain/report/service/ReportService.java @@ -14,8 +14,8 @@ import com.sponus.coredomain.domain.report.ReportAttachment; import com.sponus.coredomain.domain.report.ReportImage; import com.sponus.coredomain.domain.report.repository.ReportRepository; +import com.sponus.coreinfrafirebase.FirebaseService; import com.sponus.coreinfras3.S3Util; -import com.sponus.sponusbe.domain.notification.service.FirebaseService; import com.sponus.sponusbe.domain.propose.exception.ProposeErrorCode; import com.sponus.sponusbe.domain.report.dto.request.ReportCreateRequest; import com.sponus.sponusbe.domain.report.dto.request.ReportUpdateRequest; diff --git a/api/src/main/resources/application-prod.yml b/api/src/main/resources/application-prod.yml index 767a31df..d714bc62 100644 --- a/api/src/main/resources/application-prod.yml +++ b/api/src/main/resources/application-prod.yml @@ -7,8 +7,3 @@ spring: token: access-expiration-time: ${JWT_ACCESS_EXPIRATION_TIME} refresh-expiration-time: ${JWT_REFRESH_EXPIRATION_TIME} - -firebase: - fcmUrl: ${FIREBASE_URL} - firebaseConfigPath: ${FIREBASE_PATH} - scope: https://www.googleapis.com/auth/cloud-platform diff --git a/api/src/main/resources/application.yml b/api/src/main/resources/application.yml index 3c8d8a08..ec1449e1 100644 --- a/api/src/main/resources/application.yml +++ b/api/src/main/resources/application.yml @@ -4,8 +4,8 @@ server: spring: profiles: group: - "local": "db, s3, email, portone, secret" - "prod": "db, s3, redis, email, portone" + "local": "db, s3, email, portone, firebase, secret" + "prod": "db, s3, redis, email, portone, firebase" default: local servlet: diff --git a/core/core-infra-firebase/build.gradle b/core/core-infra-firebase/build.gradle new file mode 100644 index 00000000..1079eafd --- /dev/null +++ b/core/core-infra-firebase/build.gradle @@ -0,0 +1,13 @@ +dependencies { + implementation project(':core:core-domain'); + implementation project(':core:core-infra-redis'); + + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + + // FCM + implementation 'com.google.firebase:firebase-admin:9.1.1' + implementation group: 'com.squareup.okhttp3', name: 'okhttp', version: '4.2.2' +} + +bootJar { enabled = false } +jar { enabled = true } diff --git a/api/src/main/java/com/sponus/sponusbe/domain/notification/dto/request/FcmMessage.java b/core/core-infra-firebase/src/main/java/com/sponus/coreinfrafirebase/FcmMessage.java similarity index 93% rename from api/src/main/java/com/sponus/sponusbe/domain/notification/dto/request/FcmMessage.java rename to core/core-infra-firebase/src/main/java/com/sponus/coreinfrafirebase/FcmMessage.java index 4645653c..7643e093 100644 --- a/api/src/main/java/com/sponus/sponusbe/domain/notification/dto/request/FcmMessage.java +++ b/core/core-infra-firebase/src/main/java/com/sponus/coreinfrafirebase/FcmMessage.java @@ -1,4 +1,4 @@ -package com.sponus.sponusbe.domain.notification.dto.request; +package com.sponus.coreinfrafirebase; import com.sponus.coredomain.domain.notification.Notification; diff --git a/api/src/main/java/com/sponus/sponusbe/domain/notification/service/FirebaseService.java b/core/core-infra-firebase/src/main/java/com/sponus/coreinfrafirebase/FirebaseService.java similarity index 97% rename from api/src/main/java/com/sponus/sponusbe/domain/notification/service/FirebaseService.java rename to core/core-infra-firebase/src/main/java/com/sponus/coreinfrafirebase/FirebaseService.java index 009db64f..4b4b6a58 100644 --- a/api/src/main/java/com/sponus/sponusbe/domain/notification/service/FirebaseService.java +++ b/core/core-infra-firebase/src/main/java/com/sponus/coreinfrafirebase/FirebaseService.java @@ -1,4 +1,4 @@ -package com.sponus.sponusbe.domain.notification.service; +package com.sponus.coreinfrafirebase; import java.io.IOException; import java.util.List; @@ -18,7 +18,6 @@ import com.sponus.coredomain.domain.propose.Propose; import com.sponus.coredomain.domain.report.Report; import com.sponus.coreinfraredis.util.RedisUtil; -import com.sponus.sponusbe.domain.notification.dto.request.FcmMessage; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/core/core-infra-firebase/src/main/resources/application-firebase.yml b/core/core-infra-firebase/src/main/resources/application-firebase.yml new file mode 100644 index 00000000..179d832a --- /dev/null +++ b/core/core-infra-firebase/src/main/resources/application-firebase.yml @@ -0,0 +1,4 @@ +firebase: + fcmUrl: ${FIREBASE_URL} + firebaseConfigPath: ${FIREBASE_PATH} + scope: https://www.googleapis.com/auth/cloud-platform diff --git a/settings.gradle b/settings.gradle index b420afa4..7914998e 100644 --- a/settings.gradle +++ b/settings.gradle @@ -6,3 +6,4 @@ include 'core:core-infra-s3' include 'core:core-infra-redis' include 'core:core-infra-email' include 'core:core-infra-portone' +include 'core:core-infra-firebase'