Memanfaatkan Docker Image totorajo/gitlab-rsync:v2.0.1 untuk Deployment

Masalah

Deployment aplikasi sering kali melibatkan proses manual yang memakan waktu dan rentan terhadap kesalahan. Hal ini dapat menghambat efisiensi tim developer dalam melakukan update.

Pembahasan

Dengan menggunakan pipeline CI/CD berbasis GitLab dan Docker image totorajo/gitlab-rsync:v2.0.1, otomatisasi proses deployment dapat dicapai dengan mudah. Docker image ini menyediakan lingkungan yang sudah dilengkapi dengan rsync dan ssh-agent, sehingga memungkinkan transfer file secara aman dan cepat ke server staging tanpa harus melakukan konfigurasi berulang setiap kali deployment. Hal ini dapat diintegrasikan dalam file .gitlab-ci.yml dengan menambahkan beberapa skrip untuk otomatisasi.

Contoh Konfigurasi .gitlab-ci.yml:


staging-apps:
    stage: deploy
    image: totorajo/gitlab-rsync:v2.0.1
    environment:
        name: staging-apps
    before_script:
        - ls -la
        - eval $(ssh-agent -s)
    script:
        - ssh-add <(echo "$VM_STAGING_103_59_269_82")
        - |
          EXCLUDE_FILE=".gitlab-ci-exclude"
          INCLUDE_FILE=".gitlab-ci-include"

          SRC="./"
          DST="[email protected]:/home/gamain/container-staging/apps/api-gateway"
          
          echo "Destination Directory: $DST"
        - rsync -rvzD -e "ssh -o StrictHostKeyChecking=no" --include-from=$INCLUDE_FILE --exclude-from=$EXCLUDE_FILE $SRC $DST
    only:
        - staging/apps

Penjelasan Konfigurasi:

  • Stage: Menentukan tahap deploy untuk proses deployment.
  • Image: totorajo/gitlab-rsync:v2.0.1, Docker image yang digunakan, sudah dilengkapi dengan rsync dan ssh-agent.
  • Before Script: Menginisialisasi ssh-agent untuk autentikasi kunci SSH.
  • Script:
    • ssh-add: Digunakan untuk menambahkan private key secara dinamis.
    • Sinkronisasi file dikontrol menggunakan dua file: .gitlab-ci-exclude dan .gitlab-ci-include.
    • rsync: Menjalankan transfer file dari direktori lokal ke server staging dengan opsi -rvzD.
  • Only: Menentukan branch mana yang akan menjalankan pipeline, dalam contoh ini hanya branch staging/apps.

Rangkuman

Penggunaan Docker image totorajo/gitlab-rsync:v2.0.1 dalam GitLab CI/CD memungkinkan deployment yang lebih efisien dan otomatis. Dengan memanfaatkan rsync dan konfigurasi SSH yang tepat, pengembang dapat memastikan hanya file yang berubah saja yang ditransfer, menghemat waktu dan bandwidth. Pipeline ini memberikan solusi cepat dan aman untuk deployment, meningkatkan produktivitas tim dalam pengelolaan server staging.

Manfaat Utama:

  • Kecepatan: rsync hanya mentransfer perubahan, mempercepat proses deployment.
  • Otomatisasi: Mengurangi kebutuhan intervensi manual dalam proses transfer file.
  • Keamanan: Menggunakan SSH untuk memastikan koneksi aman.
  • Efisiensi: Menggunakan file konfigurasi untuk menentukan file yang perlu disinkronisasi.

Jika memiliki masalah lain terkait deployment saya terbuka untuk diskusi, semoga bermanfaat.