โ–šServer Journey

Bagian 7 โ€” Ringkasan & Dunia Setelah Ini ยท Langkah 35 dari 38

CI/CD

Push git โ†’ server meng-update dirinya sendiri. Loop manual SSH-pull-restart diotomasi.

Hitung berapa kali tanganmu bergerak per deploy

Sekarang: commit โ†’ push โ†’ SSH โ†’ git pull โ†’ npm install โ†’ build โ†’ pm2 restart. Setiap langkah = kesempatan human error (lupa build, restart service yang salah). CI/CD memindahkan loop itu ke mesin: setiap push ke GitHub memicu pipeline yang menguji, membangun, lalu mendeploy โ€” konsisten, tercatat, bisa di-rollback.

  • Continuous Integration (CI) โ€” setiap push: install deps, jalankan test, build. Gagal test = gagal deploy (bug tidak pernah sampai produksi).
  • Continuous Deployment (CD) โ€” CI hijau โ†’ deploy otomatis: SSH ke server, pull, restart service (atau build image & push registry untuk Docker).

Contoh konkret GitHub Actions โ€” file di repo-mu:

.github/workflows/deploy.yml
name: Deploy
on:
  push:
    branches: [main]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Deploy ke VM via SSH
        uses: appleboy/ssh-action@v1
        with:
          host: ${{ secrets.SERVER_IP }}
          username: ${{ secrets.SERVER_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            cd ~/webapp
            git pull origin main
            npm ci && npm run build
            pm2 restart webapp

rahasia (IP, private key) disimpan di GitHub Secrets โ€” tidak pernah masuk repo

Kebetulan yang menyenangkan: pipeline-mu memakai SSH private key + restart service โ€” semua yang baru kamu bangun di web ini. CI/CD bukan teknologi asing, dia robot yang mengulang keystroke yang sudah kamu kuasai.

Baca lebih lanjut