2010-05-12 2 views
4

빌드의 일부로 원격 시스템에 몇 가지 Windows 서비스를 배포 할 수 있어야합니다. 이것은 전체 애플리케이션을 TEST 환경에 배치하는 야간 빌드이므로 어떻게 든 자동화해야합니다.TFS 2010 : Windows 서비스를 빌드의 일부로 배포하는 방법?

웹 프로젝트의 경우 DB 서버는 물론 MSDeploy를 사용할 수 있습니다. 하지만 Windows 서비스는 어떻습니까? 그것들은 대상 컴퓨터에 중지되어 있어야하며, 바이너리를 복사해야하며, 서비스가 등록되어 있어야합니다 (이전에 설치되어 있지 않은 경우) ...

+0

혹시 이것에 대한 답을 찾으셨습니까? 나는 똑같은 일을하려고 노력하고있어. 그리고 내 google-fu는 나에게 실패하고있다. – Koby

답변

1

MSDeploy를 사용하여이 작업을 수행 할 수 있습니다. runCommand 대상 컴퓨터에서 지정된 명령을 실행하는 공급자가 있습니다.

msdeploy.exe -verb:sync -source:runCommand="net start MyService" -dest:auto 

여기에서 자세한 내용을보실 수 있습니다 : http://technet.microsoft.com/en-us/library/ee619740(WS.10).aspx

+0

TFS에서이 작업을 수행하는 데는 훨씬 더 많은 작업이 필요합니다. –

1

이 작업을 수행하는 방법 우리 서버에서 실행되는 litte 웹 서비스로 특정 디렉토리에서 새 파일을 모니터링합니다. 빌드는 임시 이름을 사용하여 해당 폴더에 Windows 서비스를 배포 한 다음 모니터링되는 이름 패턴 ("servicename.deployservice.zip")으로 이름을 바꿉니다. 배포 서비스에서 이러한 파일을 가져 와서 임시 위치에 압축을 푼 후 배포를 위해 필요한 단계 (예 : 이전 서비스 중지, 이전 서비스 제거, 새 서비스 설치, 새 서비스 시작). 특수 작업을 전송해야하는 경우 배포 ZIP 파일에 배포 코드 DLL 또는 "빌드 스크립트"를 추가 할 수 있습니다.

가장 일반적인 방법으로 이러한 배포 코드를 수행하는 가장 쉬운 방법은 zip 파일에 (msi 또는 기타) 설정을 예상하고 실행하는 서비스입니다. 이 방법을 사용하면 프로젝트에 배포 설정을 추가하고 Teambuild에서 수행 할 작업량을 줄일 수 있습니다.

1

VS 2010 및 TFS 2010을 사용한다고 가정하면 빌드 워크 플로를 수정하여 ExecuteProcess 작업을 추가 할 수 있습니다 (대상 서버에 대한 AgentScope 활동 내에서) 서비스 이름을 지정하는 svcutil.exe를 실행하십시오.