Update situs otomatis setiap selesai commit ke Subversion

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 705 articles