diff --git a/.github/workflows/backend-ci-cd.yml b/.github/workflows/backend-ci-cd.yml new file mode 100644 index 0000000..76c5c60 --- /dev/null +++ b/.github/workflows/backend-ci-cd.yml @@ -0,0 +1,78 @@ +name: Backend CI/CD Pipeline + +on: + push: + paths: + - 'HalfFifty_BE/**' + pull_request: + paths: + - 'HalfFifty_BE/**' + +jobs: + test: + name: Test and Build Backend + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + + - name: Add execute permissions to Gradlew + run: chmod +x ./gradlew + working-directory: HalfFifty_BE + + # Gradle 빌드 및 테스트 + - name: Build and Test + working-directory: HalfFifty_BE + env: + DB_DRIVER_CLASS_NAME: ${{ secrets.DB_DRIVER_CLASS_NAME }} + DB_URL: ${{ secrets.DB_URL }} + DB_USERNAME: ${{ secrets.DB_USERNAME }} + DB_PASSWORD: ${{ secrets.DB_PASSWORD }} + run: | + ./gradlew clean build + + deploy: + name: Deploy Backend + needs: test + if: github.ref == 'refs/heads/main' + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + + - name: Build Docker Image + working-directory: HalfFifty_BE + run: docker build -t half-fifty:latest . + + - name: Deploy to EC2 + uses: appleboy/ssh-action@v0.1.2 + with: + host: ${{ secrets.AWS_IP }} + username: ${{ secrets.AWS_USER }} + key: ${{ secrets.AWS_KEY }} + script: | + docker stop half-fifty || true + docker rm half-fifty || true + docker run -d -p 80:8080 --name half-fifty half-fifty:latest + + - name: Verify Container Status + uses: appleboy/ssh-action@v0.1.2 + with: + host: ${{ secrets.AWS_IP }} + username: ${{ secrets.AWS_USER }} + key: ${{ secrets.AWS_KEY }} + script: docker ps | grep half-fifty diff --git a/HalfFifty_BE/Dockerfile b/HalfFifty_BE/Dockerfile index 064a3ec..2536a63 100644 --- a/HalfFifty_BE/Dockerfile +++ b/HalfFifty_BE/Dockerfile @@ -9,4 +9,4 @@ COPY ${JAR_FILE} app.jar ENTRYPOINT ["java", "-jar", "/app.jar"] # 컨테이너가 사용할 포트 -EXPOSE 8080 +EXPOSE 8081 diff --git a/HalfFifty_BE/docker-compose.yml b/HalfFifty_BE/docker-compose.yml index ec801c0..b91f561 100644 --- a/HalfFifty_BE/docker-compose.yml +++ b/HalfFifty_BE/docker-compose.yml @@ -6,7 +6,7 @@ services: context: . # Dockerfile이 있는 디렉토리 dockerfile: Dockerfile ports: - - "8080:8080" # 로컬 8080 포트를 컨테이너의 8080 포트로 매핑 + - "8081:8080" # 로컬 8080 포트를 컨테이너의 8080 포트로 매핑 environment: SPRING_PROFILES_ACTIVE: prod # Spring Boot의 활성화된 프로파일 설정 restart: always # 컨테이너가 종료되면 자동 재시작doc \ No newline at end of file diff --git a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/HealthCheck.java b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/HealthCheck.java index fd1bbd9..69fdd02 100644 --- a/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/HealthCheck.java +++ b/HalfFifty_BE/src/main/java/HalfFifty/HalfFifty_BE/HealthCheck.java @@ -8,6 +8,6 @@ public class HealthCheck { @GetMapping("/") public String health() { - return "server on"; + return "server on!"; } }