Konfigurasi Yang Saya Gunakan di Laravel Deployer

Saya mengenal Laravel Deployer sekitar 3 bulan lalu saat ingin menjalankan CI/CD sebuah project yang menggunakan Laravel di Gitlab. Awalnya saya menggunakan konfigurasi CI/CD Gitlab + Laravel Envoy, hanya saja saya tidak puas dengan hasilnya. Alhasil bertemulah dengan perkakas ini dan saya jatuh hati pada perkakas ini serta merekomendasikan kepada Anda jika ingin menggunakannya.

image

Laravel Deployer. Sumber gambar: https://github.com/lorisleiva/laravel-deployer

Sejauh ini yang saya suka dari Laravel Deployer adalah strategi upload yang mana setiap push akan menghasilkan release versi dengan format timestamp yang disimpan dalam satu direktori dan kemudian akan dilakukan symlink dengan root aplikasi kita.

image

Strategi upload di Laravel Deployer. Sumber gambar: https://github.com/lorisleiva/laravel-deployer/blob/master/docs/strategy-upload.md

Hanya saja yang kurang dari Laravel Deployer adalah file .env tidak langsung dibuat dari sana. Alhasil, kita harus login ke VPS dan harus membuat .env dan menjalankan generate key agar aplikasi Laravel bisa berjalan di atas browser. Alhasil strategi yang saya lakukan adalah sebagai berikut.

  1. Membuat file .env di dalam server
  2. Menyisipkan task copy env production di atas deploy:vendors untuk menduplikat file .env di langkah pertama ke direktori aplikasi
  3. Menyisipkan task artisan:generate untuk menghasilkan nilai APP_KEY di dalam hooks:ready.

Kode nya seperti di bawah ini.

Konfigurasi deploy.php di config/deploy.php

Konfigurasi my_recipe.php di recipe/my_recipe.php

Konfigurasi production_recipe.php di recipe/production_recipe.php

Konfigurasi staging_recipe.php di recipe/staging_recipe.php

Setelah melakukan konfigurasi, Anda cukup jalankan perintah _php artisan deploy -s nama_strategi_yangdipakai __ jika tidak menggunakan CI/CD atau _php artisan deploy nama_website -s nama_strategi_yangdipakai jika menggunakan CI/CD.

Kendala-kendala lain yang dialami jika saya tidak menggunakan CI/CD adalah menggunakan opsi repository SSH atau HTTPS di file config/deploy.php dan Anda bisa lihat detail nya di issue ini.

Sekian dan semoga bermanfaat.

Referensi

  1. Zero-down time Laravel deployment in 5 minutes
  2. Laravel deployment using Gitlab’s pipelines