eSchool Dev Docs

Deployment

Alur CI/CD GitLab dan langkah rilis ke development, staging, dan production

Alur pipeline

Deploy memakai GitLab CI (.gitlab-ci.yml). Cabang menentukan target server.

Superadmin (ESCHOOL_INDUK)

BranchEnvironmentCara deployDomain
developDevelopmentOtomatisdev-superadmin.eschool.ac.id
stagingStagingManualtest-superadmin.eschool.ac.id
mainProductionManualsuperadmin.eschool.ac.id

Runner memakai tag laravel dengan PHP 8.3.

API-Sekolah

BranchEnvironmentCara deployDomain
developmentDevelopmentOtomatisdevapisekolah.eschool.ac.id
stagingStagingManualtestapisekolah.eschool.ac.id
mainProductionManualapisekolah.eschool.ac.id

Urutan job deploy production

Memuat diagram...

Alur antar branch:

Memuat diagram...

Aturan .env

  • File .env tidak ikut ter-rsync dan tidak di-track git.
  • Setiap server (dev, staging, production) punya .env sendiri dan dibuat manual.
  • Setiap server punya database central sendiri.
  • Jangan tinggalkan file seperti .env.production di folder deploy.

Insiden nyata: .env.production yang tertinggal membuat config:cache di production memuat nilai milik devinduk, sehingga production redirect ke devinduk/login. Pastikan hanya .env yang ada di folder deploy.

Perbaikan jika itu terjadi:

php artisan optimize:clear
php artisan config:cache
php artisan route:cache
php artisan view:cache

Struktur folder di server

/www/wwwroot/<domain>/
├── Eschool-Superadmin/   # kode aplikasi (hasil deploy)
└── storage/              # storage permanen, di-symlink ke aplikasi

Health check

API-Sekolah menyediakan endpoint:

GET /api/health/db

Koneksi mysql_test hanya dicek di luar staging dan production. Jika has_errors muncul karena mysql_test di staging atau production, itu wajar.

Checklist sebelum deploy

  • Test lulus
  • Migration dicek (tidak merusak data)
  • .env di server sudah benar
  • Backup database sudah dibuat

Cron dan queue

* * * * * cd /www/wwwroot/<domain>/Eschool-Superadmin && php artisan schedule:run >> /dev/null 2>&1

Untuk API-Sekolah, cache dan queue memakai Redis (CACHE_DRIVER=redis, QUEUE_CONNECTION=redis) sedangkan SESSION_DRIVER=file. Setelah deploy, restart worker:

php artisan queue:restart

Rollback

git checkout <commit-sebelumnya>
php artisan migrate:rollback --step=1
php artisan config:cache

Rollback migration bisa menghapus data. Backup dulu sebelum menjalankannya.

On this page