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
deployuntuk proses deployment. - Image:
totorajo/gitlab-rsync:v2.0.1, Docker image yang digunakan, sudah dilengkapi denganrsyncdanssh-agent. - Before Script: Menginisialisasi
ssh-agentuntuk autentikasi kunci SSH. - Script:
ssh-add: Digunakan untuk menambahkan private key secara dinamis.- Sinkronisasi file dikontrol menggunakan dua file:
.gitlab-ci-excludedan.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:
rsynchanya 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.