fix: improve game cleanup process and enhance username validation in … #9
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 Backend to DigitalOcean | |
| on: | |
| push: | |
| branches: | |
| - main | |
| paths: | |
| - "backend/**" | |
| jobs: | |
| build-and-deploy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| # Step 1: Checkout code | |
| - name: Checkout code | |
| uses: actions/checkout@v3 | |
| # Step 2: Set up Docker Buildx | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| # Step 3: Log in to Docker Hub | |
| - name: Log in to Docker Hub | |
| uses: docker/login-action@v2 | |
| with: | |
| username: ani1609 | |
| password: ${{ secrets.DOCKERHUB_PASSWORD }} | |
| # Step 4: Build Docker image from backend folder | |
| - name: Build Docker image | |
| run: | | |
| docker build -t ani1609/four-in-a-row-backend:latest ./backend | |
| # Step 5: Push Docker image to Docker Hub | |
| - name: Push Docker image | |
| run: docker push ani1609/four-in-a-row-backend:latest | |
| # Step 6: Deploy on DigitalOcean droplet | |
| - name: Deploy to DigitalOcean | |
| uses: appleboy/ssh-action@v0.1.7 | |
| with: | |
| host: ${{ secrets.DROPLET_HOST }} | |
| username: ${{ secrets.DROPLET_USER }} | |
| key: ${{ secrets.SSH_PRIVATE_KEY }} | |
| script: | | |
| echo "Pulling latest Docker image..." | |
| docker pull ani1609/four-in-a-row-backend:latest | |
| echo "Stopping old container named 'four-in-a-row-backend'..." | |
| docker stop four-in-a-row-backend || true | |
| docker rm four-in-a-row-backend || true | |
| echo "Stopping/removing any container using port 8080..." | |
| docker ps -q --filter "publish=8080" | xargs -r docker stop | |
| docker ps -a -q --filter "publish=8080" | xargs -r docker rm | |
| echo "Running new container with environment variables..." | |
| docker run -d -p 8080:8080 \ | |
| -e RESOURCE_ENVIRONMENT=cloud \ | |
| -e DATABASE_URL_CLOUD="${{ secrets.DATABASE_URL_CLOUD }}" \ | |
| -e EVENT_STREAM=redis \ | |
| -e REDIS_URL_CLOUD="${{ secrets.REDIS_URL_CLOUD }}" \ | |
| -e REDIS_STREAM=game-events \ | |
| -e PORT=8080 \ | |
| --name four-in-a-row-backend \ | |
| ani1609/four-in-a-row-backend:latest |