Từ cách đặt câu hỏi của bạn, tôi giả sử rằng bạn có một máy cục bộ và một máy từ xa nơi bạn cập nhật hai tệp - tập lệnh Python và tập lệnh Bash. Cả hai tệp đều nằm dưới sự kiểm soát của SVN và cả hai máy đều có quyền truy cập vào cùng một máy chủ SVN.
Tôi xin lỗi tôi không có bất kỳ lời khuyên cụ thể nào cho hệ thống lưới của bạn, nhưng hãy để tôi liệt kê một số điểm chung mà tôi thấy quan trọng đối với bất kỳ triển khai nào.
Giữ thay đổi sản xuất giới hạn thay đổi cấu hình . Bạn viết rằng bạn phải "sử dụng đường dẫn của bộ dữ liệu trên máy chủ"; điều này nghe có vẻ như bạn có các đường dẫn được mã hóa vào tập lệnh Python của bạn. Đây không phải là một ý tưởng tốt, chính xác bởi vì bạn sẽ cần thay đổi các đường dẫn đó trong mọi máy khác nơi bạn di chuyển tập lệnh tới. Nếu bạn cam kết những thay đổi đó trở lại SVN, thì trên máy cục bộ của bạn, bạn sẽ có các đường dẫn từ xa và bật và tắt ... (Điều gì xảy ra nếu không chỉ có đường dẫn, mà còn cả mật khẩu? Bạn không nên có mật khẩu sản xuất trong SVN người phục vụ.)
Vì vậy, hãy giữ các đường dẫn và thông tin thiết lập khác trong một .ini
tệp và sử dụng ConfigParser để đọc nó, hoặc sử dụng một .json
tệp và sử dụng mô-đun json . Giữ một bản sao của tệp cục bộ và một bản sao từ xa, cả hai cùng một đường dẫn, cả hai đều không có kiểm soát SVN và chỉ giữ đường dẫn đến tệp cấu hình đó trong tập lệnh Python (hoặc lấy nó từ dòng lệnh nếu bạn không thể giữ cả hai cấu hình theo cùng một đường dẫn).
Giữ cấu hình càng nhỏ càng tốt . Bất kỳ cấu hình nào cũng là "phần chuyển động" của ứng dụng của bạn và bất kỳ hệ thống nào mạnh hơn thì nó càng có ít phần chuyển động. Một chỉ báo tốt về một cái gì đó thuộc về cấu hình chính xác là bạn phải chỉnh sửa nó mỗi khi bạn di chuyển mã; những thứ không cần chỉnh sửa có thể vẫn là hằng số trong mã.
Tự động hóa việc triển khai của bạn . Bạn có thể làm điều đó thông qua tập lệnh Bash trên máy cục bộ của bạn; lưu ý rằng bạn có thể chạy bất kỳ lệnh trên một máy từ xa thông qua ssh
. Ví dụ:
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'
Để làm việc này, tất nhiên bạn cần phải đăng nhập không cần mật khẩu , dựa trên khóa chung / riêng, được thiết lập giữa máy cục bộ và máy từ xa.
Nếu bạn cần nhiều hơn thế, bạn có thể nghĩ đến việc sử dụng Python's Fabric hoặc các món ăn cao cấp hơn .