Merge pull request #22 from ishan9678/master #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 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 | |