Panduan lengkap membuat pipeline CI/CD otomatis untuk deploy Laravel 13 ke VPS Ubuntu menggunakan GitHub Actions & SSH.
Melakukan proses deployment secara manual—seperti masuk ke VPS via SSH, menguji kode, melakukan git pull, hingga meng-compile aset setiap kali ada perubahan kode—sangat memakan waktu dan rentan terhadap kesalahan (human error).
Melalui penerapan CI/CD (Continuous Integration / Continuous Deployment) menggunakan GitHub Actions, kamu dapat mengotomatiskan seluruh alur kerja tersebut. Setiap kali kamu melakukan git push ke branch utama (main/master), GitHub Actions akan secara otomatis menguji kode dan memperbarui server VPS milikmu dalam hitungan detik.
Artikel ini akan membimbingmu membuat skrip otomatisi pengiriman kode proyek Laravel 13 dari repository GitHub ke VPS Linux Nginx.
Arsitektur Alur Kerja CI/CD
┌─────────────────────────────────────────────────────────────────────────┐
│ ALUR KERJA AUTOMATIC DEPLOYMENT │
├────────────────────────────────┬────────────────────────────────────────┤
│ Lokal / Developer │ Cloud Pipeline & Production Server │
├────────────────────────────────┼────────────────────────────────────────┤
│ 1. Developer `git push` kode │ 2. GitHub Actions terpicu otomatis │
│ ke branch `main` │ 3. Menjalankan pengujian (Linter/Tests)│
│ │ 4. SSH Login ke VPS & jalankan skrip │
│ │ `git pull`, `migrate`, & `cache` │
└────────────────────────────────┴────────────────────────────────────────┘
1. Persiapan SSH Key di VPS Linux
Agar GitHub Actions dapat mengakses VPS milikmu tanpa perlu memasukkan kata sandi secara manual, kita harus menggunakan autentikasi SSH Key Pair.
A. Buat Pasangan SSH Key Baru di Komputer/VPS
Jalankan perintah berikut di terminal:
Bash
ssh-keygen -t rsa -b 4096 -C "github-actions-deploy" -f ~/.ssh/github_deploy_key
Perintah ini menghasilkan dua file:
Private Key:
github_deploy_key(Akam dimasukkan ke GitHub Secret)Public Key:
github_deploy_key.pub(Dimasukkan ke VPS)
B. Daftarkan Public Key di VPS
Tambahkan isi dari file github_deploy_key.pub ke dalam berkas ~/.ssh/authorized_keys di server VPS kamu:
Bash
cat ~/.ssh/github_deploy_key.pub >> ~/.ssh/authorized_keys
2. Menyimpan Credentials di GitHub Repository Secrets
Demi alasan keamanan, jangan pernah menaruh kata sandi, IP server, atau SSH Key langsung di dalam file kode repository. Gunakan fitur GitHub Secrets.
Buka repository proyek Laravel 13 milikmu di GitHub.
Masuk ke menu Settings ➔ Secrets and variables ➔ Actions.
Klik tombol New repository secret dan buat 4 variabel berikut:
Nama SecretNilai / Isi SecretSSH_HOSTIP Public VPS kamu (Contoh: 103.150.90.12)SSH_USERNAMEUser SSH VPS (Contoh: root atau ubuntu)SSH_KEYIsi Private Key (konten lengkap dari file github_deploy_key)SSH_PORTPort SSH VPS kamu (Default: 22)
3. Membuat File Configuration Workflow GitHub Actions
Di dalam basis kode proyek Laravel 13 kamu, buat struktur direktori dan file konfigurasi baru di .github/workflows/deploy.yml.
Isi file .github/workflows/deploy.yml dengan skrip otomatisasi berikut:
YAML
name: Deploy Laravel 13 to VPS
# Jalankan pipeline setiap ada push ke branch 'main'
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Execute Remote SSH Commands on VPS
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_KEY }}
port: ${{ secrets.SSH_PORT }}
script: |
# 1. Pindah ke direktori proyek Laravel di VPS
cd /var/www/laravel13-app
# 2. Ambil perubahan kode terbaru dari GitHub
git pull origin main
# 3. Install/Update dependensi Composer
composer install --no-dev --prefer-dist --optimize-autoloader --no-interaction
# 4. Jalankan migrasi database otomatis
php artisan migrate --force
# 5. Optimasi cache bawaan Laravel 13
php artisan config:cache
php artisan route:cache
php artisan view:cache
# 6. Restart Queue Worker jika menggunakan Supervisor (Opsional)
# php artisan queue:restart
# 7. Atur ulang permission direktori storage
sudo chown -R www-data:www-data storage bootstrap/cache
4. Pengujian Otomatisasi (Testing Pipeline)
Sekarang, coba buat perubahan kecil pada basis kode proyek kamu di komputer lokal, lalu lakukan commit dan push ke GitHub:
Bash
git add .
git commit -m "feat: pembaruan fitur baru untuk deployment otomatis"
git push origin main
Buka tab Actions di halaman repository GitHub kamu. Kamu akan melihat alur kerja (workflow) deployment sedang berjalan secara otomatis. Jika indikator menunjukkan warna hijau (Checkmark), artinya aplikasi Laravel 13 di server VPS milikmu telah diperbarui secara otomatis tanpa error!
Kesimpulan
Menerapkan CI/CD Auto Deployment dengan GitHub Actions membuat proses rilis perangkat lunak menjadi jauh lebih aman, cepat, dan terukur. Kamu bisa berfokus penuh mengembangkan fitur baru tanpa perlu membuang waktu melakukan proses pengunggahan kode manual ke server.
Ditulis oleh
Egi Samsul Mu'arif
Web & Mobile Developer



