Merge pull request #35 from PU-Track/main #12
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: Build and Deploy Backend Server | |
| on: | |
| push: | |
| branches: | |
| - deploy | |
| jobs: | |
| build-and-deploy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout source code | |
| uses: actions/checkout@v3 | |
| - name: Log in to DockerHub | |
| run: echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login -u "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin | |
| - name: Build Docker image | |
| run: docker build -t 13155a1/putrack-server:latest . | |
| - name: Push Docker image to DockerHub | |
| run: docker push 13155a1/putrack-server:latest | |
| - name: Set up SSH access to EC2 | |
| uses: webfactory/ssh-agent@v0.7.0 | |
| with: | |
| ssh-private-key: ${{ secrets.EC2_PRIVATE_KEY }} | |
| - name: Decode and copy Firebase and FCM credentials to EC2 | |
| run: | | |
| echo "${{ secrets.FIREBASE_CREDENTIALS_BASE64 }}" | base64 -d > firebase-key.json | |
| echo "${{ secrets.FCM_CREDENTIALS_BASE64 }}" | base64 -d > fcm-key.json | |
| ssh -o StrictHostKeyChecking=no ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} "mkdir -p /home/ubuntu/secrets" | |
| scp -o StrictHostKeyChecking=no firebase-key.json ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }}:/home/ubuntu/secrets/firebase-key.json | |
| scp -o StrictHostKeyChecking=no fcm-key.json ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }}:/home/ubuntu/secrets/fcm-key.json | |
| - name: Connect to EC2 and run new image | |
| run: | | |
| ssh -o StrictHostKeyChecking=no ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} << EOF | |
| echo "🛑 Stopping existing container..." | |
| sudo docker stop putrack-container || true | |
| sudo docker rm putrack-container || true | |
| echo "🐳 Pulling latest image..." | |
| sudo docker pull 13155a1/putrack-server:latest | |
| echo "🚀 Running new container..." | |
| sudo docker run -d \ | |
| --name putrack-container \ | |
| -p 8080:8080 \ | |
| -e FIREBASE_CREDENTIALS_PATH=/app/credentials/firebase-key.json \ | |
| -e FCM_CREDENTIALS_PATH=/app/credentials/fcm-key.json \ | |
| -e FIREBASE_DB_URL=${{ secrets.FIREBASE_DB_URL }} \ | |
| -e RDS_ENDPOINT=${{ secrets.RDS_ENDPOINT }} \ | |
| -e RDS_DB_NAME=${{ secrets.RDS_DB_NAME }} \ | |
| -e RDS_USERNAME=${{ secrets.RDS_USERNAME }} \ | |
| -e RDS_PASSWORD=${{ secrets.RDS_PASSWORD }} \ | |
| -v /home/ubuntu/secrets/firebase-key.json:/app/credentials/firebase-key.json \ | |
| -v /home/ubuntu/secrets/fcm-key.json:/app/credentials/fcm-key.json \ | |
| 13155a1/putrack-server:latest | |
| echo "✅ Deployment completed!" | |
| EOF |