Skip to content

Feat : CI/CD

Feat : CI/CD #1

Workflow file for this run

name: CI/CD Pipeline
on:
# PR 생성 시 빌드 및 테스트 실행
pull_request:
branches:
- main # main 브랜치로 병합 대상
# Main 브랜치에 병합되면 배포 실행
push:
branches:
- main
jobs:
# 1. PR 검증 작업
test:
runs-on: ubuntu-latest
steps:
# 코드 체크아웃
- name: Checkout code
uses: actions/checkout@v3
# JDK 설치
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
# Gradle 빌드 및 테스트 실행
- name: Build and test with Gradle
run: ./gradlew clean build
# 2. 배포 작업 (Main 브랜치 푸시 시)
deploy:
if: github.ref == 'refs/heads/main' # Main 브랜치일 때만 실행
runs-on: ubuntu-latest
steps:
# 코드 체크아웃
- name: Checkout code
uses: actions/checkout@v3
# JDK 설치
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
# Docker 이미지 빌드
- name: Build Docker Image
run: docker build -t half-fifty .
# EC2에 배포
- name: Deploy to EC2
uses: appleboy/[email protected]
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