Kalau kamu masih deploy aplikasi ke VPS secara manual, SSH masuk, git pull, install dependency, lalu restart server. Kamu tahu betapa melelahkan dan rentannya proses itu? Satu langkah terlewat bisa bikin aplikasi down di production.
Itulah masalah yang diselesaikan oleh CI/CD. Dengan cara setup CI/CD ke VPS yang tepat, kamu cukup melakukan git push dan seluruh proses build, testing, hingga deployment berjalan otomatis tanpa intervensi manual. Artikel ini akan memandu kamu setup CI/CD menggunakan dua tool paling populer: GitHub Actions dan GitLab CI.
Apa Itu CI/CD?
CI/CD (Continuous Integration & Continuous Deployment) adalah dua metode pengembangan software yang bekerja mengotomasi pengujian dan deployment kode.
- Continuous Integration (CI) memastikan setiap perubahan kode yang di-push ke repository langsung diuji secara otomatis. Kalau ada bug atau konflik, tim langsung tahu sebelum kode masuk ke production.
- Continuous Deployment (CD) melanjutkan prosesnya lebih jauh. Setelah kode lolos pengujian, sistem otomatis men-deploy perubahan tersebut ke server tanpa intervensi manual sama sekali.
Hasilnya, proses yang biasanya memakan waktu berjam-jam bisa selesai dalam hitungan menit. Tim developer bisa fokus menulis kode, bukan mengurus deployment.
Keuntungan Setup CI/CD ke VPS
Dibanding menggunakan layanan CI/CD cloud yang terbatas, menjalankan pipeline langsung ke VPS (Virtual Private Server) memberi banyak keuntungan:
- Kontrol penuh atas infrastruktur — kamu yang menentukan resource CPU, memory, dan storage yang digunakan pipeline.
- Akses ke internal service — pipeline bisa menjangkau staging environment atau database private yang tidak bisa diakses dari luar.
- Tidak ada batasan runtime — kamu bebas menentukan versi software dan stack yang dibutuhkan tanpa terikat batasan platform.
- Lebih hemat biaya — tidak ada biaya tambahan per menit build seperti di layanan CI/CD berbayar.
Persiapan Sebelum Setup CI/CD ke VPS
Sebelum mulai cara setup CI/CD ke VPS, pastikan kamu sudah menyiapkan hal-hal berikut:
- VPS Linux aktif dengan akses SSH (Ubuntu 20.04 atau lebih baru direkomendasikan)
- Repository kode di GitHub atau GitLab
- git sudah terinstall di VPS
- Aplikasi sudah pernah di-clone secara manual ke VPS minimal sekali
- User deployment khusus di VPS (disarankan bukan root)
Untuk membuat user deployment di VPS, jalankan:
sudo adduser deployer
sudo usermod -aG sudo deployer
sudo mkdir -p /var/www/my-app
sudo chown deployer:deployer /var/www/my-app
Cara Setup CI/CD ke VPS dengan GitHub Actions
GitHub Actions adalah sistem CI/CD native milik GitHub yang mengeksekusi workflow berdasarkan event seperti push, pull request, atau tag. File workflow berbasis YAML disimpan langsung di dalam repositori project kamu.
1. Siapkan SSH Key untuk Deploy
Buat SSH key pair khusus untuk deployment, jangan gunakan key yang sama dengan akses personal kamu:
ssh-keygen -t rsa -b 4096 -C “github-actions-deploy” -f github-actions-key
Perintah ini menghasilkan dua file: github-actions-key (private key) dan github-actions-key.pub (public key).
Tambahkan isi file github-actions-key.pub ke file ~/.ssh/authorized_keys milik user deployer di VPS kamu. Jangan gunakan passphrase untuk key ini agar proses otomatis berjalan lancar.
cat github-actions-key.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
2. Tambahkan GitHub Secrets
Jangan pernah menyimpan private key SSH, IP server, atau password langsung di file workflow GitHub Actions. Gunakan GitHub Secrets. Buka repository kamu, pergi ke Settings → Secrets and variables → Actions, lalu buat secrets berikut:
- VPS_SSH_PRIVATE_KEY — isi dengan seluruh konten private key
- VPS_HOST — IP address atau domain VPS kamu
- VPS_USERNAME — nama user deployment (contoh: deployer)
- VPS_APP_PATH — path direktori aplikasi di VPS (contoh: /var/www/my-app)
3. Buat File Workflow GitHub Actions
Buat file .github/workflows/deploy.yml di root repositori kamu:
name: Deploy to VPS
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
– name: Checkout code
uses: actions/checkout@v3
– name: Deploy via SSH
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.VPS_HOST }}
username: ${{ secrets.VPS_USERNAME }}
key: ${{ secrets.VPS_SSH_PRIVATE_KEY }}
script: |
cd ${{ secrets.VPS_APP_PATH }}
git pull origin main
npm install –production
npm run build
pm2 restart app
Setelah file ini di-commit dan di-push ke branch main, GitHub Actions akan otomatis menjalankan deployment ke VPS kamu setiap ada perubahan kode baru.
Cara Setup CI/CD ke VPS dengan GitLab CI
GitLab CI adalah sistem CI/CD terintegrasi yang sudah ada di dalam GitLab. GitLab Runner mengeksekusi jobs yang didefinisikan di file .gitlab-ci.yml dan kompatibel baik dengan GitLab.com maupun self-hosted GitLab.
1. Buat File .gitlab-ci.yml
Buat file .gitlab-ci.yml di root repository GitLab kamu:
stages:
– deploy
deploy_production:
stage: deploy
only:
– main
before_script:
– apt-get update -qq && apt-get install -y openssh-client
– eval $(ssh-agent -s)
– echo “$SSH_PRIVATE_KEY” | tr -d ‘\r’ | ssh-add –
– mkdir -p ~/.ssh && chmod 700 ~/.ssh
– ssh-keyscan $VPS_HOST >> ~/.ssh/known_hosts
script:
– ssh $VPS_USERNAME@$VPS_HOST “
cd /var/www/my-app &&
git pull origin main &&
npm install –production &&
npm run build &&
pm2 restart app”
2. Tambahkan Variable SSH di GitLab
GitLab CI/CD menggunakan variables berupa key-value pair untuk menyimpan dan juga mengoper konfigurasi serta informasi sensitif (password atau API key) ke jobs pipeline.
Buka Settings → CI/CD → Variables di repository GitLab kamu, lalu tambahkan:
- SSH_PRIVATE_KEY — private key SSH kamu (tandai sebagai Masked)
- VPS_HOST — IP address VPS
- VPS_USERNAME — nama user deployment
Pastikan variabel SSH_PRIVATE_KEY diset sebagai Protected dan Masked agar tidak bocor di log pipeline.
3. Jalankan Pipeline dan Verifikasi
Commit file .gitlab-ci.yml ke branch main. GitLab otomatis mendeteksi file ini dan menjalankan pipeline pertama kamu. Pantau statusnya di menu CI/CD → Pipelines di repository kamu. Kalau pipeline berhasil, kamu akan melihat tanda centang hijau. Kalau gagal, klik job yang error untuk melihat log lengkapnya dan temukan baris yang bermasalah.
GitHub Actions vs GitLab CI: Mana yang Lebih Cocok?
Kedua tool ini sama-sama powerful untuk cara setup CI/CD ke VPS. Perbedaannya lebih ke konteks penggunaan:
| Parameter | GitHub Actions | GitLab CI |
| Cocok untuk | Repository di GitHub | Repository di GitLab |
| Konfigurasi | .github/workflows/*.yml | .gitlab-ci.yml |
| Free tier | 2.000 menit/bulan | 400 menit/bulan |
| Ekosistem | Marketplace actions yang luas | Pipeline visualization yang lebih lengkap |
| Self-hosted runner | ✅ Didukung | ✅ Didukung |
1. Dari Sisi Kemudahan Penggunaan
GitHub Actions unggul dalam hal ekosistem. Tersedia ribuan pre-built actions di GitHub Marketplace yang bisa langsung kamu pakai tanpa menulis script dari nol. Cocok untuk tim yang ingin setup cepat tanpa banyak konfigurasi manual.
GitLab CI di sisi lain menawarkan pipeline visualization yang lebih lengkap secara native. Kamu bisa melihat alur setiap stage secara visual langsung dari dashboard — sangat membantu saat mengelola pipeline yang kompleks dengan banyak jobs.
2. Dari Sisi Free Tier dan Biaya
GitHub Actions memberikan 2.000 menit build gratis per bulan untuk repositori publik dan privat. GitLab CI memberikan 400 menit gratis per bulan untuk paket free tier-nya. Kalau kamu sering melakukan deployment, GitHub Actions lebih hemat untuk penggunaan awal. Namun keduanya sama-sama mendukung self-hosted runner, artinya kamu bisa menjalankan pipeline langsung di VPS sendiri tanpa batas menit dan tanpa biaya tambahan.
Kesimpulan
Cara setup CI/CD ke VPS dengan GitHub Actions maupun GitLab CI pada dasarnya mengikuti pola yang sama: siapkan SSH key, simpan kredensial sebagai secrets, lalu definisikan langkah deployment di file YAML. Begitu pipeline aktif, kamu tidak perlu lagi menyentuh VPS secara manual setiap kali deploy.Tapi pipeline CI/CD yang cepat dan andal juga butuh VPS yang responsif sebagai pondasinya. Kalau VPS kamu sering lambat atau resource-nya tidak cukup untuk menjalankan build, pipeline tetap akan jadi bottleneck. Nevacloud menyediakan cloud VPS dengan performa tinggi, latency rendah, dan spesifikasi fleksibel, cocok untuk mendukung workflow CI/CD kamu tanpa gangguan. Cek paket VPS Nevacloud sekarang dan bangun pipeline deployment yang benar-benar otomatis dari ujung ke ujung.


