오랜 시간 lurker가 된 저는 CruiseControl.NET, Subversion 및 원격 저장소와 관련하여 까다로운 질문을 던지고 있습니다.CruiseControl.NET Service/Subversion - 원격 저장소에 연결할 수 없습니다.
Windows Server 2008 SP2에서 실행되는 원격 Subversion 1.6.6 리포지토리를 가져 와서 Apache 2.2.14를 게이트웨이로 사용하여 포트 80 및 443에 대한 액세스를 활성화합니다. 암호화되지 않은 트래픽을 보안 포트로 리디렉션합니다. 자체 서명 된 인증서로 실행되는 SSL 레이어가 올바르게 구성되어 있습니다. 이 모든 것은 작동합니다 - 로컬 컴퓨터 (XP SP2 또는 Server 2008 SP2)에서이 저장소로 브라우저를 가리키고 인증서 확인을 손쉽게 통과하며 저장소 ACL에 대해 인증하고 거기에있는 내용을 볼 수 있습니다. 똑같이, 내 로컬 컴퓨터 (명령 줄이나 TortoiseSVN을 통해)에서 실행되는 SVN 명령도 완벽하게 작동합니다.
CruiseControl.NET 1.4.4.83 - 로컬 컴퓨터에서 잠시 실행하여 간단한 스크립트로 소스 코드를 원격 저장소에서 가져 와서 매우 기본적인 응용 프로그램을 빌드하십시오. 이 스크립트는 로컬 저장소와 완벽하게 작동하므로 유일한 차이점은 원격 서버를 가리키는 Subversion URL입니다.
내 계정의 명령 줄 셸 (ccnet.exe)에서 CC.NET을 실행하면 작동합니다.
그러나 CC.NET을 서비스 (ccservice.exe)로 실행하면 실패합니다. 기본적으로 LOCALSERVICE로 실행되지만 내 자격 증명으로 실행되도록 이미 변경되었습니다. 이 모드에서는 서버에 연결할 수 없다는 불만을 토로하여 발행 된 SVN LOG (Subversion 명령) 명령이 실패합니다.
저는 이것을 조사하는데 4 ~ 5 일을 보냈습니다. CC.NET 문제가 명령 행 셸에서 작동한다는 것과 똑같은 명령이 TortoiseSVN과 브라우저를 통해 원격 서버에 연결할 수 있기 때문에 방화벽 유형 문제는 아닙니다. 이미 인증서를 가져 왔으므로 SSL 및/또는 인증서가 아닙니다. 다시 말하지만 TortoiseSVN, 브라우저 또는 명령 줄에서 SVN 명령을 사용하여 '수동'모드에서 제대로 작동합니다. 원격 서버의 실제 IP 주소를 지정할 수 있기 때문에 DNS 확인 문제가 아니며 연결에 실패합니다. 물론 명령 줄 모드에서 실행하면 정상적으로 연결됩니다 ...
심지어 다운로드도했습니다. 이상한 일이 일어나지 않는지 CC.NET 소스 코드를 통해 알게되었습니다. 볼 수있는 한, 서비스 모드에서 실행할 때 명령을 실행하는 것과 관련된 유일한 차이점은 Subversion 명령 프로세스가 생성 될 때 래치 할 콘솔을 준비하기 위해 AllocConsole 호출이 수행되었다는 것입니다.
이 단계에서 알 수있는 가장 좋은 추측은 AllocConsole 세션이 표준 명령 행 세션과 근본적으로 다르다는 것입니다. 서비스가 내 사용자 자격 증명 하에서 실행되고 있지만 어떻게 든 AllocConsole에는 '적절한'네트워크 액세스. 그러나, 나는 이것을 증명할 수있는 AllocConsole이나 CC.NET 소스 코드에 대해 충분히 알지 못하며, 따라서 나는 한계에 처해있다.
현재로서는 CC.NET을 명령 줄 모드로 실행 중입니다. 그러나 우리는 서비스 모드 (로컬 도메인의 리포지토리에 대해 잘 작동하는)에서 서비스 모드를 실행하기를 선호하기 때문에 만족스럽지 않습니다. 시스템 시작시 예약 된 작업을 시작할 필요가 없습니다.
누구든지 의견이 있습니까?