D'après le libellé de votre question, je suppose que vous avez une machine locale et une machine distante où vous mettez à jour deux fichiers - un script Python et un script Bash. Les deux fichiers sont sous contrôle SVN et les deux machines ont accès au même serveur SVN.
Je suis désolé de ne pas avoir de conseils spécifiques à votre système de grille, mais permettez-moi d'énumérer certains points généraux que j'ai trouvés importants pour tout déploiement.
Limitez les modifications de production aux modifications de configuration . Vous écrivez que vous devez "utiliser le chemin des jeux de données sur le serveur"; cela me semble que vous avez les chemins codés en dur dans votre script Python. Ce n'est pas une bonne idée, précisément parce que vous devrez modifier ces chemins sur toutes les autres machines sur lesquelles vous déplacez le script. Si vous validez ces modifications dans SVN, alors sur votre machine locale, vous aurez les chemins distants, et ainsi de suite ... (Que faire s'il n'y a pas seulement des chemins, mais aussi des mots de passe? Vous ne devriez pas avoir de mots de passe de production dans un SVN serveur.)
Donc, conservez les chemins et autres informations de configuration dans un .ini
fichier et utilisez ConfigParser pour le lire, ou utilisez un .json
fichier et utilisez le module json . Gardez une copie du fichier localement et une à distance, les deux sous le même chemin, les deux sans contrôle SVN, et gardez simplement le chemin vers ce fichier de configuration dans le script Python (ou obtenez-le à partir de la ligne de commande si vous ne pouvez pas garder les deux configurations sous le même chemin).
Gardez la configuration aussi petite que possible . Toute configuration est une «partie mobile» de votre application, et tout système est plus robuste, moins il a de pièces mobiles. Un bon indicateur de quelque chose qui appartient à la configuration est exactement que vous devez le modifier chaque fois que vous déplacez le code; les éléments qui n'ont pas besoin d'être modifiés peuvent rester des constantes dans le code.
Automatisez votre déploiement . Vous pouvez le faire via un script Bash sur votre machine locale; Notez que vous pouvez exécuter une commande sur une machine distante par ssh
. Par exemple:
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'
Pour que cela fonctionne, vous devez bien sûr disposer d'une connexion sans mot de passe , basée sur des clés publiques / privées, entre votre ordinateur local et l'ordinateur distant.
Si vous avez besoin de plus que cela, vous pouvez penser à utiliser le tissu Python ou la cuisine de niveau supérieur .