Skip to content
Open
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
Binary file added .DS_Store
Binary file not shown.
4 changes: 3 additions & 1 deletion .githooks/pre-commit
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,11 @@ cd "$REPO_ROOT"

case "$(uname -s)" in
Darwin*|Linux*)
./gradlew spotlessApply
./gradlew spotlessCheck
;;
MINGW*|MSYS*)
./gradlew.bat spotlessApply
./gradlew.bat spotlessCheck
;;
*)
Expand All @@ -26,4 +28,4 @@ if [ $RESULT -ne 0 ]; then
else
echo "코드 스타일 검사 통과"
exit 0
fi
fi
116 changes: 116 additions & 0 deletions .github/workflows/develop.yaml.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
name: develop

on:
pull_request:
branches:
- develop
push:
branches:
- develop

env:
IMAGE_NAME: ghcr.io/ddiddit/didit-backend:latest

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v3

- name: Set up JDK 21
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "21"

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4

- name: Build with Gradle
run: ./gradlew build

- name: Upload JAR
if: github.event_name == 'push'
uses: actions/upload-artifact@v4
with:
name: app-jar
path: build/libs/*.jar
retention-days: 1

docker-build:
needs: build
if: github.event_name == 'push'
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v3

- name: Download JAR
uses: actions/download-artifact@v4
with:
name: app-jar
path: build/libs/

- name: Login to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build Docker Image
run: docker build -t $IMAGE_NAME .

- name: Push Docker Image
run: docker push $IMAGE_NAME

deploy:
needs: docker-build
if: github.event_name == 'push'
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v3

- name: Copy deploy scripts to NCP dev server
uses: appleboy/[email protected]
with:
host: ${{ secrets.DEV_HOST }}
username: ${{ secrets.DEV_USER }}
key: ${{ secrets.DEV_SSH_KEY }}
source: "deploy/*"
target: "/home/${{ secrets.DEV_USER }}/didit"

- name: Deploy to dev server
uses: appleboy/[email protected]
env:
COMMIT_MSG: ${{ github.event.head_commit.message }}
with:
host: ${{ secrets.DEV_HOST }}
username: ${{ secrets.DEV_USER }}
key: ${{ secrets.DEV_SSH_KEY }}
envs: COMMIT_MSG
script: |
cd /home/${{ secrets.DEV_USER }}/didit

chmod +x deploy/dev/scripts/*.sh
chmod +x deploy/shared/*.sh

cat > deploy/dev/.env << 'ENVEOF'
SPRING_PROFILES_ACTIVE=dev
DB_USER=${{ secrets.DB_USER }}
DB_PASSWORD=${{ secrets.DB_PASSWORD }}
DB_ROOT_PASSWORD=${{ secrets.DB_ROOT_PASSWORD }}
DISCORD_WEBHOOK_URL=${{ secrets.DISCORD_WEBHOOK_URL }}
ENVEOF

echo "DEPLOYER=${{ github.actor }}" >> deploy/dev/.env
printf 'COMMIT_MESSAGE=%s\n' "$(echo "$COMMIT_MSG" | head -1)" >> deploy/dev/.env

chmod 600 deploy/dev/.env

./deploy/dev/scripts/deploy.sh
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,4 @@ out/
.vscode/

### Kotlin ###
.kotlin
.kotlin
15 changes: 15 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
FROM gradle:8.5-jdk21 AS build

WORKDIR /app

COPY . .

RUN gradle bootJar -x test --no-daemon

FROM eclipse-temurin:21-jre-jammy

WORKDIR /app

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

ENTRYPOINT ["java", "-jar", "app.jar"]
7 changes: 6 additions & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,10 @@ dependencies {
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.springframework.boot:spring-boot-starter-validation")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("org.springframework.boot:spring-boot-starter-actuator")

implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")

developmentOnly("org.springframework.boot:spring-boot-docker-compose")

Expand All @@ -46,6 +48,7 @@ dependencies {
testImplementation("org.jetbrains.kotlin:kotlin-test-junit5")
testImplementation("org.springframework.restdocs:spring-restdocs-mockmvc")
testImplementation("com.tngtech.archunit:archunit-junit5:1.4.1")
testImplementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")

testRuntimeOnly("org.junit.platform:junit-platform-launcher")

Expand Down Expand Up @@ -98,6 +101,8 @@ tasks.register<org.asciidoctor.gradle.jvm.AsciidoctorTask>("asciidoctorApp") {
configurations("asciidoctorExt")
baseDirFollowsSourceFile()

attributes(mapOf("snippets" to snippetsDir.absolutePath))

setSourceDir(file("src/docs/asciidoc/app"))

sources {
Expand Down
17 changes: 17 additions & 0 deletions deploy/dev/docker-compose.app.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
services:
didit-api:
image: ghcr.io/ddiddit/didit-backend:latest
container_name: didit-api
restart: always
environment:
SPRING_PROFILES_ACTIVE: dev
networks:
- didit-network
env_file:
- .env
ports:
- "127.0.0.1:8080:8080"

networks:
didit-network:
external: true
33 changes: 33 additions & 0 deletions deploy/dev/docker-compose.db.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
services:
didit-dev-db:
image: mysql:8.0
container_name: didit-dev-db
restart: always
networks:
- didit-network
ports:
- "127.0.0.1:3306:3306"
env_file:
- .env
environment:
MYSQL_DATABASE: didit
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
TZ: Asia/Seoul
volumes:
- mysql-data:/var/lib/mysql
command:
[
"--character-set-server=utf8mb4",
"--collation-server=utf8mb4_unicode_ci",
"--default-time-zone=Asia/Seoul"
]

networks:
didit-network:
external: true

volumes:
mysql-data:
driver: local
17 changes: 17 additions & 0 deletions deploy/dev/docker-compose.nginx.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
services:
didit-nginx:
image: nginx:latest
container_name: didit-nginx
restart: always
networks:
- didit-network
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- ./certs:/etc/nginx/certs:ro

networks:
didit-network:
external: true
25 changes: 25 additions & 0 deletions deploy/dev/nginx.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
events {}

http {
server {
listen 80;
server_name dev-api.didit.ai.kr;
return 301 https://$host$request_uri;
}

server {
listen 443 ssl;
server_name dev-api.didit.ai.kr;

ssl_certificate /etc/nginx/certs/fullchain.pem;
ssl_certificate_key /etc/nginx/certs/privkey.pem;

location / {
proxy_pass http://didit-api:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
Loading
Loading