Update situs otomatis setiap selesai commit ke Subversion

Hi, MWN’ers! Artikel berikut ini memberikan tip bagaimana membuat situs terupdate otomatis setiap selesai commit ke Subversion. Sebetulnya, lebih dianjurkan agar situs staging / testing saja yang disetting seperti ini, karena kadang commit kita bisa mengandung kesalahan. Namun cara ini memberi kepraktisan karena tidak perlu lagi upload secara manual.

Yang diperlukan:

– Akun hosting Spanel, atau akun hosting lain yang mendukung                    Subversion (lihat: fitur Subversion di Spanel);

– Akses shell.

Langkah-langkah:

1. Buat repositori Subversion. Lihat link artikel di atas untuk detil caranya jika di Spanel.

2. Isikan file-file website dan commitkan ke repositori Anda. Caranya terserah Anda, bisa menggunakan TortoiseSVN, dll.

3. Login ke SSH/shell. Berpindahlah ke direktori repositori Anda, subdirektori hooks/. Di Spanel, lokasinya di /u/USERANDA/svn/NAMAREPO/hooks (ganti dengan nilai sebenarnya):

$ cd /u/USERANDA/svn/NAMAREPO/hooks

4. Buatlah file post-commit yang isinya:

#!/bin/bash
lynx -dump http://SAMASITUS/svnup.php

Ganti nilai NAMASITUS dengan nama situs sebenarnya. Menggunakan shell, caranya seperti ini:

$ echo -e "#!/bin/bash\nlynx -dump http://NAMASITUS/svnup.php"

Lalu chmod agar dapat dieksekusi:

$ chmod +x post-commit

5. Buatlah file svnup.php di document root Anda yang isinya:

<?php system("svn up"); ?>

6. Jika menggunakan Spanel, settinglah situs Anda agar berjalan dengan user Anda, bukan user khusus CGI. Lihat di artikel ini untuk detilnya: User CGI.

7. Kecuali file svnup.php, hapus semua file di document root. File-file di document root akan diambil dari repositori SVN Anda. Jangan lupa masukkan juga skrip svnup.php ke dalam repositori Anda.

8. Ujilah dengan melakukan “svn up” dari shell:

$ cd /u/USERANDA/sites/NAMASITUS/www
$ svn co --username USERNAME --password PASSWORD http://NAMASITE/private-svn/NAMAREPO/

USERNAME dan PASSWORD adalah yang Anda pilih ketika membuat repositori SVN.

Seharusnya pada saat ini file-file website terkopikan ke document root Anda, yang kini merupakan working directory SVN.

9. Sekarang, setiap kali commit ke repositori SVN, SVN akan mengeksekusi file post-commit, yang akan menjalankan skrip svnup.php, yang akan mengeksekusi perintah “svn up” untuk memperbarui document root Anda. Semuanya otomatis!

Resita has written 702 articles