Skip to content

Commit ca8c152

Browse files
authored
Merge pull request #72 from cloudcomputinginha/chore/CCI-80
[CCI-80] Sentry 모니터링 시스템 구축 & 환경변수 비밀값 방식 적용 & 프론트엔드 CORS 설정
2 parents 43fd783 + 0db2246 commit ca8c152

File tree

13 files changed

+120
-21
lines changed

13 files changed

+120
-21
lines changed

.github/workflows/github-actions.yml

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,6 @@ jobs:
3434
restore-keys: |
3535
${{ runner.os }}-gradle-
3636
37-
# 환경별 yml 파일 생성(1) - application.yml
38-
- name: make application.yml
39-
if: |
40-
contains(github.ref, 'dev')
41-
run: |
42-
cd ./src/main/resources # resources 폴더로 이동
43-
touch ./application.yml # application.yml 생성
44-
echo "${{ secrets.YML }}" > ./application.yml # github actions에서 설정한 값을 application.yml 파일에 쓰기
45-
shell: bash
46-
4737
# gradle build
4838
- name: Build with Gradle
4939
run: ./gradlew build -x test
@@ -67,9 +57,18 @@ jobs:
6757
key: ${{ secrets.PRIVATE_KEY }}
6858
envs: GITHUB_SHA
6959
script: |
60+
# 서버에 .env 파일 덮어쓰기
61+
mkdir -p /home/ubuntu/interview-be
62+
cd /home/ubuntu/interview-be
63+
cat > .env <<'EOF' # 멀티라인 환경변수 입력으로 사용
64+
${{ secrets.ENV_FILE }}
65+
EOF
66+
chmod 600 .env
67+
7068
docker stop interview-be-app || true # 컨테이너가 실행 중이면 중지
7169
docker rm interview-be-app || true # 기존 컨테이너 삭제
7270
docker rmi ${{ secrets.DOCKER_USERNAME }}/interview-be-service || true # 기존 이미지 삭제
71+
7372
sudo docker pull ${{ secrets.DOCKER_USERNAME }}/interview-be-service # 최신 이미지 pull
74-
sudo docker run -d --name interview-be-app -p 8080:8080 ${{ secrets.DOCKER_USERNAME }}/interview-be-service # 컨테이너 실행
73+
sudo docker run -d --name interview-be-app -p 8080:8080 --env-file /home/ubuntu/interview-be/.env ${{ secrets.DOCKER_USERNAME }}/interview-be-service # 환경변수 주입하여 컨테이너 실행
7574
sudo docker image prune -f

.gitignore

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,8 @@ out/
3737
.vscode/
3838

3939
### 팀 노션 스페이스 참고 ###
40-
/src/main/resources/application.yml
40+
.env
4141
/src/main/resources/keystore.p12
42-
/src/main/resources/application-test.yml
43-
4442
/src/main/resources/data.sql
4543
/src/main/resources/schema.sql
4644

Dockerfile

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
FROM openjdk:17-jdk-alpine
2+
RUN apk add tzdata && ln -snf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
23
ARG JAR_FILE=build/libs/*.jar
34
COPY ${JAR_FILE} app.jar
45
EXPOSE 8080
5-
ENTRYPOINT ["java", "-jar", "/app.jar"]
6-
7-
RUN apk add tzdata && ln -snf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
6+
ENTRYPOINT ["java", "-jar", "/app.jar"]

build.gradle

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ plugins {
22
id 'java'
33
id 'org.springframework.boot' version '3.4.5'
44
id 'io.spring.dependency-management' version '1.1.7'
5+
id "io.sentry.jvm.gradle" version "5.9.0"
56
}
67

78
ext {
@@ -79,6 +80,21 @@ dependencies {
7980

8081
// OpenFeign AI 서버와 통신을 위한 의존성
8182
implementation 'org.springframework.cloud:spring-cloud-starter-openfeign:4.2.1'
83+
84+
// Sentry 모니터링 시스템
85+
implementation "io.sentry:sentry-spring-boot-starter-jakarta:8.19.0"
86+
87+
// 환경변수(.env) 파일 관리
88+
implementation 'me.paulschwarz:spring-dotenv:4.0.0'
89+
}
90+
91+
// Sentry 모니터링 시스템 - @Slf4j 로그 전송
92+
sentry {
93+
includeSourceContext = true
94+
95+
org = "inha-university-6n"
96+
projectName = "injob"
97+
authToken = System.getenv("SENTRY_AUTH_TOKEN")
8298
}
8399

84100
tasks.named('test') {

src/main/java/cloudcomputinginha/demo/apiPayload/exception/GeneralException.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,22 @@
22

33
import cloudcomputinginha.demo.apiPayload.code.BaseErrorCode;
44
import cloudcomputinginha.demo.apiPayload.code.ErrorReasonDTO;
5-
import lombok.AllArgsConstructor;
65
import lombok.Getter;
76

87
@Getter
9-
@AllArgsConstructor
108
public class GeneralException extends RuntimeException {
119
private BaseErrorCode code;
1210

11+
public GeneralException(BaseErrorCode code) {
12+
super("[" + code.getReason().getCode() + "] " + code.getReason().getMessage()); // 에러 메시지 전달
13+
this.code = code;
14+
}
15+
1316
public ErrorReasonDTO getErrorReason() {
1417
return this.code.getReason();
1518
}
1619

17-
public ErrorReasonDTO getErrorReasonHttpStatus(){
20+
public ErrorReasonDTO getErrorReasonHttpStatus() {
1821
return this.code.getReasonHttpStatus();
1922
}
2023
}

src/main/java/cloudcomputinginha/demo/config/auth/SecurityConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ public CorsConfiguration getCorsConfiguration(HttpServletRequest request) {
3535
configuration.setAllowedOrigins(List.of(
3636
"http://localhost:8080",
3737
"http://localhost:3000",
38-
"https://cloud-computing-fe-two.vercel.app",
3938
"http://127.0.0.1:5500",
39+
"https://www.injob.store",
4040
domainProperties.getAi(),
4141
domainProperties.getBackend()
4242
));
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
cloud:
2+
aws:
3+
auth: ${AWS_AUTH} # 자격 증명 방식
4+
s3:
5+
bucket: ${S3_BUCKET_NAME}
6+
region: ${S3_REGION}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
domain: #도메인 정보 URL 생성, CORS 설정, FeignClient 등에 사용할 예정
2+
backend: ${BACKEND_URL}
3+
ai: ${AI_URL}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
jwt:
2+
secret: ${JWT_SECRET_KEY}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
sns:
2+
google:
3+
url: ${GOOGLE_URL}
4+
client:
5+
id: ${GOOGLE_CLIENT_ID}
6+
secret: ${GOOGLE_CLIENT_SECRET}
7+
token:
8+
url: ${GOOGLE_TOKEN_URL}
9+
callback:
10+
url: ${BACKEND_URL}/${GOOGLE_CALLBACK_ENDPOINT}
11+
12+
frontend:
13+
default-redirect-uri: ${DEFAULT_REDIRECT_URI}
14+
allowed-redirect-uris: ${ALLOWED_REDIRECT_URIS}

0 commit comments

Comments
 (0)