Skip to content

Commit a273780

Browse files
authored
1.0 버전 업데이트 (#1)
2 parents 25fc3ac + a89e34e commit a273780

File tree

72 files changed

+3750
-16
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+3750
-16
lines changed

.dockerignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
.git
2+
.gradle
3+
build
4+
!build/libs/*.jar
5+
*.md
6+
.gitignore
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
name: deploy-on-server
2+
3+
on:
4+
push:
5+
branches:
6+
- "develop"
7+
8+
permissions: write-all
9+
10+
jobs:
11+
build:
12+
name: Deploy
13+
runs-on: ubuntu-latest
14+
15+
steps:
16+
- name: 리포지토리를 가져옵니다.
17+
uses: actions/checkout@v3
18+
with:
19+
submodules: true
20+
token: ${{ secrets.SUBMODULE_TOKEN }}
21+
22+
- name: JDK 21 설치
23+
uses: actions/setup-java@v4
24+
with:
25+
java-version: '21'
26+
distribution: 'temurin'
27+
28+
- name: Gradle 캐싱
29+
uses: actions/cache@v2
30+
with:
31+
path: |
32+
~/.gradle/caches
33+
~/.gradle/wrapper
34+
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
35+
restore-keys: |
36+
${{ runner.os }}-gradle-
37+
38+
- name: gradlew 파일 실행 권한 부여
39+
run: chmod +x gradlew
40+
41+
- name: 빌드 수행
42+
run: |
43+
./gradlew bootJar --stacktrace
44+
45+
- name: 도커 로그인
46+
uses: docker/login-action@v2
47+
with:
48+
username: ${{ secrets.DOCKER_USERNAME }}
49+
password: ${{ secrets.DOCKER_PASSWORD }}
50+
51+
- name: 도커 빌드
52+
run: |
53+
docker build -t ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_DEV_REPO }} .
54+
docker push ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_DEV_REPO }}
55+
56+
- name: AWS Credentials 설정
57+
uses: aws-actions/configure-aws-credentials@v1
58+
with:
59+
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }}
60+
aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY }}
61+
aws-region: ap-northeast-2
62+
63+
- name: 개발 서버 배포
64+
uses: appleboy/ssh-action@master
65+
with:
66+
host: ${{ secrets.DEV_AWS_EC2_PUBLIC_IP }}
67+
username: ec2-user
68+
key: ${{ secrets.AWS_EC2_PEM_KEY }}
69+
script: |
70+
cd /home/ec2-user/bada-on/dev
71+
echo '${{ secrets.FIREBASE_KEY }}' > firebase-service-account.json
72+
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
73+
docker stop develop-server
74+
docker rm develop-server
75+
docker rmi ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_DEV_REPO }}
76+
docker pull ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_DEV_REPO }}:latest
77+
docker run --name develop-server -d -p 80:8080 \
78+
-e SPRING_PROFILES_ACTIVE=dev \
79+
-v $(pwd)/firebase-service-account.json:/app/firebase-service-account.json \
80+
${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_DEV_REPO }}:latest
81+
docker image prune -f

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ build/
44
!gradle/wrapper/gradle-wrapper.jar
55
!**/src/main/**/build/
66
!**/src/test/**/build/
7-
*.yml
7+
*.json
8+
application*.yml
89

910
### STS ###
1011
.apt_generated

Dockerfile

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
FROM openjdk:21-slim
2+
3+
ARG JAR_FILE=./build/libs/*.jar
4+
COPY ${JAR_FILE} app.jar
5+
ENV SPRING_PROFILES_ACTIVE=${SPRING_PROFILES_ACTIVE}
6+
ENTRYPOINT ["java", "-jar", "/app.jar"]

bada-on-config

build.gradle

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,22 @@ dependencies {
3333
annotationProcessor 'org.projectlombok:lombok'
3434
testImplementation 'org.springframework.boot:spring-boot-starter-test'
3535
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
36+
implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.18.1'
37+
implementation 'com.fasterxml.woodstox:woodstox-core:6.5.0'
38+
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.7.0'
39+
implementation 'com.google.firebase:firebase-admin:9.4.1'
3640
}
3741

3842
tasks.named('test') {
3943
useJUnitPlatform()
4044
}
4145

42-
task copySecret(type: Copy) {
46+
processResources.dependsOn('copySecret')
47+
tasks.register('copySecret', Copy) {
48+
description = 'Copy submodules to project'
4349
from('bada-on-config') {
4450
include('*.yml')
51+
include('*.json')
4552
}
4653
into('src/main/resources')
4754
}

src/main/java/nambang_swag/bada_on/BadaOnServerApplication.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,22 @@
11
package nambang_swag.bada_on;
22

3+
import java.util.TimeZone;
4+
35
import org.springframework.boot.SpringApplication;
46
import org.springframework.boot.autoconfigure.SpringBootApplication;
7+
import org.springframework.scheduling.annotation.EnableScheduling;
8+
9+
import jakarta.annotation.PostConstruct;
510

611
@SpringBootApplication
12+
@EnableScheduling
713
public class BadaOnServerApplication {
814

15+
@PostConstruct
16+
void started() {
17+
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Seoul"));
18+
}
19+
920
public static void main(String[] args) {
1021
SpringApplication.run(BadaOnServerApplication.class, args);
1122
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package nambang_swag.bada_on.config;
2+
3+
import java.util.ArrayList;
4+
import java.util.Arrays;
5+
import java.util.List;
6+
7+
import org.springframework.boot.CommandLineRunner;
8+
import org.springframework.stereotype.Component;
9+
10+
import lombok.RequiredArgsConstructor;
11+
import nambang_swag.bada_on.request.PlaceRegister;
12+
import nambang_swag.bada_on.service.PlaceService;
13+
14+
@RequiredArgsConstructor
15+
@Component
16+
public class DataLoader implements CommandLineRunner {
17+
18+
private final PlaceService placeService;
19+
20+
@Override
21+
public void run(String... args) {
22+
List<String> commonActivities = Arrays.asList("diving", "snorkeling", "swimming", "surfing",
23+
"padding");
24+
25+
List<PlaceRegister> places = new ArrayList<>();
26+
places.add(
27+
new PlaceRegister("협재 해수욕장", 33.394, 126.239, "제주 제주시 한림읍 한림로 329-10", commonActivities, "제주도서부",
28+
"북서연안바다"));
29+
places.add(
30+
new PlaceRegister("금능으뜸원 해수욕장", 33.389, 126.235, "제주 제주시 한림읍 금능길 119-10", commonActivities, "제주도서부",
31+
"북서연안바다"));
32+
places.add(
33+
new PlaceRegister("이호테우 해수욕장", 33.497, 126.452, "제주 제주시 도리로 20", commonActivities, "제주도북부", "북부연안바다"));
34+
places.add(
35+
new PlaceRegister("삼양검은모래 해수욕장", 33.525, 126.586, "제주 제주시 삼양동", commonActivities, "제주도북부", "북부연안바다")
36+
);
37+
places.add(
38+
new PlaceRegister("함덕서우봉 해수욕장", 33.543, 126.669, "제주 제주시 조천읍 조함해안로 525", commonActivities, "제주도북부",
39+
"북부연안바다"));
40+
places.add(
41+
new PlaceRegister("김녕성세기 해수욕장", 33.557, 126.759, "제주 제주시 구좌읍 김녕로21길 25", commonActivities, "제주도동부",
42+
"북동연안바다"));
43+
places.add(
44+
new PlaceRegister("중문ㆍ색달 해수욕장", 33.244, 126.411, "제주 서귀포시 중문관광로72번길 100", commonActivities, "제주도남부",
45+
"남부연안바다"));
46+
places.add(
47+
new PlaceRegister("화순금모래 해수욕장", 33.236, 126.319, "제주 서귀포시 안덕면 화순해안로 91", commonActivities, "제주도남부",
48+
"남부연안바다"));
49+
places.add(
50+
new PlaceRegister("하효쇠소깍 해수욕장", 33.252, 126.623, "제주 서귀포시 하효동", commonActivities, "제주도남부",
51+
"남부연안바다"));
52+
places.add(
53+
new PlaceRegister("표선해비치", 33.327, 126.843, "제주 서귀포시 표선면 표선리", commonActivities, "제주도동부",
54+
"남동연안바다"));
55+
places.add(
56+
new PlaceRegister("신양섭지코지 해수욕장", 33.434, 126.923, "제주 서귀포시 성산읍 섭지코지로 107", commonActivities, "제주도동부",
57+
"남동연안바다"));
58+
places.add(
59+
new PlaceRegister("종달 해수욕장", 33.496, 126.913, "제주 제주시 구좌읍 종달리 565-72", commonActivities, "제주도동부",
60+
"남동연안바다"));
61+
places.add(
62+
new PlaceRegister("하도 해수욕장", 33.512, 126.898, "제주 제주시 구좌읍 하도리", commonActivities, "제주도동부",
63+
"북동연안바다"));
64+
65+
for (PlaceRegister place : places) {
66+
placeService.register(place);
67+
}
68+
}
69+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package nambang_swag.bada_on.config;
2+
3+
import java.io.FileInputStream;
4+
import java.io.IOException;
5+
6+
import org.springframework.context.annotation.Bean;
7+
import org.springframework.context.annotation.Configuration;
8+
9+
import com.google.auth.oauth2.GoogleCredentials;
10+
import com.google.firebase.FirebaseApp;
11+
import com.google.firebase.FirebaseOptions;
12+
13+
@Configuration
14+
public class FireBaseConfig {
15+
16+
@Bean
17+
public FirebaseApp initializeFirebase() throws IOException {
18+
FileInputStream serviceAccount = new FileInputStream("/app/firebase-service-account.json");
19+
FirebaseOptions options = FirebaseOptions.builder()
20+
.setCredentials(GoogleCredentials.fromStream(serviceAccount))
21+
.build();
22+
return FirebaseApp.initializeApp(options);
23+
}
24+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package nambang_swag.bada_on.config;
2+
3+
import org.springframework.context.annotation.Bean;
4+
import org.springframework.context.annotation.Configuration;
5+
6+
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
7+
import io.swagger.v3.oas.annotations.servers.Server;
8+
import io.swagger.v3.oas.models.OpenAPI;
9+
import io.swagger.v3.oas.models.info.Info;
10+
11+
@OpenAPIDefinition(
12+
servers = {
13+
@Server(url = "https://badaon.shop", description = "개발 서버"),
14+
@Server(url = "http://localhost:8080", description = "로컬 서버")
15+
}
16+
)
17+
@Configuration
18+
public class SwaggerConfig {
19+
20+
@Bean
21+
public OpenAPI customOpenAPI() {
22+
return new OpenAPI()
23+
.info(new Info()
24+
.title("Bada On API")
25+
.version("v1.0")
26+
.description("바다온 API 명세서"));
27+
}
28+
}

0 commit comments

Comments
 (0)