Sorunuzun ifadesinden, yerel bir makineniz ve iki dosyayı güncellediğiniz uzak bir makineniz olduğunu varsayıyorum - bir Python komut dosyası ve bir Bash komut dosyası. Her iki dosya da SVN denetimindedir ve her iki makine de aynı SVN sunucusuna erişebilir.
Şebeke sisteminize özgü herhangi bir tavsiyem yok, ancak herhangi bir dağıtım için önemli bulduğum bazı genel noktaları listeleyeyim.
Üretim değişikliklerini yapılandırma değişiklikleriyle sınırlı tutun . "Sunucuda veri kümelerinin yolunu kullanmanız" gerektiğini yazarsınız; Bu bana Python betiğinizin içine kodlanmış yolları olduğu gibi geliyor. Bu iyi bir fikir değildir, çünkü komut dosyasını taşıdığınız diğer tüm makinelerde bu yolları değiştirmeniz gerekecektir. Bu değişiklikleri SVN'ye geri yüklerseniz, yerel makinenizde uzak yollara sahip olacaksınız ve devam edeceksiniz ... (Sadece yollar değil, şifreler de varsa? SVN'de üretim şifreleri olmamalıdır? sunucusu.)
Bu nedenle, yolları ve diğer kurulum bilgilerini bir .ini
dosyada saklayın ve okumak için ConfigParser'ı kullanın veya bir .json
dosya ve json modülünü kullanın . Her ikisi de SVN denetimi olmadan dosyanın bir kopyasını yerel olarak ve bir kopyasını aynı yol altında tutun ve Python komut dosyasında bu yapılandırma dosyasının yolunu saklayın (veya her ikisini de tutamazsanız komut satırından alın) aynı yol altındaki yapılandırmalar).
Yapılandırmayı olabildiğince küçük tutun . Herhangi bir yapılandırma uygulamanızın "hareketli bir parçasıdır" ve herhangi bir sistem hareketli parçaları ne kadar azsa o kadar sağlamdır. Konfigürasyona ait bir şeyin iyi bir göstergesi, kodu her taşıdığınızda tam olarak düzenlemeniz gerektiğidir; düzenlemeye gerek olmayan şeyler kodda sabit olarak kalabilir.
Dağıtımınızı otomatikleştirin . Bunu yerel makinenizde bir Bash betiği ile yapabilirsiniz; Eğer unutmayın uzak makinede herhangi bir komutu çalıştırmak yoluyla ssh
. Örneğin:
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'
Bunun çalışması için, yerel ve uzak makineniz arasında ayarlanmış, genel / özel anahtarlara dayalı, şifresiz bir oturum açmanız gerekir .
Bundan daha fazlasına ihtiyacınız varsa, Python's Fabric'i veya üst düzey mutfağı kullanmayı düşünebilirsiniz .