Cara Deploy Laravel dengan GitHub Actions Sederhana
Deploy Laravel dengan GitHub Actions memungkinkan setiap push ke branch utama menjalankan proses deploy otomatis ke VPS. Jawaban cepatnya: siapkan SSH key deploy, simpan secret di GitHub, buat workflow yang login ke server, pull kode terbaru, install dependency, migrate, build asset, cache config, dan restart queue worker.
Untuk pemula, GitHub Actions bukan pengganti memahami deploy manual. Sebaiknya kamu bisa deploy Laravel ke VPS secara manual dulu, baru mengotomatisasi langkah yang sudah terbukti benar.
Kapan Perlu GitHub Actions?
GitHub Actions cocok jika:
- project sudah disimpan di GitHub
- deploy manual mulai sering dilakukan
- kamu ingin mengurangi lupa langkah deploy
- ada beberapa orang yang mengerjakan project
- kamu ingin menjalankan lint/test sebelum deploy
- server sudah stabil dengan Nginx, PHP-FPM, database, dan
.envproduction
Jika project masih latihan lokal, GitHub Actions belum wajib. Fokus dulu memahami Cara Deploy Laravel ke VPS.
Alur Deploy Sederhana
Alur yang akan dibuat:
Workflow ini cocok untuk project kecil sampai menengah. Untuk aplikasi besar, biasanya ada proses build artifact, zero-downtime deploy, health check, dan rollback yang lebih matang.
Prasyarat di Server
Pastikan server sudah bisa deploy manual:
Pastikan juga:
- Nginx mengarah ke folder
public - file
.envproduction sudah ada di server - database production sudah benar
- permission
storagedanbootstrap/cachesudah aman - queue worker memakai Supervisor jika project memakai queue
Untuk permission server, baca Permission Folder Storage Laravel di Linux.
Buat SSH Key untuk Deploy
Di laptop atau mesin aman, buat SSH key khusus deploy:
Perintah ini menghasilkan:
Tambahkan public key ke server:
Atau salin isi github-actions-deploy.pub ke:
Test login:
Gunakan user deploy khusus jika memungkinkan. Hindari deploy sebagai root.
Simpan Secret di GitHub
Di repository GitHub, buka:
Buat secret:
Jangan menyimpan isi .env production di workflow jika tidak perlu. Untuk setup sederhana, .env tetap berada di server dan tidak masuk Git.
Contoh Workflow GitHub Actions
Buat file:
Isi contoh:
Workflow ini menjalankan perintah di server. Artinya server tetap membutuhkan Git, Composer, Node.js, PHP, dan akses repository.
Tambahkan Lint atau Test Sebelum Deploy
Jika project punya test, jalankan sebelum step deploy:
Untuk project yang memakai frontend:
Jika test gagal, deploy tidak dilanjutkan. Ini lebih aman daripada server menerima kode yang belum lolos pengecekan dasar.
Checklist Setelah Deploy Otomatis
Setelah workflow berhasil, cek:
Buka halaman penting:
- homepage
- login
- form utama
- halaman upload file
- halaman yang membaca database
- API endpoint jika ada
Jika project memakai scheduler, pastikan cron tetap berjalan. GitHub Actions tidak menggantikan Scheduler Laravel di Production.
Kesalahan yang Sering Terjadi
Private Key Salah Format
Secret VPS_SSH_KEY harus berisi private key lengkap, termasuk baris pembuka dan penutup. Jangan isi dengan public key.
Deploy Berjalan sebagai root
Deploy sebagai root bisa membuat file hasil deploy dimiliki root, lalu PHP-FPM gagal menulis cache atau log. Gunakan user deploy dan atur permission dengan benar.
Workflow Menghapus .env
Jangan menjalankan perintah yang menimpa .env production tanpa sengaja. File .env sebaiknya tetap dikelola di server atau lewat secret management yang jelas.
npm run build Gagal di Server
Pastikan Node.js tersedia di server dan versi Node cocok dengan project. Jika build asset terlalu berat untuk server kecil, pertimbangkan build di GitHub Actions lalu kirim artifact.
Lupa queue:restart
Jika project memakai queue, worker lama bisa tetap menjalankan kode lama. Tambahkan:
Supervisor akan menjalankan worker lagi.
Pencegahan
- Pastikan deploy manual stabil sebelum membuat workflow.
- Gunakan SSH key khusus deploy, bukan key pribadi utama.
- Simpan secret hanya di GitHub Actions secrets.
- Jalankan test sebelum deploy jika tersedia.
- Gunakan
set -eagar workflow berhenti saat satu perintah gagal. - Dokumentasikan perintah deploy yang dijalankan otomatis.
- Cek permission setelah deploy pertama dari GitHub Actions.
Bacaan Terkait
- Cara Deploy Laravel ke VPS
- Laravel
.envProduction: Checklist Aman - Permission Folder Storage Laravel di Linux
- Setup Supervisor untuk Queue Laravel
- Cara Menjalankan Scheduler Laravel di Production
FAQ
Apakah GitHub Actions gratis untuk deploy Laravel?
GitHub menyediakan kuota Actions untuk banyak repository, tetapi batas dan kebijakan bisa berubah. Untuk project kecil, workflow deploy sederhana biasanya ringan.
Apakah .env production perlu disimpan di GitHub Secrets?
Tidak wajib. Untuk setup sederhana, .env tetap berada di server. Simpan di GitHub Secrets hanya jika kamu punya proses yang jelas untuk membuat file .env saat deploy.
Apakah workflow ini zero-downtime?
Belum. Workflow sederhana ini cukup untuk belajar dan project kecil, tetapi masih bisa ada jeda saat dependency, migration, atau build berjalan.
Kenapa deploy berhasil tetapi website error 500?
Cek storage/logs/laravel.log, permission folder, .env, hasil migration, dan apakah cache config sudah sesuai. Error deploy otomatis tetap harus dibaca dari log.
Bolehkah deploy otomatis langsung dari semua branch?
Sebaiknya tidak. Untuk pemula, batasi deploy ke branch main agar push eksperimen tidak langsung masuk production.