Aus dem Wortlaut Ihrer Frage gehe ich davon aus, dass Sie einen lokalen Computer und einen Remote-Computer haben, auf denen Sie zwei Dateien aktualisieren - ein Python-Skript und ein Bash-Skript. Beide Dateien unterliegen der SVN-Kontrolle und beide Computer haben Zugriff auf denselben SVN-Server.
Es tut mir leid, dass ich keine spezifischen Ratschläge für Ihr Grid-System habe, aber lassen Sie mich einige allgemeine Punkte auflisten, die ich für eine Bereitstellung als wichtig erachtet habe.
Beschränken Sie Produktionsänderungen auf Konfigurationsänderungen . Sie schreiben, dass Sie "den Pfad der Datensätze auf dem Server verwenden müssen"; Das klingt für mich so, als hätten Sie die Pfade in Ihrem Python-Skript fest codiert. Dies ist keine gute Idee, gerade weil Sie diese Pfade auf jedem anderen Computer ändern müssen, auf den Sie das Skript verschieben. Wenn Sie diese Änderungen wieder an SVN übergeben, haben Sie auf Ihrem lokalen Computer die Remote-Pfade und so weiter und so fort ... (Was ist, wenn nicht nur Pfade, sondern auch Kennwörter vorhanden sind? Sie sollten keine Produktionskennwörter in einem SVN haben Server.)
Behalten Sie also Pfade und andere Setup-Informationen in einer .ini
Datei und verwenden Sie ConfigParser , um sie zu lesen, oder verwenden Sie eine .json
Datei und verwenden Sie das json- Modul. Behalten Sie eine Kopie der Datei lokal und eine remote bei, beide unter demselben Pfad, beide ohne SVN-Kontrolle, und behalten Sie einfach den Pfad zu dieser Konfigurationsdatei im Python-Skript bei (oder rufen Sie ihn über die Befehlszeile ab, wenn Sie nicht beide behalten können Konfigurationen unter demselben Pfad).
Halten Sie die Konfiguration so klein wie möglich . Jede Konfiguration ist ein "beweglicher Teil" Ihrer Anwendung, und jedes System ist umso robuster, je weniger bewegliche Teile vorhanden sind. Ein guter Indikator für etwas, das in die Konfiguration gehört, ist genau, dass Sie es jedes Mal bearbeiten müssen, wenn Sie den Code verschieben. Dinge, die nicht bearbeitet werden mussten, können als Konstanten im Code verbleiben.
Automatisieren Sie Ihre Bereitstellung . Sie können dies über ein Bash-Skript auf Ihrem lokalen Computer tun. beachten Sie, dass Sie einen Befehl auf einem entfernten Rechner laufen durch ssh
. Zum Beispiel:
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'
Damit dies funktioniert, müssen Sie natürlich eine kennwortlose Anmeldung basierend auf öffentlichen / privaten Schlüsseln zwischen Ihrem lokalen und dem Remote-Computer einrichten.
Wenn Sie mehr als dies benötigen, können Sie an Python's Fabric oder die übergeordnete Küche denken .