refactor: application.yml 코드 수정 #69
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: Java CI with Docker | |
| on: | |
| push: | |
| branches: [ develop ] # develop 브랜치에 push될 때 실행 | |
| permissions: | |
| contents: read | |
| jobs: | |
| build-and-deploy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| # 1) 워크플로우 실행 전 기본적으로 체크아웃 필요 | |
| - uses: actions/checkout@v3 | |
| # 2) JDK 17 버전 설치 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v3 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| # 3) Gradle 실행 권한 부여 | |
| - name: Grant execute permission for gradlew | |
| run: chmod +x ./gradlew | |
| # 4) Gradle 빌드 | |
| - name: Build with Gradle | |
| run: ./gradlew clean build | |
| # 4) Docker Hub 로그인 | |
| - name: Login to Docker Hub | |
| uses: docker/login-action@v2 | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} | |
| password: ${{ secrets.DOCKER_PASSWORD }} | |
| # 5) Docker 이미지 빌드 및 푸시 | |
| - name: Build and push Docker image | |
| uses: docker/build-push-action@v3 | |
| with: | |
| context: . | |
| push: true | |
| tags: ${{ secrets.DOCKER_USERNAME }}/withmorning:latest # Docker Hub에 올릴 이미지 태그 | |
| # 6) EC2에 배포 | |
| - name: Deploy to EC2 | |
| uses: appleboy/ssh-action@master | |
| with: | |
| host: ${{ secrets.EC2_HOST }} | |
| username: ${{ secrets.EC2_USERNAME }} | |
| key: ${{ secrets.EC2_PRIVATE_KEY }} | |
| script: | | |
| # 0. docker compose 파일 가져오기 | |
| curl -o docker-compose.yml https://raw.githubusercontent.com/WithMorning/Backend/refs/heads/develop/docker-compose.yml | |
| # 1. EC2 서버에 .env 파일을 새로 생성합니다. | |
| # GitHub Secrets의 값을 가져와 파일에 한 줄씩 씁니다. | |
| cat << EOF > .env | |
| DOCKER_IMAGE_NAME=${{ secrets.DOCKER_USERNAME }}/withmorning:latest | |
| DB_URL=${{ secrets.DB_URL }} | |
| DB_USER=${{ secrets.DB_USER }} | |
| DB_PASS=${{ secrets.DB_PASS }} | |
| JWT_SECRET=${{ secrets.JWT_SECRET }} | |
| REDIRECT_URL=${{ secrets.REDIRECT_URL }} | |
| CLIENT_ID=${{ secrets.CLIENT_ID }} | |
| TEAM_ID=${{ secrets.TEAM_ID }} | |
| KEY_ID=${{ secrets.KEY_ID }} | |
| S3_ACCESS_KEY=${{ secrets.S3_ACCESS_KEY }} | |
| S3_SECRET_KEY=${{ secrets.S3_SECRET_KEY }} | |
| COOLSMS_KEY=${{ secrets.COOLSMS_KEY }} | |
| COOLSMS_SECRET=${{ secrets.COOLSMS_SECRET }} | |
| FROM_NUMBER=${{ secrets.FROM_NUMBER }} | |
| EOF | |
| # 2. Auth key, firebase key 생성 | |
| echo "${{ secrets.FIREBASE_SERVICE_KEY }}" > firebase-service-account.json | |
| echo "${{ secrets.AUTH_KEY_P8 }}" > authkey.p8 | |
| # 4. .env 파일의 변수들을 현재 셸 환경으로 로드 (가장 중요!) | |
| export $(grep -v '^#' .env | xargs) | |
| # 2. Docker Compose 실행 | |
| docker compose -f docker-compose.yml pull | |
| docker compose -f docker-compose.yml down | |
| docker compose -f docker-compose.yml up -d | |
| docker image prune -af |