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
16 changes: 1 addition & 15 deletions .github/workflows/dev-cicd.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,6 @@ jobs:
if: github.event_name == 'push'
runs-on: ubuntu-latest

environment:
name: Development
url: https://api-dev.souzip.com

steps:
- name: Checkout
uses: actions/checkout@v3
Expand Down Expand Up @@ -140,16 +136,6 @@ jobs:
DEV_API_DOCS_URL=${{ secrets.DEV_API_DOCS_URL }}
ADMIN_INITIAL_USERNAME=${{ secrets.ADMIN_INITIAL_USERNAME }}
ADMIN_INITIAL_PASSWORD=${{ secrets.ADMIN_INITIAL_PASSWORD }}
GRAFANA_ADMIN_USER=${{ secrets.DEV_GRAFANA_ADMIN_USER }}
GRAFANA_ADMIN_PASSWORD=${{ secrets.DEV_GRAFANA_ADMIN_PASSWORD }}
FIREBASE_ENABLED=${{ secrets.FIREBASE_ENABLED }}
FIREBASE_CREDENTIALS_PATH=${{ secrets.DEV_FIREBASE_CREDENTIALS_PATH }}
MAIL_SMTP_ENABLED=${{ secrets.MAIL_SMTP_ENABLED }}
MAIL_SMTP_HOST=${{ secrets.MAIL_SMTP_HOST }}
MAIL_SMTP_PORT=${{ secrets.MAIL_SMTP_PORT }}
MAIL_SMTP_USERNAME=${{ secrets.MAIL_SMTP_USERNAME }}
MAIL_SMTP_PASSWORD=${{ secrets.MAIL_SMTP_PASSWORD }}
MAIL_SMTP_FROM=${{ secrets.MAIL_SMTP_FROM }}
EOF

echo "DEPLOYER=${{ github.actor }}" >> deploy/dev/.env
Expand All @@ -159,4 +145,4 @@ jobs:

gcloud auth configure-docker asia-northeast3-docker.pkg.dev

./deploy/dev/scripts/deploy.sh
./deploy/dev/scripts/deploy.sh
16 changes: 1 addition & 15 deletions .github/workflows/prod-cicd.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,6 @@ jobs:
if: github.event_name == 'push'
runs-on: ubuntu-latest

environment:
name: Production
url: https://api.souzip.com

steps:
- uses: actions/checkout@v3

Expand Down Expand Up @@ -135,16 +131,6 @@ jobs:
NCP_BUCKET=${{ secrets.NCP_BUCKET }}
NCP_ACCESS_KEY=${{ secrets.NCP_ACCESS_KEY }}
NCP_SECRET_KEY=${{ secrets.NCP_SECRET_KEY }}
GRAFANA_ADMIN_USER=${{ secrets.PROD_GRAFANA_ADMIN_USER }}
GRAFANA_ADMIN_PASSWORD=${{ secrets.PROD_GRAFANA_ADMIN_PASSWORD }}
FIREBASE_ENABLED=${{ secrets.FIREBASE_ENABLED }}
FIREBASE_CREDENTIALS_PATH=${{ secrets.PROD_FIREBASE_CREDENTIALS_PATH }}
MAIL_SMTP_ENABLED=${{ secrets.MAIL_SMTP_ENABLED }}
MAIL_SMTP_HOST=${{ secrets.MAIL_SMTP_HOST }}
MAIL_SMTP_PORT=${{ secrets.MAIL_SMTP_PORT }}
MAIL_SMTP_USERNAME=${{ secrets.MAIL_SMTP_USERNAME }}
MAIL_SMTP_PASSWORD=${{ secrets.MAIL_SMTP_PASSWORD }}
MAIL_SMTP_FROM=${{ secrets.MAIL_SMTP_FROM }}
EOF

echo "DEPLOYER=${{ github.actor }}" >> deploy/prod/.env
Expand All @@ -154,4 +140,4 @@ jobs:

gcloud auth configure-docker asia-northeast3-docker.pkg.dev

./deploy/prod/scripts/deploy.sh
./deploy/prod/scripts/deploy.sh
5 changes: 3 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ FROM eclipse-temurin:21-jdk

WORKDIR /app

COPY build/libs/*.jar /souzip-api.jar
ARG JAR_FILE=build/libs/souzip-api-0.0.1-SNAPSHOT.jar
COPY ${JAR_FILE} /souzip-api.jar

EXPOSE 8080

ENTRYPOINT ["java", "-jar", "/souzip-api.jar"]
ENTRYPOINT ["java", "-jar", "/souzip-api.jar"]
179 changes: 85 additions & 94 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,164 +1,155 @@
plugins {
id 'java'
id 'org.springframework.boot' version '3.5.8'
id 'io.spring.dependency-management' version '1.1.7'
id 'org.asciidoctor.jvm.convert' version '3.3.2'
id 'java'
id 'org.springframework.boot' version '3.5.8'
id 'io.spring.dependency-management' version '1.1.7'
id 'org.asciidoctor.jvm.convert' version '3.3.2'
}

group = 'com.souzip'
version = '1.1.0-SNAPSHOT'
description = 'Souzip API - Travel Souvenir Recommendation Platform'
version = '0.0.1-SNAPSHOT'
description = 'Demo project for Spring Boot'

java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}

jar {
enabled = false
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}

configurations {
compileOnly {
extendsFrom annotationProcessor
}
asciidoctorExt
compileOnly {
extendsFrom annotationProcessor
}
asciidoctorExt
}

repositories {
mavenCentral()
mavenCentral()
}

ext {
snippetsDir = file('build/generated-snippets')
snippetsDir = file('build/generated-snippets')
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-aop'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-mail'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-aop'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-actuator'

implementation 'me.paulschwarz:spring-dotenv:4.0.0'
implementation 'me.paulschwarz:spring-dotenv:4.0.0'

runtimeOnly 'org.springframework.boot:spring-boot-docker-compose'
runtimeOnly 'org.springframework.boot:spring-boot-docker-compose'

runtimeOnly 'org.postgresql:postgresql'
runtimeOnly 'org.postgresql:postgresql'

implementation 'org.flywaydb:flyway-core'
implementation 'org.flywaydb:flyway-database-postgresql'
implementation 'org.flywaydb:flyway-core'
implementation 'org.flywaydb:flyway-database-postgresql'

implementation 'io.jsonwebtoken:jjwt-api:0.12.3'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.12.3'
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.12.3'
implementation 'io.jsonwebtoken:jjwt-api:0.12.3'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.12.3'
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.12.3'

implementation 'io.micrometer:micrometer-registry-prometheus'
implementation 'net.logstash.logback:logstash-logback-encoder:8.1'
implementation 'io.micrometer:micrometer-registry-prometheus'

implementation 'com.querydsl:querydsl-jpa:5.1.0:jakarta'
annotationProcessor 'com.querydsl:querydsl-apt:5.1.0:jakarta'
annotationProcessor 'jakarta.annotation:jakarta.annotation-api'
annotationProcessor 'jakarta.persistence:jakarta.persistence-api'
implementation 'com.querydsl:querydsl-jpa:5.1.0:jakarta'
annotationProcessor 'com.querydsl:querydsl-apt:5.1.0:jakarta'
annotationProcessor 'jakarta.annotation:jakarta.annotation-api'
annotationProcessor 'jakarta.persistence:jakarta.persistence-api'

implementation 'com.amazonaws:aws-java-sdk-s3:1.12.529'
implementation 'com.amazonaws:aws-java-sdk-s3:1.12.529'

implementation 'com.google.firebase:firebase-admin:9.4.3'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'

compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc'
testImplementation 'com.h2database:h2'
testImplementation 'com.tngtech.archunit:archunit-junit5:1.4.1'

testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc'
testImplementation 'com.h2database:h2'
testImplementation 'com.tngtech.archunit:archunit-junit5:1.4.1'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

asciidoctorExt 'org.springframework.restdocs:spring-restdocs-asciidoctor'
asciidoctorExt 'org.springframework.restdocs:spring-restdocs-asciidoctor'
}

def generatedDir = 'build/generated/sources/annotationProcessor/java/main'

tasks.withType(JavaCompile).configureEach {
options.getGeneratedSourceOutputDirectory().set(file(generatedDir))
options.getGeneratedSourceOutputDirectory().set(file(generatedDir))
}

sourceSets {
main.java.srcDirs += [generatedDir]
main.java.srcDirs += [generatedDir]
}

clean {
delete file(generatedDir)
delete file(generatedDir)
}

tasks.named('test') {
outputs.dir snippetsDir
useJUnitPlatform()
systemProperty 'spring.profiles.active', 'test'
outputs.dir snippetsDir
useJUnitPlatform()
}

def appDocsOutDir = file("$buildDir/docs/app")
def adminDocsOutDir = file("$buildDir/docs/admin")

tasks.register('asciidoctorApp', org.asciidoctor.gradle.jvm.AsciidoctorTask) {
group = 'documentation'
description = 'Generate App API docs (Asciidoctor)'
group = 'documentation'
description = 'Generate App API docs (Asciidoctor)'

inputs.dir snippetsDir
configurations 'asciidoctorExt'
dependsOn tasks.named('test')
inputs.dir snippetsDir
configurations 'asciidoctorExt'
dependsOn tasks.named('test')

baseDirFollowsSourceFile()
baseDirFollowsSourceFile()

sourceDir = file('src/docs/asciidoc/app')
sources { include 'index.adoc' }
sourceDir = file('src/docs/asciidoc/app')
sources { include 'index.adoc' }

outputDir = appDocsOutDir
outputDir = appDocsOutDir
}

tasks.register('asciidoctorAdmin', org.asciidoctor.gradle.jvm.AsciidoctorTask) {
group = 'documentation'
description = 'Generate Admin API docs (Asciidoctor)'
group = 'documentation'
description = 'Generate Admin API docs (Asciidoctor)'

inputs.dir snippetsDir
configurations 'asciidoctorExt'
dependsOn tasks.named('test')
inputs.dir snippetsDir
configurations 'asciidoctorExt'
dependsOn tasks.named('test')

baseDirFollowsSourceFile()
baseDirFollowsSourceFile()

sourceDir = file('src/docs/asciidoc/admin')
sources { include 'index.adoc' }
sourceDir = file('src/docs/asciidoc/admin')
sources { include 'index.adoc' }

outputDir = adminDocsOutDir
outputDir = adminDocsOutDir
}

tasks.named('bootJar') {
dependsOn tasks.named('asciidoctorApp'), tasks.named('asciidoctorAdmin')

from(appDocsOutDir) {
into 'static/docs/app'
}
from(adminDocsOutDir) {
into 'static/docs/admin'
}
dependsOn tasks.named('asciidoctorApp'), tasks.named('asciidoctorAdmin')

from(appDocsOutDir) {
into 'static/docs/app'
}
from(adminDocsOutDir) {
into 'static/docs/admin'
}
}

tasks.register('copyDocsApp', Copy) {
group = 'documentation'
description = 'Copy App docs to src/main/resources/static/docs/app'
dependsOn tasks.named('asciidoctorApp')
from appDocsOutDir
into file("src/main/resources/static/docs/app")
group = 'documentation'
description = 'Copy App docs to src/main/resources/static/docs/app'
dependsOn tasks.named('asciidoctorApp')
from appDocsOutDir
into file("src/main/resources/static/docs/app")
}

tasks.register('copyDocsAdmin', Copy) {
group = 'documentation'
description = 'Copy Admin docs to src/main/resources/static/docs/admin'
dependsOn tasks.named('asciidoctorAdmin')
from adminDocsOutDir
into file("src/main/resources/static/docs/admin")
}
group = 'documentation'
description = 'Copy Admin docs to src/main/resources/static/docs/admin'
dependsOn tasks.named('asciidoctorAdmin')
from adminDocsOutDir
into file("src/main/resources/static/docs/admin")
}
3 changes: 0 additions & 3 deletions deploy/dev/docker-compose.app.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,6 @@ services:
- souzip-network
env_file:
- .env
volumes:
- /home/souzip-dev/secrets:/home/souzip-dev/secrets:ro
- /home/souzip-dev/logs/souzip-api:/home/souzip-dev/logs/souzip-api
ports:
- "127.0.0.1:8080:8080"

Expand Down
2 changes: 1 addition & 1 deletion deploy/dev/docker-compose.db.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ services:
networks:
- souzip-network
ports:
- "127.0.0.1:5432:5432"
- "5432:5432"
env_file:
- .env
environment:
Expand Down
44 changes: 0 additions & 44 deletions deploy/dev/docker-compose.monitoring.yaml

This file was deleted.

Loading
Loading