Pendahuluan
Setiap kali selesai coding, kamu harus SSH ke VPS, pull code, restart service. Berulang, membosankan, dan rawan human error.
CI/CD pipeline menyelesaikan semua itu. Setelah setup, workflow deployment menjadi: push ke GitHub → otomatis deploy ke VPS.
GitHub Actions adalah tools CI/CD gratis yang terintegrasi langsung dengan repository GitHub kamu. Perfect untuk project personal hingga production skala menengah.
Apa Itu CI/CD?
- CI (Continuous Integration) — otomatis test dan build setiap ada perubahan code
- CD (Continuous Deployment) — otomatis deploy ke server jika CI berhasil
Manfaat utama:
- Tidak ada deploy manual yang lupa langkah
- Deploy konsisten dan reproducible
- Rollback lebih mudah jika ada masalah
- Fokus coding, bukan deploy
Persiapan VPS
Buat user khusus untuk deploy (jangan pakai root):
sudo adduser deployer
sudo usermod -aG sudo deployer
# Opsional: beri akses tanpa password untuk perintah deploy spesifik
sudo visudo
# Tambahkan: deployer ALL=(ALL) NOPASSWD: /bin/systemctl restart myapp
Setup SSH Key untuk Deploy
Generate deploy key di komputer lokal kamu:
ssh-keygen -t ed25519 -C "github-actions-deploy" -f ~/.ssh/deploy_key -N ""
Copy public key ke VPS:
ssh-copy-id -i ~/.ssh/deploy_key.pub deployer@IP_VPS_KAMU
Tampilkan private key untuk disimpan ke GitHub Secrets:
cat ~/.ssh/deploy_key
Konfigurasi GitHub Secrets
Buka repository GitHub kamu → Settings → Secrets and variables → Actions → New repository secret.
Tambahkan secret berikut:
VPS_HOST— IP address VPS kamuVPS_USER— username deploy (misal: deployer)VPS_SSH_KEY— isi private key dari langkah sebelumnyaVPS_PORT— port SSH (default: 22)
Buat GitHub Actions Workflow
Buat file .github/workflows/deploy.yml di repository kamu:
name: Deploy ke VPS
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Deploy via SSH
uses: appleboy/[email protected]
with:
host: ${{ secrets.VPS_HOST }}
username: ${{ secrets.VPS_USER }}
key: ${{ secrets.VPS_SSH_KEY }}
port: ${{ secrets.VPS_PORT }}
script: |
cd /var/www/myapp
git pull origin main
# tambahkan perintah deploy di sini
Contoh: Auto Deploy Aplikasi Laravel
name: Deploy Laravel
on:
push:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.3'
- name: Install dependencies
run: composer install --no-dev
- name: Run tests
run: php artisan test
deploy:
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Deploy via SSH
uses: appleboy/[email protected]
with:
host: ${{ secrets.VPS_HOST }}
username: ${{ secrets.VPS_USER }}
key: ${{ secrets.VPS_SSH_KEY }}
script: |
cd /var/www/myapp
git pull origin main
composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan config:cache
php artisan route:cache
php artisan view:cache
sudo systemctl restart laravel-worker
Contoh: Auto Deploy Aplikasi Node.js / Next.js
name: Deploy Next.js
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Deploy via SSH
uses: appleboy/[email protected]
with:
host: ${{ secrets.VPS_HOST }}
username: ${{ secrets.VPS_USER }}
key: ${{ secrets.VPS_SSH_KEY }}
script: |
cd /var/www/nextapp
git pull origin main
npm ci
npm run build
pm2 restart nextapp
Kenapa VPS SufaNet Cocok untuk CI/CD?
- Performa konsisten — deploy tidak tiba-tiba lambat
- Uptime tinggi — pipeline tidak gagal karena server down
- SSH stabil untuk koneksi GitHub Actions
- Cocok untuk project skala kecil hingga menengah
CI/CD mulus butuh server yang responsif
Deploy otomatis tidak ada gunanya jika VPS-nya lambat dan tidak bisa diandalkan.
🚀 Lihat VPS Singapore SufaNetFAQ
GitHub Actions gratis untuk private repo?
Ya, gratis dengan kuota 2.000 menit/bulan untuk repo private. Untuk repo public, gratis tanpa batas.
Bagaimana cara rollback jika deploy gagal?
Tambahkan langkah git reset --hard HEAD~1 di skrip rollback, atau gunakan git tag untuk versi yang stabil.
Bisa dipakai selain GitHub? GitLab?
GitLab punya GitLab CI yang serupa. Prinsipnya sama, hanya format YAML dan konfigurasi secret yang berbeda.
Kesimpulan
CI/CD dengan GitHub Actions adalah investasi waktu yang terbayar sejak deploy pertama. Setup sekali, nikmati selamanya.
Mulai dari workflow sederhana, lalu tambahkan testing dan notifikasi slack/telegram sesuai kebutuhan.