Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
c8a181b
Merge pull request #54 from ZARINATTA/develop
ericyoo0107 Feb 15, 2025
356c778
Merge pull request #57 from ZARINATTA/develop
sk000801 Feb 17, 2025
b75fd91
Merge pull request #58 from ZARINATTA/develop
ericyoo0107 Feb 23, 2025
b64685e
๐Ÿ“ chore : Dockerfile์— prod.yml ํŒŒ์ผ๋„ ํ•จ๊ป˜ ์‹คํ–‰๋˜๋„๋ก ์ถ”๊ฐ€
sk000801 Mar 9, 2025
173cdc2
๐Ÿ’ฉ fix : ๋ฐฐํฌ ์ž๋™ํ™” ์ฝ”๋“œ ์ˆ˜์ •
sk000801 Mar 9, 2025
7a6722d
Merge pull request #60 from ZARINATTA/fix/#11
sk000801 Mar 9, 2025
1953fea
๐Ÿ’ฉ fix : ๋ฐฐํฌ ์ž๋™ํ™” ์ฝ”๋“œ ์ˆ˜์ • v2
sk000801 Mar 9, 2025
4735c03
Merge pull request #61 from ZARINATTA/fix/#11
sk000801 Mar 9, 2025
f8b3647
๐Ÿ’ฉ fix : ๋ฐฐํฌ ์ž๋™ํ™” ์ฝ”๋“œ ์ˆ˜์ • v3
sk000801 Mar 9, 2025
2bc6eab
Merge pull request #62 from ZARINATTA/fix/#11
sk000801 Mar 9, 2025
e8d462b
๐Ÿ’ฉ fix : ๋ฐฐํฌ ์ž๋™ํ™” ์ฝ”๋“œ ์ˆ˜์ • v4
sk000801 Mar 13, 2025
a1515d2
Merge pull request #63 from ZARINATTA/fix/#11
sk000801 Mar 13, 2025
a1013c4
๐Ÿ’ฉ fix : ๋ฐฐํฌ ์ž๋™ํ™” ์ฝ”๋“œ ์ˆ˜์ • v5
sk000801 Mar 13, 2025
8709dd9
Merge pull request #64 from ZARINATTA/fix/#11
sk000801 Mar 13, 2025
8710331
๐Ÿ’ฉ fix : ๋ฐฐํฌ ์ž๋™ํ™” ์ฝ”๋“œ ์ˆ˜์ • v6
sk000801 Mar 13, 2025
6ad3690
Merge pull request #65 from ZARINATTA/fix/#11
sk000801 Mar 13, 2025
aa81cb0
๐Ÿ’ฉ fix : ๋ฐฐํฌ ์ž๋™ํ™” ์ฝ”๋“œ ์ˆ˜์ • v7
sk000801 Mar 13, 2025
50a9ca5
Merge pull request #66 from ZARINATTA/fix/#11
sk000801 Mar 13, 2025
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
39 changes: 33 additions & 6 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,30 @@ jobs:
runs-on: ubuntu-latest

steps:
# 1. ์†Œ์Šค ์ฝ”๋“œ ์ฒดํฌ์•„์›ƒ
- uses: actions/checkout@v4

# 2. Gradle ์บ์‹œ ์„ค์ •
- name: Cache Gradle packages
uses: actions/cache@v3
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-

# 3. JDK 17 ์„ค์ •
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: "17"
distribution: "adopt"

# 4. Gradlew ์‹คํ–‰ ๊ถŒํ•œ ์„ค์ •
- name: Run chmod to make gradlew executable
run: chmod +x ./gradlew

# 5. application.yml ์„ค์ •
- name: Add application.properties
run: |
mkdir -p ./src/main/resources
Expand All @@ -31,35 +44,49 @@ jobs:
cat ./src/main/resources/application.yml
cat ./src/main/resources/application-prod.yml

# 6. Gradle ๋นŒ๋“œ (ํ…Œ์ŠคํŠธ ์ œ์™ธ)
- name: Build with Gradle
run: ./gradlew build -x test

# 7. ๋„์ปค ๊ณต๊ฐ„ ์ •๋ฆฌ (๋นŒ๋“œ ์ „)
- name: Clean Docker Space Before Build
run: docker system prune -a --volumes -f

# 8. ๋ฉ€ํ‹ฐ ์Šคํ…Œ์ด์ง€ Docker ๋นŒ๋“œ
- name: Build docker image
run: |
sudo chmod 666 /var/run/docker.sock
docker buildx build --no-cache --platform linux/amd64 -t ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_IMAGE_NAME }}:latest -f ./Dockerfile .
sudo docker buildx build --platform linux/amd64 -t ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_IMAGE_NAME }}:latest -f ./Dockerfile .

# 9. Docker Hub ๋กœ๊ทธ์ธ
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

# 10. Docker ์ด๋ฏธ์ง€ ํ‘ธ์‹œ
- name: Publish to Docker Hub
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_IMAGE_NAME }}:latest
run: sudo docker push ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_IMAGE_NAME }}:latest

# 11. ์›๊ฒฉ ์„œ๋ฒ„์—์„œ ๋„์ปค ์ •๋ฆฌ ๋ฐ ๋ฐฐํฌ
- name: Connect to WAS & Execute Application
uses: appleboy/[email protected].6
uses: appleboy/[email protected].9
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USERNAME }}
key: ${{ secrets.SERVER_KEY }}
port: ${{ secrets.SERVER_PORT }}
script: |
sudo chmod 666 /var/run/docker.sock
# ์ตœ์‹  ์ด๋ฏธ์ง€ ๋ฐฐํฌ
sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_IMAGE_NAME }}:latest
sudo docker stop ${{ secrets.DOCKERHUB_IMAGE_NAME }} || true
sudo docker rm ${{ secrets.DOCKERHUB_IMAGE_NAME }} || true
sudo docker run -d --name ${{ secrets.DOCKERHUB_IMAGE_NAME }} -p 8080:8080 ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_IMAGE_NAME }}:latest
docker system prune -a --volumes -f
echo "๋"

# ๋„์ปค ์ •๋ฆฌ (์ด๋ฏธ์ง€, ๋„คํŠธ์›Œํฌ, ๋ณผ๋ฅจ)
sudo docker system prune -a --volumes -f
sudo docker volume prune -f
sudo docker network prune -f

echo "๋ฐฐํฌ ์™„๋ฃŒ ๐ŸŽ‰"
6 changes: 2 additions & 4 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
FROM openjdk:18-alpine

ENV TZ=Asia/Seoul
FROM eclipse-temurin:17-jre-alpine

WORKDIR /zarinatta-oauth

Expand All @@ -14,4 +12,4 @@ COPY ${JAR_FILE} app.jar
EXPOSE 8080

# ์‹คํ–‰ ๋ช…๋ น์–ด์— JVM ์˜ต์…˜ ์ถ”๊ฐ€
ENTRYPOINT ["java", "-Dfile.encoding=UTF-8", "-jar", "app.jar"]
ENTRYPOINT ["java", "-Dfile.encoding=UTF-8", "-jar", "app.jar", "--spring.profiles.active=prod"]
21 changes: 14 additions & 7 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -24,32 +24,39 @@ repositories {
}

dependencies {
// Spring Boot
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 'org.springframework.boot:spring-boot-starter-data-redis'

// QueryDsl
// QueryDSL (๋ถˆํ•„์š”ํ•œ jakarta API ์ œ๊ฑฐ)
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"

// Lombok ์ตœ์ ํ™”
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

// jwt
// Database (์šด์˜: MySQL, ํ…Œ์ŠคํŠธ: H2)
runtimeOnly 'com.mysql:mysql-connector-j'
testImplementation 'com.h2database:h2'

// JWT
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
implementation 'io.jsonwebtoken:jjwt-impl:0.11.5'
implementation 'io.jsonwebtoken:jjwt-jackson:0.11.5'

// flyway
// Flyway (core ์ถ”๊ฐ€)
implementation 'org.flywaydb:flyway-core'
implementation 'org.flywaydb:flyway-mysql'

// ํ…Œ์ŠคํŠธ
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

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