Github sudah merilis produk Github Actions dengan tujuan untuk memudahkan software developer melakukan Continuous Integration (CI) dan Continuous Delivery (CD). Sederhananya, kita bisa men-deploy program kita ke server tanpa harus menggunakan FTP. ๐
Cukup menggunakan perintah git push
ke Github maka proses deployment ke server akan diproses oleh Github mulai dari menginstal dan meng-compile aset seperti paket NPM, kemudian hasil dari compile aset tersebut tinggal dikirim ke server. Jadi, server kita tidak perlu menginstal NodeJS karena proses menginstal dan meng-compile aset. Lumayan menghemat beban kerjaan server kan? ๐
Tulisan kali ini, saya akan menjelaskan CI/CD project Laravel menggunakan Github Actions. Pastikan Anda sudah memiliki VPS. Pada tulisan ini saya menggunakan VPS dari Digital Ocean.
- Membuat user bernama deployer tanpa akses root dan tidak perlu diberikan password.
- Pindah ke akun deployer dengan perintah
su deployer
dan buatlah SSH key dengan mengikuti panduan dari Github tentang cara membuat SSH key. - Setelah berhasil membuat SSH key, selanjutnya lakukan duplikat konten public key SSH ke authorized keys.
|
|
- Duplikat isi private key dan kita akan taruh di project Github di menu Settings => Secrets dan beri nama
SSH_PRIVATE_KEY
.
|
|

- Untuk mencegah tidak ada MITM (Man in the middle) attack, kita harus mendapatkan SSH fingerprint VPS kita dengan perintah
ssh-keyscan
.
|
|
Setelah itu, salin hasil dari ssh-keyscan
ke project Github di menu Settings => Secrets dan beri nama SSH_KNOWN_HOSTS
seperti gambar di bawah.

- Di dalam server sebagai user
deployer
kita buat direktorienv/nama-laravel-project/
di direktori utama userdeployer
(home/deployer
). Direktor ini berfungsi untuk menyimpan file.env
production dan akan digunakan untuk proses deployment.
|
|
- Berikutnya, kita menuju ke direktori
env/nama-laravel-project
dan buat file.env
.
|
|
Di project Laravel yang ada di komputer lokal, kita salin isi dari
.env
file dan tempel ke file.env
yang berada di server. Pastikan file.env
yang ada komputer lokal sudah di jalankan perintahphp artisan key:generate
. Kemudian sesuaikan nilai-nilai variable yang diperlukan file.env
di dalam server.Menginstal Deployer di project Laravel yang ada di komputer lokal, alat untuk men-deploy project ke server dengan perintah di bawah ini.
|
|
Buat file
deploy.php
dengan perintah./vendor/bin/dep init
dan ikuti petunjuk yang diberikan, pilih Laravel sebagai framework yang dipakai.Buka file
deploy.php
dan salin Gist di bawah ini ke filedeploy.php
.
- Buat folder
.github/workflows
di root project Laravel dan filedeploy.yml
di dalam folderworkflows
.
|
|
- Buka file
deploy.yml
dan salin Gist di bawah ini ke filedeploy.yml
.
runs-on: ubuntu-latest ini menggunakan distro Ubuntu Linux milik server Github bukan server tempat kita menaruh proyek Laravel.
- Saya menggunakan Nginx sebagai web server di proyek ini. Berikut konfigurasinya.
Selesai dan selamat mencoba. Silakan contek di project Laravel Github Action milik saya dan jika ada kendala silakan buat isu di project itu.