All checks were successful
Deploy / deploy (push) Successful in 8m39s
Replaced `NEXT_PUBLIC_APP_URL` with `APP_URL` in the payment processing logic to ensure proper runtime access. Updated related documentation to clarify the distinction between build-time and runtime environment variables, emphasizing the importance of using `APP_URL` for callback and webhook URLs. Adjusted references in the codebase to reflect this change, enhancing clarity and functionality in the payment flow.
83 lines
3.6 KiB
YAML
83 lines
3.6 KiB
YAML
name: Deploy
|
||
|
||
on:
|
||
push:
|
||
branches: [main]
|
||
|
||
jobs:
|
||
deploy:
|
||
runs-on: ubuntu-latest
|
||
container:
|
||
image: catthehacker/ubuntu:act-latest
|
||
steps:
|
||
- name: Kaynak kodu çek
|
||
uses: actions/checkout@v4
|
||
|
||
- name: .env.production oluştur
|
||
run: |
|
||
cat > .env.production <<'EOF'
|
||
BETTER_AUTH_SECRET=${{ secrets.BETTER_AUTH_SECRET }}
|
||
BETTER_AUTH_URL=${{ secrets.BETTER_AUTH_URL }}
|
||
# Ödeme callback/yönlendirme kökü. Public önekli DEĞİL: build'e değil
|
||
# runtime'a geçmesi gerekiyor (bkz. src/lib/app-url.ts). Secret adı
|
||
# geçmişten NEXT_PUBLIC_APP_URL, değeri aynı https kök adres.
|
||
APP_URL=${{ secrets.NEXT_PUBLIC_APP_URL }}
|
||
GOOGLE_CLIENT_ID=${{ secrets.GOOGLE_CLIENT_ID }}
|
||
GOOGLE_CLIENT_SECRET=${{ secrets.GOOGLE_CLIENT_SECRET }}
|
||
RESEND_API_KEY=${{ secrets.RESEND_API_KEY }}
|
||
EMAIL_FROM=${{ secrets.EMAIL_FROM }}
|
||
IYZICO_API_KEY=${{ secrets.IYZICO_API_KEY }}
|
||
IYZICO_SECRET_KEY=${{ secrets.IYZICO_SECRET_KEY }}
|
||
IYZICO_BASE_URL=${{ secrets.IYZICO_BASE_URL }}
|
||
OPENROUTER_API_KEY=${{ secrets.OPENROUTER_API_KEY }}
|
||
OPENROUTER_MODEL=${{ secrets.OPENROUTER_MODEL }}
|
||
EOF
|
||
|
||
# BuildKit'te "docker build --memory" YOK SAYILIR (moby/buildkit#1362);
|
||
# gerçek sınır ancak buildkitd'yi kendi cgroup'u olan bir container'da
|
||
# (buildx docker-container driver) koşturarak konur. Böylece build OOM
|
||
# olursa yalnızca builder container'ı ölür — uygulama + Gitea ayakta kalır
|
||
# ve adım 35-90 dk sessiz kilitlenme yerine hızlı, görünür hata verir.
|
||
#
|
||
# Sınırlar container İLK oluşturulduğunda donar; değerleri değiştirmek için
|
||
# önce: docker buildx rm sinirli && docker rm -f buildx_buildkit_sinirli0
|
||
- name: Sınırlı builder hazırla
|
||
run: |
|
||
cat > buildkitd.toml <<'EOF'
|
||
[worker.oci]
|
||
enabled = true
|
||
max-parallelism = 1
|
||
EOF
|
||
# Act container'ı her koşuda sıfırdan geldiği için client kaydı hep
|
||
# yeniden oluşturulur; host'taki buildx_buildkit_sinirli0 container'ı
|
||
# (ve build cache'i) varsa bootstrap'ta aynen yeniden kullanılır.
|
||
docker buildx create --name sinirli \
|
||
--driver docker-container \
|
||
--driver-opt memory=2200m \
|
||
--driver-opt memory-swap=4200m \
|
||
--driver-opt cpu-quota=150000 \
|
||
--buildkitd-config ./buildkitd.toml \
|
||
2>/dev/null || true
|
||
docker buildx inspect sinirli --bootstrap >/dev/null
|
||
|
||
- name: Build (sınırlı builder)
|
||
run: |
|
||
docker compose -p kolaytercih build --builder sinirli
|
||
# docker-container driver'da imajın daemon'a --load ile düştüğünü doğrula;
|
||
# düşmediyse aynı cache'ten yeniden build edip elle yükle.
|
||
docker image inspect kolaytercih-app >/dev/null 2>&1 || \
|
||
docker buildx build --builder sinirli --load -t kolaytercih-app .
|
||
|
||
- name: Deploy
|
||
run: docker compose -p kolaytercih up -d --no-build --remove-orphans
|
||
|
||
- name: Temizlik (başarısız build'de de çalışır)
|
||
if: always()
|
||
run: |
|
||
docker image prune -f || true
|
||
# sinirli builder'ın cache'ini 4 GB'ta tut (flag adı buildx sürümüne göre değişti)
|
||
docker buildx prune --builder sinirli -f --max-used-space 4gb 2>/dev/null || \
|
||
docker buildx prune --builder sinirli -f --keep-storage 4gb || true
|
||
# eski varsayılan-builder cache artıkları
|
||
docker builder prune -f --filter "until=72h" || true
|