Deploy Otomatis Multiple Branch Dari Git Via post-receive Script
Saya mempunyai satu repository Git yang berisi beberapa branch, diantara branch tersebut ada yang ingin saya pasang di webserver secara otomatis begitu saya commit.
Untuk gampangnya memindahkan file dari repo ke folder web, saya gunakan git archive yang di pasang di script hooks post-receive. Maka ketika ada commit baru, folder web akan di update.
Dengan cara ini, folder web akan ditimpa oleh file dari repo, namun jika file di repo di hapus, file di folder web tidak akan di hapus, dan harus dihapus manual. Dan kebalikannya jika ternyata ada file lain yang di copy ke folder web namun tidak ada di repo, file itu tidak akan terpengaruh dengan yang dari repo.
Buat bare clone dari repo yang sudah ada, atau bisa juga inisialisasi sebuah git repo baru di server.
git clone --bare /tempat/berkas/repo-asal/tempat/tujuan/[repo-bare.git]
atau
mkdir /tempat/tujuan/repo-bare.git init --bare
Kemudian buat dan ubah file post-receive
touch /tempat/tujuan/repo-bare.git/hooks/post-receive
chmod +x /tempat/tujuan/repo-bare.git/hooks/post-receive
vim /tempat/tujuan/repo-bare.git/hooks/post-receive
Buat folder tujuan masing-masih branchnya, jika folder tidak ada, tidak akan dibuatkan folder secara otomatis :-). Isi file post-receive kira2 begini:
#!/bin/sh
# ini buat copy file
git archive master | tar -x -C /var/www/foldernya/master/
git archive develop | tar -x -C /var/www/foldernya/develop/
#perbaiki permission kalo perlu
find /var/www/foldernya/ -type f -exec chmod 0664 {} \;
find /var/www/foldernya/ -type d -exec chmod 0775 {} \;
gitu aja. tq
Komentar
Posting Komentar