Skip to content

[feat] Member 엔티티의 email 필드에 유니크 제약조건 설정 #4

[feat] Member 엔티티의 email 필드에 유니크 제약조건 설정

[feat] Member 엔티티의 email 필드에 유니크 제약조건 설정 #4

Workflow file for this run

name: Backend CI/CD
on:
pull_request:
branches: [develop]
push:
branches: [develop]
# 레지스트리 태그를 한 곳에 모아두기
env:
IMAGE_NAME: ${{ secrets.DOCKERHUB_USERNAME }}/wit-backend:latest
jobs:
# ───────────────────────── CI (PR용 빌드·테스트) ─────────────────────────
ci:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
# - name: Build with Gradle
# run: ./gradlew build
#
# - name: Run tests
# run: ./gradlew test
- name: Build without tests
run: ./gradlew build -x test
# ───────────────────────── CD (develop 브랜치 푸시 시) ─────────────────────────
cd:
if: github.event_name == 'push' && github.ref == 'refs/heads/develop'
runs-on: ubuntu-latest
steps:
# 소스 체크아웃 + JAR 빌드
- uses: actions/checkout@v3
# repo에 docker-compose.yml이 없으므로 Secret에서 꺼내기
- name: Restore docker-compose.yml
run: |
cat << 'EOF' > docker-compose.yml
${{ secrets.DOCKER_COMPOSE_YML }}
EOF
# application-dev.yml 을 Secret 에서 꺼내기
- name: Restore application-dev.yml
run: |
cat << 'EOF' > application-dev.yml
${{ secrets.APPLICATION_DEV_YML }}
EOF
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build
# run: ./gradlew build
run: ./gradlew build -x test
# 도커 이미지 빌드 → Docker Hub 푸시
- name: Build Docker image
run: docker build -t $IMAGE_NAME .
- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN }}
- name: Push Docker image
run: docker push $IMAGE_NAME
# docker-compose.yml, application-dev.yml, nginx EC2 로 복사
- name: Copy compose & nginx & dev-config to EC2
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_SSH_KEY }}
source: "docker-compose.yml,application-dev.yml,nginx/withtravel.conf"
target: "~/withtravel"
# EC2로 배포 (compose pull/up)
- name: Deploy to EC2 with Compose
uses: appleboy/ssh-action@v0.1.7
env: # ← 추가
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_SSH_KEY }}
envs: DOCKERHUB_USERNAME
script: |
set -e
cd ~/withtravel
# 기존 단일 컨테이너(처음 한 번만 있으면) 정리
docker compose down --remove-orphans
# 최신 이미지 가져와 재배치
docker compose pull
docker compose up -d --remove-orphans --force-recreate
# 불필요 이미지 정리
docker image prune -f --filter dangling=true