Skip to content

fix: improve game cleanup process and enhance username validation in … #9

fix: improve game cleanup process and enhance username validation in …

fix: improve game cleanup process and enhance username validation in … #9

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