Skip to content

fix: Replace heredoc with echo commands to resolve YAML syntax error #10

fix: Replace heredoc with echo commands to resolve YAML syntax error

fix: Replace heredoc with echo commands to resolve YAML syntax error #10

Workflow file for this run

name: Deploy to Vultr
on:
push:
branches: [ main ]
workflow_dispatch: # Allows manual triggering
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to Vultr Container Registry
uses: docker/login-action@v3
with:
registry: lhr.vultrcr.com
username: ${{ secrets.VULTR_REGISTRY_USERNAME }}
password: ${{ secrets.VULTR_REGISTRY_PASSWORD }}
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
platforms: linux/amd64
push: true
tags: lhr.vultrcr.com/lecommit1/lecommit:latest
cache-from: type=gha
cache-to: type=gha,mode=max
build-args: |
OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}
GROQ_API_KEY=${{ secrets.GROQ_API_KEY }}
GITHUB_TOKEN=${{ secrets.GH_TOKEN_SECRET }}
ELEVENLABS_API_KEY=${{ secrets.ELEVENLABS_API_KEY }}
ELEVENLABS_AGENT_ID=${{ secrets.ELEVENLABS_AGENT_ID }}
ELEVENLABS_AGENT_PHONE_ID=${{ secrets.ELEVENLABS_AGENT_PHONE_ID }}
TWILIO_ACCOUNT_SID=${{ secrets.TWILIO_ACCOUNT_SID }}
TWILIO_AUTH_TOKEN=${{ secrets.TWILIO_AUTH_TOKEN }}
TWILIO_PHONE_NUMBER=${{ secrets.TWILIO_PHONE_NUMBER }}
NEXT_PUBLIC_SUPABASE_URL=${{ secrets.NEXT_PUBLIC_SUPABASE_URL }}
NEXT_PUBLIC_SUPABASE_ANON_KEY=${{ secrets.NEXT_PUBLIC_SUPABASE_ANON_KEY }}
SUPABASE_SERVICE_ROLE_KEY=${{ secrets.SUPABASE_SERVICE_ROLE_KEY }}
- name: Deploy to VPS
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.VPS_HOST }}
username: root
key: ${{ secrets.VPS_SSH_KEY }}
script: |
set -e
echo "🔽 Pulling latest image..."
docker pull lhr.vultrcr.com/lecommit1/lecommit:latest
echo "🛑 Stopping old container..."
docker stop lecommit-app || true
docker rm lecommit-app || true
echo "📝 Creating production environment file..."
mkdir -p /opt/lecommit
echo "NEXT_PUBLIC_SUPABASE_URL=${{ secrets.NEXT_PUBLIC_SUPABASE_URL }}" > /opt/lecommit/.env.prod
echo "NEXT_PUBLIC_SUPABASE_ANON_KEY=${{ secrets.NEXT_PUBLIC_SUPABASE_ANON_KEY }}" >> /opt/lecommit/.env.prod
echo "SUPABASE_SERVICE_ROLE_KEY=${{ secrets.SUPABASE_SERVICE_ROLE_KEY }}" >> /opt/lecommit/.env.prod
echo "OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}" >> /opt/lecommit/.env.prod
echo "GROQ_API_KEY=${{ secrets.GROQ_API_KEY }}" >> /opt/lecommit/.env.prod
echo "GITHUB_TOKEN=${{ secrets.GH_TOKEN_SECRET }}" >> /opt/lecommit/.env.prod
echo "ELEVENLABS_API_KEY=${{ secrets.ELEVENLABS_API_KEY }}" >> /opt/lecommit/.env.prod
echo "ELEVENLABS_AGENT_ID=${{ secrets.ELEVENLABS_AGENT_ID }}" >> /opt/lecommit/.env.prod
echo "ELEVENLABS_AGENT_PHONE_ID=${{ secrets.ELEVENLABS_AGENT_PHONE_ID }}" >> /opt/lecommit/.env.prod
echo "TWILIO_ACCOUNT_SID=${{ secrets.TWILIO_ACCOUNT_SID }}" >> /opt/lecommit/.env.prod
echo "TWILIO_AUTH_TOKEN=${{ secrets.TWILIO_AUTH_TOKEN }}" >> /opt/lecommit/.env.prod
echo "TWILIO_PHONE_NUMBER=${{ secrets.TWILIO_PHONE_NUMBER }}" >> /opt/lecommit/.env.prod
echo "NEXT_PUBLIC_APP_URL=http://199.247.14.12" >> /opt/lecommit/.env.prod
echo "NEXT_PUBLIC_APP_ENV=${{ secrets.NEXT_PUBLIC_APP_ENV }}" >> /opt/lecommit/.env.prod
echo "🚀 Starting new container..."
docker run -d \
--name lecommit-app \
--restart unless-stopped \
-p 80:3000 \
--env-file /opt/lecommit/.env.prod \
lhr.vultrcr.com/lecommit1/lecommit:latest
echo "🧹 Cleaning up old images..."
docker image prune -f
echo "✅ Deployment complete! Checking status..."
docker ps | grep lecommit-app
- name: Check deployment status
run: |
echo "🔍 Checking app status..."
sleep 10 # Give the app time to start
if curl -s -o /dev/null -w "%{http_code}" http://199.247.14.12 | grep -q "200"; then
echo "✅ App is responding correctly!"
else
echo "⚠️ Warning: App might not be responding correctly."
exit 1
fi