KodeJs
Tutorial CI/CD Auto Deploy Laravel 13 Pakai GitHub Actions
Laravel3 menit baca

Tutorial CI/CD Auto Deploy Laravel 13 Pakai GitHub Actions

Kembali ke Blog
Egi Samsul Mu'arifEgi Samsul Mu'arif11 September 20263 menit baca

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.

  1. Buka repository proyek Laravel 13 milikmu di GitHub.

  2. Masuk ke menu Settings ➔ Secrets and variables ➔ Actions.

  3. 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.


Egi Samsul Mu'arif

Ditulis oleh

Egi Samsul Mu'arif

Web & Mobile Developer

Artikel Terkait

Lihat semua