2009-06-30 2 views
1

우리는 실험용 Java 응용 프로그램을 실행하는 데 사용되는 Mac 컴퓨터 세트 (대부분 PPC)를 가지고 있습니다. 응용 프로그램은 여러 개의 jar 파일이있는 폴더, 일부 설명서 및 일부 쉘 스크립트로 구성됩니다.여러 대의 Mac에 파일을 자동으로 배포

새로운 버전의 실험을 하나의 Linux 서버에있는 디렉토리로 푸시 한 다음 Mac에 버전을 업데이트하거나 아직없는 경우 전체 실험을 검색 할 수 있기를 바랍니다. 그것.

../deployment/ 
../deployment/experiment1/ 
../deployment/experiment2/ 

그래서 나는 업데이트 프로세스를 자동화하는 방법을 마련하고 싶습니다

. Mac은 항상 켜져있는 것은 아니며 DHCP에 의해 할당 된 IP 주소를 가지므로 서버 (도메인 이름이 있음)는 직접 연결할 수 없습니다. Mac에서 풀 타임으로 실행되는 일종의 데몬이 필요할 것이라고 상상해 봅니다. "실험이 업데이트되었습니다"라는 발표가 설정되었는지 여부를 확인하기 위해 매분마다 서버에 ping을 실행합니다.

누구든지 효율적인 관리 방법을 생각할 수 있습니까? 솔루션에는 기존 Mac 응용 프로그램이나 필자가 작성할 수있는 셸 스크립트가 포함될 수 있습니다.

답변

1

간단한 Subversion 설정으로 성공할 수 있습니다. Mac의 농장에서 개발 도구를 사용하고 있다면 이미 Subversion을 설치하게됩니다.

스크립트는 배포 디렉토리에서 원하는대로 자주 svn up을 실행하고 시스템에서 Subversion 서버의 변경 사항을 확인하는 것처럼 간단합니다. 서버에서 특별한 설정없이이 작업을 수행 할 수 있습니다.

역사가 중요하지 않고 버전 제어 시스템이 너무 무거워 보이는 경우이 전통적인 유닉스 도구는 rsync이고 its website에 대한 정보가 많이 있습니다.


아마도 폴링과 관련이없는 해결책을 찾고있을 것입니다. 이 경우 각 Mac에서 실행되는 프로세스를 가지고 로컬 네트워크 Bonjour 서비스를 등록 할 수 있습니다. DNS-SD 라이브러리가 선택한 언어로 사용 가능할 수 있으며이 경우 활성 컴퓨터 목록을 가져 오는 것은 매우 간단합니다. 나는 SSH 실행 로컬 시스템을 찾기 위해 루비 스크립트를 썼습니다 :

#!/usr/bin/env ruby 

require 'rubygems' 
require 'dnssd' 

handle = DNSSD.browse('_ssh._tcp') do |reply| 
    puts "#{reply.name}.#{reply.domain}" 
end 

sleep 1 
handle.stop 
+0

이것은 잠재적 인 솔루션이며 Subversion을 사용하여 소스 코드를 관리하고 있습니다. 그러나 이상적으로는 모든 클라이언트 컴퓨터에서 물리적으로이 작업을 수행하고 싶지는 않습니다. 중앙 집중식 방법이 바람직합니다. – kpozin

+1

왜 모든 클라이언트 컴퓨터에 가야합니까? launchd 또는 cron에서 몇 분마다 실행되는 모든 컴퓨터에 스크립트를 설치하고 Subversion 업데이트를 수행하십시오. –

0

할 수 있습니다 use AppleScript remotely 만약 당신이 클라이언트 시스템에서 turn on Remote Events. 예를 들어, control programs like iTunes remotely 수 있습니다.

원격 컴퓨터 (AppleScript 또는 기타)에 업데이트 스크립트를 설치 한 다음 원격 AppleScript를 사용하여 필요에 따라 업데이트 스크립트를 실행하는 것이 좋습니다.

자주 업데이트하면 Jim Puls 아이디어가 훌륭한 것입니다. 컴퓨터가 업데이트를 찾기 시작할 때 직접 제어 할 수 있다면 원격 AppleScript는 내가 생각할 수있는 가장 간단한 솔루션입니다.

관련 문제