Skip to content

Merge pull request #83:#82-게시글 목록 조회 api Validator 의존 관계 설정 #93

Merge pull request #83:#82-게시글 목록 조회 api Validator 의존 관계 설정

Merge pull request #83:#82-게시글 목록 조회 api Validator 의존 관계 설정 #93

Workflow file for this run

name: Java CI with Gradle
# 동작 조건 설정 : develop 브랜치에 push 또는 pull request가 발생할 경우 동작한다.
on:
push:
branches: [ "dev", "main" ]
pull_request:
branches: [ "dev", "main" ]
env:
DOCKER_IMAGE: ${{ secrets.DOCKERHUB_USERNAME }}/2025andrew
PORT: 8080
jobs:
# Spring Boot 애플리케이션을 빌드하여 도커허브에 push 하는 과정
build-docker-image:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
# 1. Java 17 설정
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
# 2. SpringBoot 애플리케이션 Build
- name: Set up Gradle
uses: gradle/actions/[email protected]
# 2-1 실행 권한 설정
- name: Grant execute permission
run: chmod +x ./gradlew
- name: Build with Gradle
run: ./gradlew clean bootJar
# 3. Docker 이미지 빌드
- name: docker image build
run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/2025andrew:latest .
# 4. DockerHub 로그인
- name: docker login
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
# 5. Docker Hub 이미지 푸시
- name: docker Hub push
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/2025andrew:latest
- name: Build with Gradle Wrapper
run: ./gradlew build -x test
deploy:
needs: build-docker-image
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Docker Hub Login
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Deploy to EC2 via SSH
uses: appleboy/[email protected]
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_SSH_KEY }}
script: |
# docker compose.yml과 .env.prod가 있는 디렉토리로 이동
cd /home/ubuntu/app
echo ${{ secrets.DOCKERHUB_PASSWORD }} | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin
# 최신 이미지 pull
docker pull ${{ secrets.DOCKERHUB_USERNAME }}/2025andrew:latest
# 기존 컨테이너 중지 및 삭제
docker compose down
# 최신 이미지로 재실행
docker compose up -d
# 상태 확인
docker ps | grep 2025andrew
# 불필요한 리소스 정리
docker system prune -f