- vite-plugin-prerender yerine Playwright tabanlı post-build pre-render scripti (apps/web/scripts/prerender.mjs): 10 public route statik HTML'e dönüştürülüyor - usePageMeta hook: her public route'da özgün title/description/canonical/OG tags - index.html: favicon.svg, canonical, OG/Twitter Card, geliştirilmiş title+desc - apps/web/public/: robots.txt, sitemap.xml (10 URL), favicon.svg - nginx HSTS header eklendi (Strict-Transport-Security) - Blog post sayfaları: blog_/$slug.tsx (4 tam yazı, 600-800 kelime) - blog.tsx: post kartlarına Link eklendi - Homepage: Schema.org JSON-LD (Organization + SoftwareApplication) - Footer: placeholder href="#" sosyal linkler kaldırıldı - deploy.sh + deploy.yml: playwright install chromium + prerender adımı Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
59 lines
1.8 KiB
YAML
59 lines
1.8 KiB
YAML
name: Deploy
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
|
|
concurrency:
|
|
group: deploy-production
|
|
cancel-in-progress: false
|
|
|
|
jobs:
|
|
deploy:
|
|
name: Deploy to Production
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
|
|
steps:
|
|
- name: Deploy via SSH
|
|
uses: appleboy/ssh-action@v1
|
|
with:
|
|
host: ${{ secrets.SSH_HOST }}
|
|
username: ${{ secrets.SSH_USER }}
|
|
key: ${{ secrets.SSH_KEY }}
|
|
port: ${{ secrets.SSH_PORT }}
|
|
script_stop: true
|
|
script: |
|
|
set -euo pipefail
|
|
|
|
export NVM_DIR="$HOME/.nvm"
|
|
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
|
|
|
|
cd /home/${{ secrets.SSH_USER }}/ss
|
|
|
|
echo "$(date '+%Y-%m-%d %H:%M:%S') - Starting deployment..."
|
|
|
|
echo "$(date '+%Y-%m-%d %H:%M:%S') - Pulling latest changes..."
|
|
git pull origin main
|
|
|
|
echo "$(date '+%Y-%m-%d %H:%M:%S') - Installing dependencies..."
|
|
pnpm install --frozen-lockfile
|
|
|
|
echo "$(date '+%Y-%m-%d %H:%M:%S') - Building..."
|
|
pnpm build
|
|
|
|
echo "$(date '+%Y-%m-%d %H:%M:%S') - Installing Playwright Chromium (if missing)..."
|
|
cd apps/web && npx playwright install chromium --with-deps 2>/dev/null || true
|
|
|
|
echo "$(date '+%Y-%m-%d %H:%M:%S') - Pre-rendering public pages..."
|
|
pnpm prerender || echo "WARNING: Pre-render failed (non-fatal)"
|
|
cd /home/${{ secrets.SSH_USER }}/ss
|
|
|
|
echo "$(date '+%Y-%m-%d %H:%M:%S') - Running database migrations..."
|
|
cd apps/api && pnpm db:push && cd ../..
|
|
|
|
echo "$(date '+%Y-%m-%d %H:%M:%S') - Reloading PM2 processes..."
|
|
pm2 reload ecosystem.config.js
|
|
|
|
echo "$(date '+%Y-%m-%d %H:%M:%S') - Deployment complete!"
|