Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
63 changes: 63 additions & 0 deletions .coderabbit.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# 리뷰 언어 설정 - 한국어로 피드백을 받습니다
language: "ko-KR"

reviews:
# 리뷰 강도 설정
# assertive(꼼꼼) / chill(부드럽게) 중 선택
profile: "chill"

# true로 설정 시, 모든 리뷰 코멘트가 resolve되면 자동으로 승인(Approve)
request_changes_workflow: false

# PR 요약
high_level_summary: true # PR 전반적인 변경 내용 요약
changed_files_summary: true # 파일별 변경 내용 요약

# 워크스루를 접힌 상태로 표시해 PR 페이지가 너무 길어지는 것을 방지
collapse_walkthrough: true

# 코드 흐름을 시각적으로 파악할 수 있는 시퀀스 다이어그램 생성
sequence_diagrams: true

# 연결된 이슈를 분석해 리뷰에 맥락을 추가
assess_linked_issues: true

# 관련 이슈/PR 자동 링크 (팀 규모가 작아 비활성화)
related_issues: false
related_prs: false

# 레이블 자동 제안/적용 (수동으로 관리)
suggested_labels: false
auto_apply_labels: false

# 리뷰어 추천/자동 할당 (수동으로 지정)
suggested_reviewers: false
auto_assign_reviewers: false

# -------------------------------------------------------------- #
# 자동 리뷰 설정 #
# -------------------------------------------------------------- #
auto_review:
# PR 생성 시 자동으로 리뷰 시작
enabled: true
# 기존 리뷰가 있는 PR에 새 커밋이 추가되면 변경분만 다시 리뷰
auto_incremental_review: true

# ================================================================ #
# 채팅 설정 #
# ================================================================ #
chat:
# @coderabbitai 멘션 없이도 PR 코멘트에 자동으로 응답
auto_reply: true

# ================================================================ #
# 지식 베이스 설정 #
# ================================================================ #
knowledge_base:
# 리뷰 시 최신 문서나 정보를 웹에서 검색해 참고할 수 있도록 허용
web_search:
enabled: true

# 레포에 코딩 컨벤션이나 가이드라인 문서가 있다면 리뷰에 반영
code_guidelines:
enabled: true
2 changes: 1 addition & 1 deletion .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
- [ ] 기타 사소한 수정

## ❗️ 관련 이슈 링크
Close #
Closed #

## 📌 개요
-
Expand Down
85 changes: 85 additions & 0 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
name: SCOI CD
on:
push:
branches: [ "develop" ]

env:
# 도커 허브 저장소 이름 (예: myusername/scoi-backend)
DOCKER_IMAGE_NAME: ${{ secrets.DOCKER_USERNAME }}/scoi-backend

jobs:
# 📦 1단계: 빌드 및 도커 이미지 푸시
build-and-push:
runs-on: ubuntu-latest
Comment thread
rlawngjs0313 marked this conversation as resolved.
steps:
- name: 체크아웃
uses: actions/checkout@v4
Comment thread
rlawngjs0313 marked this conversation as resolved.

- name: 자바 설정 Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
cache: 'gradle'
Comment thread
rlawngjs0313 marked this conversation as resolved.

- name: application.yml 주입
shell: bash
run: |
mkdir -p src/main/resources
cat > src/main/resources/application.yml <<'EOF'
${{ secrets.DEV_APPLICATION_YML }}
EOF

- name: firebase json 주입
shell: bash
run: |
mkdir -p src/main/resources
cat > src/main/resources/firebase-scoi.json <<'EOF'
${{ secrets.FIREBASE_JSON }}
EOF

- name: gradlew 실행 권한 부여
run: chmod +x gradlew

- name: gradle 빌드 (테스트 제외)
run: ./gradlew clean build -x test

- name: Docker Hub 로그인
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Docker 이미지 빌드 및 푸시
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ${{ env.DOCKER_IMAGE_NAME }}:latest


deploy:
needs: build-and-push
runs-on: ubuntu-latest
steps:
- name: EC2에 배포 (SSH 접속)
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_SSH_USER }}
key: ${{ secrets.EC2_SSH_KEY }}

script: |
cd ~/scoi-Backend

echo "${{ secrets.DEV_ENV_FILE }}" > .env
echo "DOCKER_USERNAME=${{ secrets.DOCKER_USERNAME }}" >> .env

# Docker Hub에서 방금 만든 최신 이미지 가져오기
sudo docker-compose pull

# 컨테이너 재실행
sudo docker-compose up -d

# 불필요한 이미지 삭제
sudo docker image prune -f
76 changes: 76 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: SCOI CI

on:
push:
branches: [ "main", "develop" ]
pull_request:
branches: [ "main", "develop" ]

jobs:
build:
runs-on: ubuntu-latest
Comment thread
rlawngjs0313 marked this conversation as resolved.

# CI 서버 내부에서 테스트용 DB/Redis 컨테이너 실행
services:
mysql:
image: mysql:8.0
env:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: scoi
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3

redis:
image: redis:latest
ports:
- 6379:6379
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
Comment thread
rlawngjs0313 marked this conversation as resolved.

steps:
- name: 체크아웃
uses: actions/checkout@v4
Comment thread
rlawngjs0313 marked this conversation as resolved.

- name: 자바 설정 Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
cache: 'gradle'

- name: application.yml 주입
shell: bash
run: |
mkdir -p src/main/resources
cat > src/main/resources/application.yml <<'EOF'
${{ secrets.DEV_APPLICATION_YML }}
EOF

# firebase 파일 생성
- name: firebase json 주입
shell: bash
run: |
mkdir -p src/main/resources
cat > src/main/resources/firebase-scoi.json <<'EOF'
${{ secrets.FIREBASE_JSON }}
EOF

- name: gradlew 실행 권한 부여
run: chmod +x gradlew

- name: gradle 빌드
run: ./gradlew build

# CI용
env:
DB_URL: jdbc:mysql://localhost:3306/scoi?serverTimezone=Asia/Seoul
DB_USERNAME: root
DB_PASSWORD: root
REDIS_HOST: localhost
REDIS_PORT: 6379
JWT_KEY: scoi-test-key
JWT_SECRET: scoi-test-secret-keysdsdsdsdsdsdssdsdsdsdsdsdsdsdsdsdsdsdsdsdsds
COOLSMS_API_URL: test_coolsms_api_key
COOLSMS_API_SECRET: test_coolsms_secret_key
COOLSMS_API_KEY: test_coolsms_key
COOLSMS_FROM_NUMBER: 01000000000
92 changes: 0 additions & 92 deletions .github/workflows/deploy.yml

This file was deleted.

2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
*.yml
*.properties
# GitHub Actions workflow는 예외로 추적
!.github/workflows/deploy.yml
!.github/workflows/
### workflow.yml 제외 ###
!workflow.yml

Expand Down
7 changes: 7 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
FROM eclipse-temurin:21-jdk-alpine

WORKDIR /app

COPY build/libs/*SNAPSHOT.jar app.jar

ENTRYPOINT ["java", "-jar", "-Duser.timezone=Asia/Seoul", "app.jar"]
Comment thread
rlawngjs0313 marked this conversation as resolved.
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
# 스코이 : 편리한 스테이블 코인 결제 플랫폼


## 💡 Project Overview

스코이는 스테이블코인을 일상적인 결제 수단으로 사용할 수 있도록 설계된 금융 플랫폼입니다.
결제부터 투자까지, 누구나 쉽게 사용할 수 있는 편리한 스테이블 코인 금융 환경을 제공하는 것을 목표로 합니다.
스코이는 스테이블코인을 일상적인 결제 수단으로 사용할 수 있도록 설계된 금융 플랫폼입니다
결제부터 투자까지, 누구나 쉽게 사용할 수 있는 편리한 스테이블 코인 금융 환경을 제공하는 것을 목표로 합니다

<img height="512" alt="image" src="https://github.com/user-attachments/assets/4e162831-0a8c-4223-afef-4e001737f43e" />
<img height="512" alt="image" src="https://github.com/user-attachments/assets/531acd4d-1c28-4912-b1a9-90adac60df05" />
Expand Down
6 changes: 6 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,12 @@ dependencies {

// Retry
implementation 'org.springframework.retry:spring-retry'

// Spring Actuator
implementation 'org.springframework.boot:spring-boot-starter-actuator'

// Prometheus
runtimeOnly 'io.micrometer:micrometer-registry-prometheus'
}

tasks.named('test') {
Expand Down
Loading
Loading