main
Some checks failed
Build and Deploy Backend / build-and-push (push) Failing after 3m5s
Build and Deploy Backend / deploy (push) Has been skipped

This commit is contained in:
2026-01-28 02:31:36 +03:00
commit bbec8f09bb
123 changed files with 23865 additions and 0 deletions

47
mds/deploy.md Normal file
View File

@@ -0,0 +1,47 @@
# 🚀 SkriptAI Otomatik Deploy (CI/CD) Rehberi
Bu rehber, projenin **Gitea Actions** kullanılarak otomatik olarak build edilip Raspberry Pi sunucusuna deploy edilmesini sağlar.
## 1. Gitea Runner Kurulumu (Sunucuda)
CI/CD işleminin çalışması için sunucunda (Raspberry Pi) bir Gitea Runner çalışıyor olmalı.
```bash
# act_runner'ı indir (Mimarine uygun olanı seç, örn: linux-arm64)
wget https://dl.gitea.com/act_runner/0.2.6/act_runner-0.2.6-linux-arm64 -O act_runner
chmod +x act_runner
# Register et (Gitea Admin Panel -> Actions -> Runners -> Create Runner token'ı ile)
./act_runner register
# Servis olarak çalıştır (Daemon)
./act_runner daemon
```
## 2. Gitea Secrets Ayarları
Gitea reponuzda **Settings -> Actions -> Secrets** menüsüne giderek aşağıdaki değişkenleri ekleyin:
| Secret Adı | Değer Örneği | Açıklama |
|---|---|---|
| `DOCKER_USERNAME` | `fahricansecer` | Docker Hub veya Registry kullanıcı adı |
| `DOCKER_PASSWORD` | `******` | Docker Hub Access Token veya şifre |
| `HOST` | `192.168.1.100` | Raspberry Pi IP Adresi (Gitea ile aynı sunucu olsa bile IP yazın) |
| `USERNAME` | `pi` | Sunucu SSH kullanıcı adı |
| `KEY` | `-----BEGIN OPENSSH PRIVATE KEY...` | SSH Private Key (Sunucuya şifresiz erişim için) |
| `PORT` | `22` | SSH Portu |
| `DATABASE_URL` | `postgresql://...` | Production DB bağlantı linki |
| `REDIS_HOST` | `skript-redis` | Redis host adı |
| `JWT_SECRET` | `cok_gizli_anahtar` | JWT imzalama anahtarı |
| `GEMINI_API_KEY` | `AIza...` | Google Gemini API anahtarı |
## 3. Workflow Dosyası
Proje kök dizininde `.gitea/workflows/deploy.yaml` dosyası oluşturulmuştur. Bu dosya her `main` branch'ine push yapıldığında çalışır:
1. **Build**: Docker imajını oluşturur (`node:20-alpine` tabanlı).
2. **Push**: İmajı Docker Hub'a (veya ayarlı registry'e) yollar.
3. **Deploy**: SSH ile sunucuya bağlanır, eski konteyneri durdurur ve yeni imajı çeker.
## 4. Manuel Tetikleme
Eğer `deploy.md` dosyasındaki veritabanı kurulumlarını henüz yapmadıysanız, önce **Altyapı Kurulumu** başlığındaki (bir önceki versiyonda yazan) `docker run` komutlarıyla `postgres` ve `redis` konteynerlerini bir kereye mahsus sunucuda ayağa kaldırın. Bu CI/CD sadece `skript-be` uygulamasını günceller.