fix: Replace heredoc with echo commands to resolve YAML syntax error #10
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 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 |