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.
Baca Juga:   Apa kaitan Border Gateway Protocol (BGP) dengan VPS?

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)
Baca Juga:   Apa Itu MySQL? Definisi, Manfaat, dan Cara Kerjanya

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
Baca Juga:   Ghost vs Medium: Perbandingan Platform Blogging Terbaik

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:

ParameterGitHub ActionsGitLab CI
Cocok untukRepository di GitHubRepository di GitLab
Konfigurasi.github/workflows/*.yml.gitlab-ci.yml
Free tier2.000 menit/bulan400 menit/bulan
EkosistemMarketplace actions yang luasPipeline 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.

Avatar for Rizqon Sadida

Tentang Penulis

Rizqon Sadida

Rizqon Sadida merupakan Lead Developer di Nevacloud dengan pengalaman mendalam dalam pengembangan perangkat lunak, khususnya sebagai fullstack developer. Ia memiliki keahlian dalam membangun solusi teknologi yang andal dan skalabel, serta berfokus pada pengembangan aplikasi modern yang mengintegrasikan performa tinggi dengan... baca lebih lanjut..