Dari kata-kata pertanyaan Anda, saya berasumsi bahwa Anda memiliki mesin lokal dan mesin remote di mana Anda memperbarui dua file - skrip Python dan skrip Bash. Kedua file berada di bawah kendali SVN, dan kedua mesin memiliki akses ke server SVN yang sama.
Maaf saya tidak memiliki saran khusus untuk sistem grid Anda, tetapi izinkan saya mendaftar beberapa poin umum yang menurut saya penting untuk penyebaran apa pun.
Pertahankan perubahan produksi terbatas pada perubahan konfigurasi . Anda menulis bahwa Anda harus "menggunakan jalur dataset di server"; ini terdengar bagi saya seperti Anda memiliki jalur hardcoded ke skrip Python Anda. Ini bukan ide yang baik, justru karena Anda harus mengubah jalur tersebut di setiap mesin lain tempat Anda memindahkan skrip. Jika Anda mengkomit perubahan itu kembali ke SVN, maka pada mesin lokal Anda, Anda akan memiliki path jarak jauh, dan seterusnya ... (Bagaimana jika tidak hanya path, tetapi juga kata sandi? Anda seharusnya tidak memiliki kata sandi produksi di SVN server.)
Jadi, simpan jalur dan informasi pengaturan lainnya dalam .ini
file dan gunakan ConfigParser untuk membacanya, atau gunakan .json
file dan gunakan modul json . Simpan satu salinan file secara lokal dan satu dari jarak jauh, keduanya di bawah jalur yang sama, keduanya tanpa kontrol SVN, dan simpan path ke file konfigurasi itu di skrip Python (atau dapatkan dari baris perintah jika Anda tidak bisa menyimpan keduanya konfigurasi di bawah jalur yang sama).
Pertahankan konfigurasi sekecil mungkin . Konfigurasi apa pun adalah "bagian yang bergerak" dari aplikasi Anda, dan sistem apa pun yang lebih kuat semakin sedikit bagian yang bergerak. Indikator yang baik untuk sesuatu yang termasuk dalam konfigurasi adalah Anda harus mengeditnya setiap kali Anda memindahkan kode; hal-hal yang tidak perlu diedit dapat tetap sebagai konstanta dalam kode.
Otomatiskan penyebaran Anda . Anda dapat melakukannya melalui skrip Bash di mesin lokal Anda; perhatikan bahwa Anda dapat menjalankan perintah apa pun pada mesin jarak jauh melalui ssh
. Contohnya:
svn export yourprojectpath /tmp/exportedproject
tar czf /tmp/yourproject.tgz /tmp/exportedproject
scp /tmp/myproject.tgz youruser@remotemachine:~/dev
## Remote commands are in the right hand side, between ''
ssh youruser@remotemachine 'tar xzf ~/dev/yourproject.tgz'
ssh youruser@remotemachine 'qsub ~/dev/yourproject/script.py'
Agar ini berfungsi, tentu saja Anda harus memiliki login tanpa kata sandi , berdasarkan kunci publik / pribadi, yang dibuat antara mesin lokal dan remote Anda.
Jika Anda membutuhkan lebih dari ini, Anda dapat menggunakan Kain Python atau masakan tingkat tinggi .