[feat] Member 엔티티의 email 필드에 유니크 제약조건 설정 #4
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |