refactor: star post api 오류 수정 #18
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: Deploy To EC2 | |
| on: | |
| push: | |
| branches: | |
| - "feat/#49-cicd-setup" | |
| jobs: | |
| Deploy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Github Repository 파일 불러오기 | |
| uses: actions/checkout@v4 | |
| - name: JDK 21버전 설치 | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: 21 | |
| - name: application.yml (통합본) 파일 생성 | |
| run: | | |
| mkdir -p ./src/main/resources | |
| # 통합된 yml 하나만 생성. local.yml은 삭제했습니다. | |
| echo '${{ secrets.APPLICATION_YML }}' > ./src/main/resources/application.yml | |
| - name: Create Firebase Secret File | |
| run: | | |
| # 폴더가 없으면 생성 | |
| mkdir -p ./src/main/resources/firebase | |
| # Secret에 담긴 텍스트를 파일로 기록 | |
| echo '${{ secrets.FIREBASE_JSON }}' > ./src/main/resources/firebase/serviceAccountKey.json | |
| - name: 빌드하기 (테스트 제외) | |
| # RDS 보안 그룹 설정 등에 따라 빌드 중 DB 접속 테스트가 실패할 수 있으므로 | |
| # 안정적인 배포를 위해 -x test를 권장. | |
| run: | | |
| chmod +x ./gradlew | |
| ./gradlew clean build -x test | |
| - name: AWS credentials 인증 설정 | |
| uses: aws-actions/configure-aws-credentials@v4 | |
| with: | |
| aws-region: ap-northeast-2 | |
| aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
| aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
| - name: ECR에 로그인 | |
| id: login-ecr | |
| uses: aws-actions/amazon-ecr-login@v2 | |
| - name: Docker 이미지 생성 및 Push | |
| run: | | |
| docker build -t remu-server . | |
| docker tag remu-server ${{ steps.login-ecr.outputs.registry }}/remu-server:latest | |
| docker push ${{ steps.login-ecr.outputs.registry }}/remu-server:latest | |
| - name: SSH로 EC2에 접속 및 배포 실행 | |
| uses: appleboy/ssh-action@v1.0.3 | |
| with: | |
| host: ${{ secrets.EC2_HOST }} | |
| username: ${{ secrets.EC2_USERNAME }} | |
| key: ${{ secrets.EC2_PRIVATE_KEY }} | |
| script_stop: true | |
| # SSH 환경으로 GitHub Secrets에 변수 전달 | |
| envs: ECR_REGISTRY,DB_URL,DB_USER,DB_PW,GEMINI_API_KEY,GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRET,KAKAO_CLIENT_ID,KAKAO_CLIENT_SECRET,JWT_SECRET,BASE_URL,GOOGLE_API_KEY,S3_BUCKET_NAME | |
| script: | | |
| # EC2 내 도커가 ECR에서 이미지를 당겨올 수 있도록 로그인 | |
| aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin $ECR_REGISTRY | |
| # 기존 컨테이너 정리 | |
| docker stop remu-server || true | |
| docker rm remu-server || true | |
| # 새 이미지 pull | |
| docker pull $ECR_REGISTRY/remu-server:latest | |
| # [핵심] RDS 및 환경변수 주입하며 실행 | |
| docker run -d --name remu-server -p 8080:8080 \ | |
| -e DB_URL=$DB_URL \ | |
| -e DB_USER=$DB_USER \ | |
| -e DB_PW=$DB_PW \ | |
| -e GEMINI_API_KEY=$GEMINI_API_KEY \ | |
| -e GOOGLE_CLIENT_ID=$GOOGLE_CLIENT_ID \ | |
| -e GOOGLE_CLIENT_SECRET=$GOOGLE_CLIENT_SECRET \ | |
| -e KAKAO_CLIENT_ID=$KAKAO_CLIENT_ID \ | |
| -e KAKAO_CLIENT_SECRET=$KAKAO_CLIENT_SECRET \ | |
| -e JWT_SECRET=$JWT_SECRET \ | |
| -e BASE_URL=$BASE_URL \ | |
| -e GOOGLE_API_KEY=$GOOGLE_API_KEY \ | |
| -e S3_BUCKET_NAME=$S3_BUCKET_NAME \ | |
| $ECR_REGISTRY/remu-server:latest | |
| env: | |
| ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} | |
| DB_URL: ${{ secrets.DB_URL }} | |
| DB_USER: ${{ secrets.DB_USER }} | |
| DB_PW: ${{ secrets.DB_PW }} | |
| GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }} | |
| GOOGLE_CLIENT_ID: ${{ secrets.GOOGLE_CLIENT_ID }} | |
| GOOGLE_CLIENT_SECRET: ${{ secrets.GOOGLE_CLIENT_SECRET }} | |
| KAKAO_CLIENT_ID: ${{ secrets.KAKAO_CLIENT_ID }} | |
| KAKAO_CLIENT_SECRET: ${{ secrets.KAKAO_CLIENT_SECRET }} | |
| JWT_SECRET: ${{ secrets.JWT_SECRET }} | |
| BASE_URL: ${{ secrets.BASE_URL }} | |
| GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }} | |
| S3_BUCKET_NAME: ${{ secrets.S3_BUCKET_NAME }} |