git-ftp: FTP serasa git

git-ftp: FTP serasa git

Teman-teman developer pasti sudah familiar dengan FTP. Yup, protocol andalan untuk melakukan deployment aplikasi/kode ke server. Apalagi yang servernya menggunakan shared hosting. Aplikasi andalan yang dipakai apalagi kalau bukan Filezilla atau WinSCP. Disatu sisi teman-teman juga mungkin sudah memakai git ketika bekerja sebagai tim, agar perubahan file bisa lebih tercatat dan juga lebih mudah direstore jika ada kesalahan/bug. Langkah-langkah yang teman-teman lakukan saat deployment bisa saya gambarkan:

  • Melihat commit logs dari git,
  • Mencatat setiap file yang berubah, ditambahkan, maupun di hapus.
  • Melakukan upload file satu persatu, tidak boleh salah upload.

Atau mungkin dengan cara:

  • Upload dan replace file secara keseluruhan!!! Duh! :P

Nah, cara seperti di atas masih terkesan manual. Selain itu kurang efisien dan rentan kesalahan. Kali ini Daengweb akan menjelaskan alternatif untuk deployment dengan memanfaatkan fitur git dan ftp. Bagaimana caranya? Kita simak yuk! 

git-ftp: Perkenalan

Seperti namanya tools ini merupakan gabungan fitur antara Git dan ftp. Dengan git dilakukan pencatatan perubahan file. Lewat ftp kita melakukan deployment ke server. Tool ini akan menggantikan cara manual kita diatas. Wooow!!! git-ftp sendiri bersifat opensource silahkan berkunjung ke repositori githubnya (https://github.com/git-ftp/git-ftp)

Instalasi git-ftp

Untuk melakukan instalasi silahkan ikuti langkah-langkah berikut:

  1. Via package manager:
    • Debian based (Ubuntu, Linux-Mint, Elementary-OS, dll):
      $ sudo apt-get install git-ftp
    • Archlinux (via aur):
      $ yaourt git-ftp
    • Windows (ikuti cara manual)
  2. Cara manual:
    • Buka terminal (pada windows wajib menggunakan git bash, bukan command prompt)
    • Jalankan perintah:
      $ curl https://raw.githubusercontent.com/git-ftp/git-ftp/master/git-ftp > /usr/bin/git-ftp 
      $ chmod 755 /usr/bin/git-ftp
    • Jalankan perintah
      $ git ftp

       

Pengaturan Dasar

Sebelum memulai konfigurasi, pastikan terminal/bash sedang berada di dalam direktori project. Atau mungkin teman-teman bisa fork dan clone repositori berikut https://github.com/daengwebid/git-ftp-demo sebagai contoh project. Terdapat tiga hal yang harus di setup sebelum menggunakan git-ftp:

Set ftp/sftp username:

$ git config git-ftp.user nama_user
# contoh 
$ git config git-ftp.user daengweb

 

Set ftp/sftp password:

$ git config git-ftp.password isipassworddisini
#contoh
$ git config git-ftp.password daengwebpwd

 

Set directori deployment aplikasi: 

$ git config git-ftp.url ftp://hostname:port/path/to/application
#contoh
git config git-ftp.url ftp://daengweb.test:21/var/www/html/daengweb

 

Cara Kerja git-ftp

Setelah melakukan pengaturan di atas, jalankan perintah berikut untuk memulai deployment ke server:

$ git ftp init

Opsi perintah init pada git-ftp adalah perintah yang kita jalankan saat pertama kali memulai deployment. Jadi perintah ini akan mengupload semua file yang ada pada repositori dari sejak repositori di buat sampai commitan terakhir. Lalu bagaimana untuk deployment-deployment selanjutnya? Perintah yang kita gunakan adalah perintah push:

$ git ftp push

Opsi perintah push akan melakukan deployment sesuai dengan commit log sejak terakhir kali dilakukan deployment (push sebelumnya ataupun init) hingga commitan terakhir. Semua operasi file dari commit log akan di lakukan oleh git-ftp, mulai dari penambahan file baru, perubahan file, bahkan menghapus file. Jika teman-teman memperhatikan, di dalam direktori deployment pada server, git-ftp akan membuat satu file baru bernama .git-ftp.log. Pada file ini lah sebenarnya git-ftp melakukan pencatatan commit hash setiap kali terjadi deployment. Jadi setiap kali perintah push di jalankan, git-ftp akan membaca isi file ini terlebih dahulu, lalu berdasarkan commit hash yang di dapatkan akan di list file-file mana saja yang terjadi perubahan. Setelah deployment selesai, git-ftp akan merubah file .git-ftp.log dengan commit hash yang terbaru.

Ada satu opsi lagi yang teman-teman bisa pakai. Opsi ini adalah catchup

$ git ftp catchup

Opsi catchup adalah alternatif dari perintah init. Di pakai pada kondisi file-file sudah ada sebelumnya di server. Misalnya: sudah pernah di lakukan deployment dengan aplikasi lain. Perintah catchup akan membuat atau mengubah file .git-ftp.log dengan commit hash terbaru. Dan selanjutnya dengan perintah push untuk melakukan deployment.

Pengaturan Lanjutan

Sudah cukup paham bagaimana penggunaan dasar dari git-ftp diatas? Cukup mudah bukan? Selain fitur dasar di atas mungkin teman-teman ingin bertanya, bagaimana jika mempunyai beberapa environment atau server? Semisal ada environment untuk staging dan ada environment untuk production atau mungkin ada environment untuk testing. Untuk skenario ini, git-ftp memiliki fitur bernama scope. Dengan scope ini dapat dipilah-pilah branch mana yang akan dideploy ke server yang mana. Contoh konfigurasi:

# staging 
$ git config git-ftp.staging.user daengweb
$ git config git-ftp.staging.password daengwebpassword
$ git config git-ftp.staging.url ftp://daengweb.staging/var/www/html/daengweb

# production 
$ git config git-ftp.production.user daengweb
$ git config git-ftp.production.password daengwebpassword
$ git config git-ftp.production.url ftp://daengweb.production/var/www/html/daengweb

Untuk melakukan deployment tambahkan parameter `-s nama_scope` dari setiap operasi:

# deployment staging
$ git ftp init -s staging
$ git ftp push -s staging
$ git ftp catchup -s staging

# deployment production 
$ git ftp init -s production 
$ git ftp push -s production
$ git ftp catchup -s production

Ada satu lagi kasus menarik yang akan Daengweb bagikan. Semisal teman-teman tidak sengaja salah melakukan deployment, atau file yang dideploy memiliki bug atau belum boleh di deploy ke production. Git-ftp bisa mengatasi ini kasus ini. Langkah-langkah yang perlu di lakukan sangat simple:

Silahkan cari commit history mana file aplikasi akan di restore, lalu copy commit hash tersebut

Selanjutnya jalankan perintah:

git checkout commit_hash
# contoh
git checkout a020f8988b24a9a5bc5e2ab90d5e1efed9f546ba

 

Jalankan perintah push

$ git ftp push 
# atau jika dengan scope 
$ git ftp push -s production

 

Dan voila! File pada server akan kembali sesuai dengan state commit history yang di pilih.

Demikian cuap-cuap Daengweb soal git-ftp. Semoga bermanfaat! Maju terus Programmer Indonesia. Happy code and Happy Deploy!!! Jangan lupa di share yaah.

Category:
Share:

Comments