Skip to content

Update 리팩토링.md #19

Update 리팩토링.md

Update 리팩토링.md #19

Workflow file for this run

name: SEMTLE-WEB-SERVER CI/CD
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build-docker-image:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
# GitHub 레포지토리 체크아웃
- uses: actions/checkout@v4
# Java 17 설정
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
# ✅ application.yml 생성 (여기에 추가)
- name: Create application.yml
run: |
mkdir -p src/main/resources
echo "${{ secrets.APPLICATION_YML }}" > src/main/resources/application.yml
# Gradle 캐싱
- name: Gradle Caching
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
# Gradle 권한 설정
- name: Grant execute permission for gradlew
run: chmod +x gradlew
# Gradle 빌드 (application.yml이 필요하므로 이 전에 생성해야 함)
- name: Build with Gradle
run: ./gradlew build
# Docker 로그인
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
# Docker 이미지 빌드 및 푸시
- name: Build and Push Docker Image
run: |
docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/semtle-web-server:latest -f Dockerfile .
docker push ${{ secrets.DOCKERHUB_USERNAME }}/semtle-web-server:latest
deploy-docker-image:
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
needs: build-docker-image
runs-on: ubuntu-latest
steps:
- name: Deploy via SSH
uses: appleboy/ssh-action@v1.0.0
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_SSH_KEY }}
port: ${{ secrets.SERVER_PORT }}
script: |
docker login --username ${{ secrets.DOCKERHUB_USERNAME }} --password ${{ secrets.DOCKERHUB_PASSWORD }}
docker pull ${{ secrets.DOCKERHUB_USERNAME }}/semtle-web-server:latest
# ✅ 기존 spring 컨테이너 중지 및 삭제
if [ "$(docker ps -a -q -f name=spring_container)" ]; then
docker stop spring_container
docker rm spring_container
fi
# ✅ 최신 spring 이미지로 다시 실행
docker compose -f /root/semtle-web-server/docker-compose.yml up -d --no-deps --force-recreate spring_app
docker system prune -f