Spring Boot

name: CI/CD for Spring Boot

on:
  push:
    branches:
      - main

jobs:
  build:
    name: Build and Deploy
    runs-on: ubuntu-latest

    steps:
    # 1. 코드 체크아웃
    - name: Checkout code
      uses: actions/checkout@v3

    # 2. JDK 설치 및 빌드
    - name: Set up JDK 17
      uses: actions/setup-java@v3
      with:
        java-version: 17
        distribution: temurin # 사용할 JDK 배포판을 지정

    - name: Grant execute permission for Gradle wrapper
      run: chmod +x ./gradlew

    - name: Build with Gradle
      run: ./gradlew build

    # 3. Docker 이미지 빌드
    - name: Build Docker Image
      run: docker build -t gyqjajang/study-bbit_back .

    # 4. Docker 이미지 푸시
    - name: Push Docker Image to DockerHub
      env:
        DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
        DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
      run: |
        echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
        docker push gyqjajang/study-bbit_back
    # 5. SSH를 통해 EC2 서버에 배포
    - name: Deploy to EC2
      uses: appleboy/[email protected]
      with:
        host: ${{ secrets.EC2_HOST }}
        username: ${{ secrets.EC2_USER }}
        key: ${{ secrets.EC2_KEY }}
        port: 22
        script: |
          sudo docker pull gyqjajang/study-bbit_back
          sudo docker stop study-bbit_back || true
          sudo docker rm study-bbit_back || true
          sudo docker run --env-file /home/ubuntu/envdir/back/.env -d -p 8080:8080 -e TZ=Asia/Seoul --name study-bbit_back --restart always gyqjajang/study-bbit_back
          sudo docker system prune -f --volumes

React

name: CI/CD for React

on:
  push:
    branches:
      - main

jobs:
  build:
    name: Build and Deploy
    runs-on: ubuntu-latest

    steps:
    # 1. 코드 체크아웃
    - name: Checkout code
      uses: actions/checkout@v3

    # 2. Docker 이미지 빌드
    - name: Build Docker Image
      run: docker build -t gyqjajang/study-bbit_front .

    # 4. Docker 이미지 푸시
    - name: Push Docker Image to DockerHub
      env:
        DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
        DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
      run: |
        echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
        docker push gyqjajang/study-bbit_front
    # 5. SSH를 통해 EC2 서버에 배포
    - name: Deploy to EC2
      uses: appleboy/[email protected]
      with:
        host: ${{ secrets.EC2_HOST }}
        username: ${{ secrets.EC2_USER }}
        key: ${{ secrets.EC2_KEY }}
        port: 22
        script: |
          sudo docker pull gyqjajang/study-bbit_front
          sudo docker stop study-bbit_front || true
          sudo docker rm study-bbit_front || true
          sudo docker run -d -p 3000:3000 --name study-bbit_front --restart always gyqjajang/study-bbit_front
          sudo docker system prune -f --volumes

Express.js

name: CI/CD for express server

on:
  push:
    branches:
      - main

jobs:
  build:
    name: Build and Deploy
    runs-on: ubuntu-latest

    steps:
    # 1. 코드 체크아웃
    - name: Checkout code
      uses: actions/checkout@v3

    # 2. Docker 이미지 빌드
    - name: Build Docker Image
      run: docker build -t gyqjajang/study-bbit_node_back .

    # 4. Docker 이미지 푸시
    - name: Push Docker Image to DockerHub
      env:
        DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
        DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
      run: |
        echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
        docker push gyqjajang/study-bbit_node_back
    
    # 5. SSH를 통해 EC2 서버에 배포
    - name: Deploy to EC2
      uses: appleboy/[email protected]
      with:
        host: ${{ secrets.EC2_HOST }}
        username: ${{ secrets.EC2_USER }}
        key: ${{ secrets.EC2_KEY }}
        port: 22
        script: |
          sudo docker pull gyqjajang/study-bbit_node_back
          sudo docker stop study-bbit_node_back || true
          sudo docker rm study-bbit_node_back || true
          sudo docker run --env-file /home/ubuntu/envdir/express/.env -d -p 6081:6081 -e TZ=Asia/Seoul --name study-bbit_node_back --restart always gyqjajang/study-bbit_node_back
          sudo docker system prune -f --volumes