귀하의 질문에 따르면, 파이썬 스크립트와 Bash 스크립트라는 두 파일을 업데이트하는 로컬 컴퓨터와 원격 컴퓨터가 있다고 가정합니다. 두 파일 모두 SVN 제어하에 있으며 두 시스템 모두 동일한 SVN 서버에 액세스 할 수 있습니다.
그리드 시스템에 대한 조언은 없지만 죄송하지만 배포에 중요한 몇 가지 일반적인 사항을 알려 드리겠습니다.
프로덕션 변경 사항은 구성 변경 사항으로 만 제한하십시오 . "서버에서 데이터 세트의 경로를 사용"해야합니다. 파이썬 스크립트에 하드 코딩 된 경로가있는 것처럼 들립니다. 스크립트를 이동하는 다른 모든 시스템에서 해당 경로를 변경해야하기 때문에 이는 좋은 생각이 아닙니다. 이러한 변경 사항을 SVN으로 다시 커밋하면 로컬 컴퓨터에 원격 경로가 있고 on ... on (경로뿐만 아니라 암호가있는 경우 어떻게됩니까?) SVN에 프로덕션 암호가 없어야합니다 섬기는 사람.)
따라서 경로 및 기타 설정 정보를 .ini
파일에 보관하고 ConfigParser 를 사용하여 .json
파일 을 읽거나 파일을 사용하여 json 모듈을 사용하십시오 . SVN 제어없이 파일의 사본 하나를 로컬 및 원격으로 하나의 동일한 경로에 두십시오. 파이썬 스크립트에서 해당 구성 파일의 경로를 유지하십시오 (또는 둘 다 유지할 수없는 경우 명령 줄에서 가져 오십시오) 동일한 경로에서 구성).
구성을 가능한 작게 유지하십시오 . 모든 구성은 응용 프로그램의 "이동 부품"이며 모든 시스템은 이동 부품이 적을수록 더 강력합니다. 구성에 속하는 것을 나타내는 좋은 지표는 코드를 이동할 때마다 편집해야한다는 것입니다. 편집 할 필요가없는 것은 코드에서 상수로 유지 될 수 있습니다.
배포 자동화 . 로컬 시스템의 Bash 스크립트를 통해이를 수행 할 수 있습니다. 를 통해 원격 컴퓨터에서 모든 명령을 실행할 수 있습니다 ssh
. 예를 들어 :
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'
이것이 작동하려면 공개 / 개인 키를 기반으로 로컬 컴퓨터와 원격 컴퓨터 사이에 암호없이 로그인 해야합니다.
이보다 더 필요한 경우 Python의 Fabric 또는 고급 요리를 사용할 수 있습니다 .