Skip to content

Merge pull request #22 from ishan9678/master #10

Merge pull request #22 from ishan9678/master

Merge pull request #22 from ishan9678/master #10

Workflow file for this run

name: Deploy to Production
on:
push:
branches: [release]
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Create deployment archive
run: |
tar -czf deployment.tar.gz \
--exclude=".git" \
--exclude=".github" \
--exclude="deployment.tar.gz" \
. || true
- name: Prepare /tmp directory on server
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SERVER_IP }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
mkdir -p /tmp
chmod 777 /tmp
ls -lah /tmp # Debugging
- name: Transfer to production
uses: appleboy/scp-action@master
with:
host: ${{ secrets.SERVER_IP }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
source: "deployment.tar.gz"
target: "/tmp"
overwrite: true
- name: Deploy
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SERVER_IP }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
script: |
echo "🔹 Moving to deployment..."
mkdir -p /CodeCraft
rm -rf /CodeCraft/*
tar -xzf /tmp/deployment.tar.gz -C /CodeCraft
echo "✅ Extraction complete."
echo "🔹 Writing .env file..."
cat <<EOF > /CodeCraft/.env
DATABASE_URL=${{ secrets.DATABASE_URL }}
NEXT_PUBLIC_API_URL=${{ secrets.NEXT_PUBLIC_API_URL }}
POSTGRES_USER=${{ secrets.POSTGRES_USER }}
POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }}
POSTGRES_DB=${{ secrets.POSTGRES_DB }}
GROQ_API_KEY=${{ secrets.GROQ_API_KEY }}
COMPILER_API_ENDPOINT=${{ secrets.COMPILER_API_ENDPOINT }}
CORS_ORIGINS=${{ secrets.CORS_ORIGINS }}
EOF
echo "✅ .env file created."
echo "🔹 Setting up Docker Compose..."
export COMPOSE_PROJECT_NAME=codecraft
cd /CodeCraft
docker-compose up -d --build --force-recreate
echo "🔹 Verifying deployment..."
RUNNING_CONTAINERS=$(docker-compose ps --services --filter "status=running" | wc -l)
EXPECTED_CONTAINERS=$(docker-compose ps --services | wc -l)
if [ "$RUNNING_CONTAINERS" -eq "$EXPECTED_CONTAINERS" ]; then
echo "✅ Deployment successful! All containers are running."
exit 0
else
echo "❌ Deployment failed! Only $RUNNING_CONTAINERS out of $EXPECTED_CONTAINERS containers are running."
exit 1
fi