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
5 changes: 5 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
*
!Dockerfile
!build/
!build/libs/
!build/libs/app.jar
29 changes: 3 additions & 26 deletions .github/workflows/ci-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,21 +37,11 @@ jobs:
java-version: '25'
distribution: 'temurin'

- name: Gradle 의존성 캐싱
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-

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

- name: 프로젝트 빌드
run: ./gradlew build
run: ./gradlew build --build-cache

- name: 빌드 결과 댓글
if: always()
Expand Down Expand Up @@ -90,24 +80,11 @@ jobs:
java-version: '25'
distribution: 'temurin'

- name: Gradle 의존성 캐싱
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-

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

- name: 프로젝트 빌드
env:
GOOGLE_OAUTH_CLIENT_ID: ${{ secrets.GOOGLE_OAUTH_CLIENT_ID }}
GOOGLE_OAUTH_CLIENT_SECRET: ${{ secrets.GOOGLE_OAUTH_CLIENT_SECRET }}
run: ./gradlew build
run: ./gradlew build --build-cache

- name: 빌드 결과 댓글
if: always()
Expand Down Expand Up @@ -137,4 +114,4 @@ jobs:
issue_number: context.payload.pull_request.number,
name: 'ready-to-build'
});
} catch (e) {}
} catch (e) {}
15 changes: 1 addition & 14 deletions .github/workflows/ci-push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,21 +20,8 @@ jobs:
java-version: '25'
distribution: 'temurin'

- name: Gradle 의존성 캐싱
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-

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

- name: 프로젝트 빌드
env:
GOOGLE_OAUTH_CLIENT_ID: ${{ secrets.GOOGLE_OAUTH_CLIENT_ID }}
GOOGLE_OAUTH_CLIENT_SECRET: ${{ secrets.GOOGLE_OAUTH_CLIENT_SECRET }}
run: ./gradlew build
run: ./gradlew build --build-cache
38 changes: 28 additions & 10 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,22 @@ jobs:
- name: Repository 접근
uses: actions/checkout@v4

- name: JDK 25 셋팅
uses: actions/setup-java@v4
with:
java-version: '25'
distribution: 'temurin'

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

- name: 애플리케이션 JAR 빌드
run: |
./gradlew bootJar --no-daemon --build-cache
BOOT_JAR=$(find build/libs -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | head -n 1)
test -n "$BOOT_JAR"
cp "$BOOT_JAR" build/libs/app.jar

- name: AWS 자격증명 설정
uses: aws-actions/configure-aws-credentials@v4
with:
Expand All @@ -74,17 +90,19 @@ jobs:
id: login-ecr
uses: aws-actions/amazon-ecr-login@v2

- name: Docker 이미지 빌드 & 푸시
env:
REGISTRY: ${{ steps.login-ecr.outputs.registry }}
run: |
IMAGE=$REGISTRY/backend
TAG=v${{ needs.calculate-version.outputs.version }}
- name: Docker Buildx 설정
uses: docker/setup-buildx-action@v3

docker build -t $IMAGE:$TAG .
docker tag $IMAGE:$TAG $IMAGE:latest
docker push $IMAGE:$TAG
docker push $IMAGE:latest
- name: Docker 이미지 빌드 & 푸시
uses: docker/build-push-action@v6
with:
context: .
push: true
tags: |
${{ steps.login-ecr.outputs.registry }}/backend:v${{ needs.calculate-version.outputs.version }}
${{ steps.login-ecr.outputs.registry }}/backend:latest
cache-from: type=gha,scope=backend-runtime
cache-to: type=gha,scope=backend-runtime,mode=max

- name: 서버 배포
uses: appleboy/ssh-action@v1.0.3
Expand Down
18 changes: 4 additions & 14 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,21 +1,11 @@
# ===== 빌드 스테이지 =====
FROM gradle:jdk25 AS build
WORKDIR /app

# 의존성 먼저 복사 (캐싱 활용)
COPY build.gradle.kts settings.gradle.kts ./
COPY buildSrc ./buildSrc
COPY gradle ./gradle
RUN gradle dependencies --no-daemon || true

# 소스 코드 복사 & 빌드
COPY src ./src
RUN gradle bootJar --no-daemon
# syntax=docker/dockerfile:1.7

# ===== 실행 스테이지 =====
FROM eclipse-temurin:25-jre-alpine
WORKDIR /app
COPY --from=build /app/build/libs/*.jar app.jar

ARG JAR_FILE=build/libs/app.jar
COPY ${JAR_FILE} app.jar

HEALTHCHECK --interval=10s --timeout=5s --start-period=90s --retries=18 \
CMD wget -q -O /dev/null http://127.0.0.1:8081/actuator/health/readiness || exit 1
Expand Down
1 change: 1 addition & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
org.gradle.caching=true
Loading