Branch dan workflow
| Branch | Workflow | Runner | Target |
|---|---|---|---|
v3 | deploy_production.yml | self-hosted production | Produksi |
staging | deploy_staging.yml | self-hosted staging | Staging |
toko_digital | deploy_toko_digital.yml | self-hosted toko_digital | Toko Digital |
Branch produksi adalah v3, bukan main. main ada di repo tapi tidak digunakan untuk deploy.
Untuk detail pipeline tiap workflow (trigger, runner, langkah deploy, dan apa yang tidak ada), lihat CI/CD.
Ada 25+ branch aktif
Banyak bernama personal (adi, ardi_temp, quickstart-bimbo). Konfirmasi ke user branch mana yang jadi target sebelum operasi git.
Apa yang dilakukan workflow
Untuk detail pipeline GitHub Actions (trigger, runner, langkah, dan apa yang tidak ada), lihat CI/CD. Setiap deploy otomatis menjalankan langkah berikut di self-hosted runner:
# Clear cache
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan optimize:clear
php artisan config:cache
php artisan view:cache
# Pull code (DESTRUCTIVE — perubahan lokal di server hilang)
git fetch --all
git reset --hard origin/v3
# Install dependencies (tanpa dev)
composer install --no-dev --optimize-autoloader --ignore-platform-req=ext-mongodb
npm ci
# Build frontend
npm run build
# Fix permissions
sudo /usr/local/bin/chmod-dazo.shAturan operasi git
- Jangan commit, push, atau merge tanpa diminta eksplisit
- Pisahkan commit pembenahan dari commit fitur
- Jangan gabungkan refactor dengan perubahan fungsional
- Sebelum push ke
v3, pastikannpm run builddanphp artisan testlolos lokal
Setup server — yang tidak terlihat dari repo
Dua blocker yang membuat project gagal jalan di server baru:
resources/js/global.js— gitignored. Harus dibuat manual di server, denganenv = 'production'. Lihat Environment..env— wajibDB_CONNECTION=mongodbdan seluruh kredensial service..env.exampletertinggal 87 variabel.
Scheduler dan cron
app/Console/Kernel.php mendaftarkan 3 schedule:
$schedule->command('app:downgrade')->everyMinute();
$schedule->command('app:addon-expired')->everyMinute();
$schedule->command('notif:subscription')->daily();Dua command pertama berjalan setiap menit — pastikan keduanya idempoten dan cepat.
Server butuh cron entry:
* * * * * cd /path/to/dazoapp && php artisan schedule:run >> /dev/null 2>&1Queue — perlu perhatian
.env saat ini QUEUE_CONNECTION=sync. Artinya:
PaymentTimerjob berjalan blocking dalam request- 6 Mailable
ShouldQueue(OTP, notifikasi) juga blocking
Jika ada service worker eksternal yang seharusnya memproses job, konfigurasi ini perlu diperiksa. Worker mungkin punya sumber pekerjaan sendiri (misalnya polling MongoDB) — konfirmasi ke tim.
Perintah artisan custom yang relevan untuk deploy
| Command | Fungsi |
|---|---|
app:downgrade | Turunkan paket langganan kedaluwarsa |
app:addon-expired | Nonaktifkan add-on kedaluwarsa |
wallet:sync-orders {--store_id=} | Sinkronkan pembayaran order ke saldo wallet |
order:send-digital-link {order_id} | Kirim manual link produk digital |
Setelah deploy
Verifikasi cepat:
- Buka
app.dazo.id— pastikan halaman login muncul - Cek
storage/logs/laravel.log— cari error 500 atau exception - Test satu endpoint API (mis.
GET /api/testjwtdengan token) - Cek scheduler:
php artisan schedule:list - Pastikan tidak ada
console.log/dd()yang lolos — cari di diff
Checklist sebelum push ke v3
-
npm run buildlolos lokal -
php artisan testlolos (walau minim, tetap jalankan) - Tidak ada
console.log/dd()di diff - Tidak ada file debug/backup/mockup di root
- Tidak ada perubahan di
config/jwt.php,JWT_SECRET, atau payload token tanpa koordinasi lintas repo - Tidak ada perubahan URL service tanpa koordinasi lintas repo
- Commit message jelas, terpisah antara fitur dan pembenahan