diff --git a/.github/workflows/be-cicd.yml b/.github/workflows/be-cicd.yml new file mode 100644 index 00000000..16a6eae4 --- /dev/null +++ b/.github/workflows/be-cicd.yml @@ -0,0 +1,60 @@ +name: BACKEND-CICD + +on: + push: + branches: + - dev + paths: + - 'src/backend/**' + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + + strategy: + matrix: + service: + - stock_server + - auth_server + - workspace_server + - chat_server + - file_server + - history_server + - push_server + - state_server + + steps: + # 1. 코드 체크아웃 + - name: Checkout code + uses: actions/checkout@v3 + + # 2. Java 17(Zulu) 환경 설정 + - name: Set up JDK 17 (Zulu) + uses: actions/setup-java@v3 + with: + distribution: 'zulu' + java-version: '17' + + # 3. Gradle 빌드 + - name: Build Gradle project + working-directory: backend/${{ matrix.service }} + run: | + chmod +x ./gradlew + ./gradlew clean build -x test + + # 4. Docker Hub 로그인 + - name: Log in to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + # 5. Docker 이미지 빌드 및 푸시 + - name: Build and push Docker image + working-directory: backend/${{ matrix.service }} + run: | + docker build --platform linux/amd64 \ + --build-arg JAR_FILE=build/libs/${{ matrix.service }}-0.0.1-SNAPSHOT.jar \ + -t ${{ secrets.DOCKER_USERNAME }}/${{ matrix.service }}:latest . + + docker push ${{ secrets.DOCKER_USERNAME }}/${{ matrix.service }}:latest diff --git a/src/backend/chat_server/Dockerfile b/src/backend/chat_server/Dockerfile index d09da88b..5399673f 100644 --- a/src/backend/chat_server/Dockerfile +++ b/src/backend/chat_server/Dockerfile @@ -1,6 +1,12 @@ -FROM --platform=linux/amd64 azul/zulu-openjdk:17 -ARG JAR_FILE=build/libs/chat_server1.jar -COPY ${JAR_FILE} ./chat_server1.jar -ENV TZ=Asia/Seoul -ENTRYPOINT ["java", "-jar", "./chat_server1.jar"] +# Azul Zulu JDK 17 기반 이미지 사용 +FROM azul/zulu-openjdk:17 +# 작업 디렉토리 설정 +WORKDIR /app + +# 빌드된 JAR 파일 복사 +ARG JAR_FILE=build/libs/chat_server-0.0.1-SNAPSHOT.jar +COPY ${JAR_FILE} app.jar + +# 애플리케이션 실행 +ENTRYPOINT ["java", "-jar", "app.jar"] diff --git a/src/backend/history_server/Dockerfile b/src/backend/history_server/Dockerfile index 953be1c3..da79fded 100644 --- a/src/backend/history_server/Dockerfile +++ b/src/backend/history_server/Dockerfile @@ -1,5 +1,12 @@ -FROM --platform=linux/amd64 azul/zulu-openjdk:17 -ARG JAR_FILE=build/libs/history_server.jar -COPY ${JAR_FILE} ./history_server.jar -ENV TZ=Asia/Seoul -ENTRYPOINT ["java", "-jar", "./history_server.jar"] \ No newline at end of file +# Azul Zulu JDK 17 기반 이미지 사용 +FROM azul/zulu-openjdk:17 + +# 작업 디렉토리 설정 +WORKDIR /app + +# 빌드된 JAR 파일 복사 +ARG JAR_FILE=build/libs/history_server-0.0.1-SNAPSHOT.jar +COPY ${JAR_FILE} app.jar + +# 애플리케이션 실행 +ENTRYPOINT ["java", "-jar", "app.jar"] diff --git a/src/backend/stock_server/Dockerfile b/src/backend/stock_server/Dockerfile index a4ab79f4..48526ed0 100644 --- a/src/backend/stock_server/Dockerfile +++ b/src/backend/stock_server/Dockerfile @@ -1,5 +1,12 @@ -FROM --platform=linux/amd64 openjdk:17 -ARG JAR_FILE=build/libs/stock_server.jar -COPY ${JAR_FILE} ./stock_server.jar -ENV TZ=Asia/Seoul -ENTRYPOINT ["java", "-jar", "./stock_server.jar"] \ No newline at end of file +# Azul Zulu JDK 17 기반 이미지 사용 +FROM azul/zulu-openjdk:17 + +# 작업 디렉토리 설정 +WORKDIR /app + +# 빌드된 JAR 파일 복사 +ARG JAR_FILE=build/libs/stock_server-0.0.1-SNAPSHOT.jar +COPY ${JAR_FILE} app.jar + +# 애플리케이션 실행 +ENTRYPOINT ["java", "-jar", "app.jar"]