Skip to content

Commit ca16758

Browse files
authored
Release 1.0.0
Release 1.0.0
2 parents 8691098 + 78ee82d commit ca16758

327 files changed

Lines changed: 17820 additions & 0 deletions

File tree

Some content is hidden

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

.github/workflows/ci.yml

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
name: Spring CI
2+
3+
on:
4+
push:
5+
branches: [ main, develop ]
6+
pull_request:
7+
branches: [ main, develop ]
8+
9+
jobs:
10+
build:
11+
runs-on: ubuntu-latest
12+
13+
services:
14+
mysql:
15+
image: mysql:8.0
16+
ports:
17+
- 3306:3306
18+
env:
19+
MYSQL_ROOT_PASSWORD: root
20+
MYSQL_DATABASE: runtracker_test
21+
MYSQL_USER: testuser
22+
MYSQL_PASSWORD: testpass
23+
options: --health-cmd="mysqladmin ping --silent" --health-interval=10s --health-timeout=5s --health-retries=5
24+
25+
redis:
26+
image: redis:7-alpine
27+
ports:
28+
- 6379:6379
29+
options: >-
30+
--health-cmd "redis-cli ping"
31+
--health-interval 10s
32+
--health-timeout 5s
33+
--health-retries 5
34+
35+
env:
36+
SPRING_DATASOURCE_URL: jdbc:mysql://localhost:3306/runtracker_test
37+
SPRING_DATASOURCE_USERNAME: testuser
38+
SPRING_DATASOURCE_PASSWORD: testpass
39+
SPRING_JPA_HIBERNATE_DDL_AUTO: update
40+
REDIS_HOST: ${{ secrets.REDIS_HOST }}
41+
REDIS_PORT: ${{ secrets.REDIS_PORT }}
42+
KAKAO_CLIENT_ID: ${{ secrets.KAKAO_CLIENT_ID }}
43+
KAKAO_REDIRECT_URI: ${{ secrets.KAKAO_REDIRECT_URI }}
44+
JWT_SECRET: ${{ secrets.JWT_SECRET }}
45+
JWT_ACCESS_TOKEN_EXPIRATION: ${{ secrets.JWT_ACCESS_TOKEN_EXPIRATION }}
46+
JWT_REFRESH_TOKEN_EXPIRATION: ${{ secrets.JWT_REFRESH_TOKEN_EXPIRATION }}
47+
OAUTH2_REDIRECT_URI: ${{ secrets.OAUTH2_REDIRECT_URI }}
48+
AUTH_KEY: ${{ secrets.AUTH_KEY }}
49+
FCM_JSON: ${{ secrets.FCM_JSON }}
50+
Firebase_ID: ${{ secrets.FIREBASE_PROJECT_ID }}
51+
GOOGLE_MAP_API_KEY: ${{ secrets.GOOGLE_MAP_API_KEY }}
52+
SPRING_DOMAIN: ${{ secrets.SPRING_DOMAIN }}
53+
FILE_UPLOAD_DIR: ./uploads
54+
S3_ACCESS_KEY: ${{ secrets.S3_ACCESS_KEY }}
55+
S3_SECRET_KEY: ${{ secrets.S3_SECRET_KEY }}
56+
S3_REGION: ${{ secrets.S3_REGION }}
57+
S3_BUCKET: ${{ secrets.S3_BUCKET }}
58+
S3_BASE_URL: ${{ secrets.S3_BASE_URL }}
59+
FIREBASE_SERVICE_ACCOUNT_KEY: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_KEY }}
60+
61+
steps:
62+
- name: Checkout source code
63+
uses: actions/checkout@v3
64+
65+
- name: Set up JDK 17
66+
uses: actions/setup-java@v3
67+
with:
68+
distribution: 'temurin'
69+
java-version: '17'
70+
71+
- name: Grant execute permission for Gradle wrapper
72+
run: chmod +x gradlew
73+
working-directory: runtracker
74+
75+
- name: Build with Gradle
76+
run: ./gradlew build
77+
working-directory: runtracker

.github/workflows/deploy.yml

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
name: Deploy to EC2
2+
3+
on:
4+
push:
5+
branches:
6+
- develop
7+
8+
jobs:
9+
deploy:
10+
runs-on: ubuntu-latest
11+
12+
steps:
13+
- name: Checkout
14+
uses: actions/checkout@v5
15+
16+
- name: Deploy to EC2
17+
uses: appleboy/ssh-action@master
18+
with:
19+
host: ${{ secrets.EC2_HOST }}
20+
username: ${{ secrets.EC2_USER }}
21+
key: ${{ secrets.EC2_SSH_KEY }}
22+
script: |
23+
cd ~/RunTracker-Server/runtracker
24+
25+
git pull origin develop
26+
27+
echo "SPRING_DATASOURCE_URL=${{ secrets.SPRING_DATASOURCE_URL }}" > .env
28+
echo "MYSQL_ROOT_PASSWORD=${{ secrets.MYSQL_ROOT_PASSWORD }}" >> .env
29+
echo "GOOGLE_MAP_API_KEY=${{secrets.GOOGLE_MAP_API_KEY}}" >> .env
30+
echo "MYSQL_DATABASE=${{ secrets.MYSQL_DATABASE }}" >> .env
31+
echo "MYSQL_USER=${{ secrets.MYSQL_USER }}" >> .env
32+
echo "MYSQL_PASSWORD=${{ secrets.MYSQL_PASSWORD }}" >> .env
33+
echo "SPRING_DATASOURCE_USERNAME=${{ secrets.SPRING_DATASOURCE_USERNAME }}" >> .env
34+
echo "SPRING_DATASOURCE_PASSWORD=${{ secrets.SPRING_DATASOURCE_PASSWORD }}" >> .env
35+
echo "JWT_SECRET=${{ secrets.JWT_SECRET }}" >> .env
36+
echo "JWT_ACCESS_TOKEN_EXPIRATION=${{ secrets.JWT_ACCESS_TOKEN_EXPIRATION }}" >> .env
37+
echo "JWT_REFRESH_TOKEN_EXPIRATION=${{ secrets.JWT_REFRESH_TOKEN_EXPIRATION }}" >> .env
38+
echo "REDIS_HOST=${{ secrets.REDIS_HOST }}" >> .env
39+
echo "REDIS_PORT=${{ secrets.REDIS_PORT }}" >> .env
40+
echo "AUTH_KEY=${{ secrets.AUTH_KEY }}" >> .env
41+
echo "OAUTH2_REDIRECT_URI=${{ secrets.OAUTH2_REDIRECT_URI }}" >> .env
42+
echo "KAKAO_CLIENT_ID=${{ secrets.KAKAO_CLIENT_ID }}" >> .env
43+
echo "KAKAO_REDIRECT_URI=${{ secrets.KAKAO_REDIRECT_URI }}" >> .env
44+
echo "SPRING_DOMAIN=${{ secrets.SPRING_DOMAIN }}" >> .env
45+
echo "S3_ACCESS_KEY=${{ secrets.S3_ACCESS_KEY }}" >> .env
46+
echo "S3_SECRET_KEY=${{ secrets.S3_SECRET_KEY }}" >> .env
47+
echo "S3_REGION=${{ secrets.S3_REGION }}" >> .env
48+
echo "S3_BUCKET=${{ secrets.S3_BUCKET }}" >> .env
49+
echo "S3_BASE_URL=${{ secrets.S3_BASE_URL }}" >> .env
50+
echo "FILE_UPLOAD_DIR=/app/uploads" >> .env
51+
echo "FIREBASE_SERVICE_ACCOUNT_KEY=${{ secrets.FIREBASE_SERVICE_ACCOUNT_KEY }}" >> .env
52+
echo "Firebase_ID=${{ secrets.FIREBASE_PROJECT_ID }}" >> .env
53+
54+
mkdir -p ./src/main/resources/firebase
55+
echo '${{ secrets.FCM_JSON }}' > ./src/main/resources/firebase/${{ secrets.FIREBASE_SERVICE_ACCOUNT_KEY }}
56+
57+
chmod +x ./gradlew
58+
59+
./gradlew build
60+
61+
sudo docker compose up --build -d
62+
sudo docker image prune -f

.gitignore

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
HELP.md
2+
.gradle
3+
build/
4+
!gradle/wrapper/gradle-wrapper.jar
5+
!**/src/main/**/build/
6+
!**/src/test/**/build/
7+
.DS_Store
8+
9+
### STS ###
10+
.apt_generated
11+
.classpath
12+
.factorypath
13+
.project
14+
.settings
15+
.springBeans
16+
.sts4-cache
17+
bin/
18+
!**/src/main/**/bin/
19+
!**/src/test/**/bin/
20+
21+
### IntelliJ IDEA ###
22+
.idea
23+
*.iws
24+
*.iml
25+
*.ipr
26+
out/
27+
!**/src/main/**/out/
28+
!**/src/test/**/out/
29+
30+
### NetBeans ###
31+
/nbproject/private/
32+
/nbbuild/
33+
/dist/
34+
/nbdist/
35+
/.nb-gradle/
36+
37+
### VS Code ###
38+
.vscode/
39+
40+
### Setting ###
41+
.env
42+
43+
### Auth ###
44+
certbot/conf
45+
certbot/www
46+
47+
### logs ###
48+
*.log
49+
logs/
50+
51+
### Firebase ###
52+
**/firebase/
53+
runtracker-a30bb-firebase-adminsdk-fbsvc-9479026564.json
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
/gradlew text eol=lf
2+
*.bat text eol=crlf
3+
*.jar binary

runtracker-prototype/.gitignore

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
HELP.md
2+
.gradle
3+
build/
4+
!gradle/wrapper/gradle-wrapper.jar
5+
!**/src/main/**/build/
6+
!**/src/test/**/build/
7+
8+
### STS ###
9+
.apt_generated
10+
.classpath
11+
.factorypath
12+
.project
13+
.settings
14+
.springBeans
15+
.sts4-cache
16+
bin/
17+
!**/src/main/**/bin/
18+
!**/src/test/**/bin/
19+
20+
### IntelliJ IDEA ###
21+
.idea
22+
*.iws
23+
*.iml
24+
*.ipr
25+
out/
26+
!**/src/main/**/out/
27+
!**/src/test/**/out/
28+
29+
### NetBeans ###
30+
/nbproject/private/
31+
/nbbuild/
32+
/dist/
33+
/nbdist/
34+
/.nb-gradle/
35+
36+
### VS Code ###
37+
.vscode/
38+
39+
### Setting ###
40+
.env
41+
application-local.yml

runtracker-prototype/Dockerfile

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

runtracker-prototype/build.gradle

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
plugins {
2+
id 'java'
3+
id 'org.springframework.boot' version '3.4.4'
4+
id 'io.spring.dependency-management' version '1.1.7'
5+
}
6+
7+
group = 'com.runtracker-prototype'
8+
version = '0.0.1-SNAPSHOT'
9+
10+
java {
11+
toolchain {
12+
languageVersion = JavaLanguageVersion.of(17)
13+
}
14+
}
15+
16+
configurations {
17+
compileOnly {
18+
extendsFrom annotationProcessor
19+
}
20+
}
21+
22+
repositories {
23+
mavenCentral()
24+
}
25+
26+
dependencies {
27+
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
28+
implementation 'org.springframework.boot:spring-boot-starter-web'
29+
30+
/* Docs */
31+
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'
32+
33+
/* AWS */
34+
implementation platform('software.amazon.awssdk:bom:2.25.16')
35+
implementation 'software.amazon.awssdk:s3'
36+
implementation 'software.amazon.awssdk:auth'
37+
implementation 'software.amazon.awssdk:regions'
38+
39+
/* Log */
40+
implementation 'org.zalando:logbook-spring-boot-starter:3.9.0'
41+
42+
compileOnly 'org.projectlombok:lombok'
43+
runtimeOnly 'com.mysql:mysql-connector-j'
44+
annotationProcessor 'org.projectlombok:lombok'
45+
testImplementation 'org.springframework.boot:spring-boot-starter-test'
46+
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
47+
}
48+
49+
tasks.named('test') {
50+
useJUnitPlatform()
51+
}
52+
53+
tasks.withType(JavaCompile).configureEach {
54+
options.compilerArgs << '-parameters'
55+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
version: '3.8'
2+
3+
services:
4+
db:
5+
image: mysql:8.0
6+
container_name: runtracker_proto_db
7+
environment:
8+
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
9+
MYSQL_DATABASE: ${MYSQL_DATABASE}
10+
MYSQL_USER: ${MYSQL_USER}
11+
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
12+
volumes:
13+
- mysql-data:/var/lib/mysql
14+
networks:
15+
- runtracker_proto_net
16+
17+
app:
18+
build:
19+
context: .
20+
container_name: runtracker_proto_app
21+
ports:
22+
- "8080:8080"
23+
depends_on:
24+
- db
25+
environment:
26+
SPRING_DATASOURCE_URL: ${SPRING_DATASOURCE_URL}
27+
SPRING_DATASOURCE_USERNAME: ${SPRING_DATASOURCE_USERNAME}
28+
SPRING_DATASOURCE_PASSWORD: ${SPRING_DATASOURCE_PASSWORD}
29+
networks:
30+
- runtracker_proto_net
31+
32+
volumes:
33+
mysql-data:
34+
35+
networks:
36+
runtracker_proto_net:
37+
driver: bridge
42.7 KB
Binary file not shown.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
distributionBase=GRADLE_USER_HOME
2+
distributionPath=wrapper/dists
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
4+
networkTimeout=10000
5+
validateDistributionUrl=true
6+
zipStoreBase=GRADLE_USER_HOME
7+
zipStorePath=wrapper/dists

0 commit comments

Comments
 (0)