Microsoft MVP성태의 닷넷 이야기
Team Foundation Server: 7. 외부 빌드 머신 구성 [링크 복사], [링크+제목 복사],
조회: 18363
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 


환경 : Single-server TFS



사실, TFS 서버를 한 대의 머신에 설치하는 것은 여러모로 바람직하지는 않습니다.
왜냐하면, SQL Server와 TFS 서버가 함께 있음으로 인한 부하를 무시할 수는 없기 때문입니다. TFS 서버를 SourceSafe처럼 쓰시는 분들도 계실 텐데, 느끼시겠지만 소스 세이프 보다는 많이 느리죠.

MS도 그 "느리다"는 것을 인지했기 때문에 "TFS Proxy"까지 만들게 되었을 것입니다. (Proxy라고 해서 Front-end HTTP 웹 서버에서 Back-end TFS 서버로 요청을 중계해 주는 것이라고 생각하실 수 있는데, TFS Proxy는 그러한 역할을 하지 않고 "Source Control"을 좀 더 빠르게 해주는 캐쉬기능을 담당합니다.)

아키텍트적으로 굳이 큰 그림을 그려 본다면 TFS 서비스를 원활하게 구동시키기 위해서는 아래와 같이 5대 정도의 컴퓨터가 필요할 수 있습니다.

인증 서버 : Active Directory
TFS Server - Application Tier
SQL Server - Data Tier
Proxy Server - TFS Proxy
Build Server - TFS Build Machine

하지만, 공부를 목적으로 하거나 회사에서의 소규모 테스트를 위한 용도로는 다음과 같은 구성이 일반적일 것입니다.

인증 서버 : AD
TFS Server - App Tier + Data Tier + Build

물론, 최소 구성요소는 TFS Server이지만 가능한 AD 서버를 두고 TFS 서버(Single-Server 일지라도)를 그에 참여시키는 것을 권장합니다.



자, 이제 Single-server로 구성을 하긴 했지만, 조금 쓰다보면 1GB 메모리를 소모해버리는 TFS 서버에서 Build까지 하도록 하는 것은 너무 가혹하다는 생각을 하게 됩니다. ^^ 더군다나, 이제 TFS 서버는 단순한 빌드만을 하는 용도가 아니라, Debug/Release 산출물은 물론이고 Unit Test, Symbol 서버, Code Analysis, 최종 제품으로의 셋업 Setup 과정까지 담당하게 되니, 당장은 아니더라도 언젠가는 Build server를 별도로 두고 싶어질 것입니다.

그럼, 어떻게 Build Machine을 구성할 수 있을까요? 천천히 따라해 보도록 하겠습니다.

1. Build를 수행할 컴퓨터에 TFS CD의 "\build" 폴더에서 setup.exe를 실행시켜서 빌드 서비스를 설치합니다. 이때의 빌드 서비스 구동 계정은 AD에 참여 시킨 계정으로 해줍니다.

2. Team Project에서 새로운 Team Build를 생성하는 과정에서 Build Service를 설치한 컴퓨터를 지정해 줍니다. [아래 그림 참조]

원격 빌드 컴퓨터를 지정

3. "인터넷으로 Team Server 접근"에서 설명했던 것처럼, 빌드 서비스가 구성된 원격지 컴퓨터의 환경 설정을 수정해 주어야 합니다. 즉, Build Service로 하여금 어떤 PC가 TFS Server인지를 알 수 있도록 해주어야 하는데, 해당 PC의 다음과 같은 환경 구성 값을 수정해 주시면 됩니다.

--- 변경 전 -----
    <!-- AllowedTeamServer
         This is the Team Foundation Server Application Tier that can connect
         to this build machine.
        -->
    <add key="AllowedTeamServer" value="" />

--- 변경 후 -----
    <add key="AllowedTeamServer" value="TFS 접근 URL 주소" />
예를 들어,
    <add key="AllowedTeamServer" value="https://www.sysnet.pe.kr:8070/" />

자, 이제 모든 설정은 마무리 되었습니다. Team Explorer에서 해당 Team Build를 선택해서 Build 명령을 내리면 원격지 컴퓨터에서 빌드 작업이 실행되게 됩니다.






[최초 등록일: ]
[최종 수정일: 7/10/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... [121]  122  123  124  125  126  127  128  129  130  131  132  133  134  135  ...
NoWriterDateCnt.TitleFile(s)
10900정성태2/19/201622207.NET Framework: 548. Linq는 결국 메서드 호출! [3]파일 다운로드1
10899정성태2/17/201623547개발 환경 구성: 282. kernel32.dll, kernel32legacy.dll, api-ms-win-core-sysinfo-l1-2-0.dll [1]
10898정성태2/17/201622027.NET Framework: 547. PerformanceCounter의 InstanceName 지정 시 주의 사항파일 다운로드1
10897정성태2/17/201621303디버깅 기술: 76. windbg 분석 사례 - 닷넷 프로파일러의 GC 콜백 부하
10896정성태2/17/201622396오류 유형: 320. FATAL: 28000: no pg_hba.conf entry for host "fe80::1970:8120:695:a41e%12"
10895정성태2/17/201621284.NET Framework: 546. System.AppDomain으로부터 .NET Profiler의 AppDomainID 구하는 방법 [1]
10894정성태2/17/201622015오류 유형: 319. Visual Studio에서 찾기는 성공하지만 해당 소스 코드 정보가 보이지 않는 경우
10893정성태2/16/201620648.NET Framework: 545. 닷넷 - 특정 클래스가 로드되었는지 여부를 알 수 있을까? - 두 번째 이야기
10892정성태2/16/201621273오류 유형: 318. 탐색기에서 폴더 생성/삭제 시 몇 초 동안 멈추는 현상
10891정성태2/16/201624294VC++: 95. 내 CPU가 MPX/SGX를 지원할까요? [1]
10890정성태2/15/201624101.NET Framework: 544. C# 5의 Caller Info를 .NET 4.5 미만의 응용 프로그램에 적용하는 방법 [5]
10889정성태2/14/201620445.NET Framework: 543. C++의 inline asm 사용을 .NET으로 포팅하는 방법 - 두 번째 이야기파일 다운로드1
10888정성태2/14/201618737.NET Framework: 542. 닷넷 - 특정 클래스가 로드되었는지 여부를 알 수 있을까?
10887정성태2/3/201619457VC++: 94. MPX(Memory Protection Extensions) 테스트파일 다운로드1
10886정성태2/3/201620698개발 환경 구성: 281. Intel MPX Runtime Driver 수동 설치
10885정성태2/2/201620382오류 유형: 317. Sybase.Data.AseClient.AseException: The command has timed out.
10884정성태1/11/201621627개발 환경 구성: 280. 닷넷에서 SAP Adaptive Server Enterprise 데이터베이스 사용파일 다운로드1
10882정성태1/6/201620919Windows: 113. 윈도우의 2179, 26143, 47001 TCP 포트 사용 [1]
10881정성태1/3/201622367오류 유형: 316. 윈도우 10 - 바탕/돋음 체가 사라져 한글이 깨지는 현상 [2]
10880정성태12/16/201520036오류 유형: 315. 닷넷 프로파일러의 오류 코드 정보
10879정성태12/16/201521993오류 유형: 314. Error : DEP0700 : Registration of the app failed. error 0x80070005
10878정성태12/9/201525167디버깅 기술: 75. UWP(유니버설 윈도우 플랫폼) 앱에서 global::System.Diagnostics.Debugger.Break 예외 발생 시 대응 방법
10877정성태12/9/201529519VC++: 93. std::thread 사용 시 R6010 오류 [2]
10876정성태11/26/201525533.NET Framework: 541. SignedXml을 이용한 ds:Signature만드는 방법 [3]파일 다운로드1
10875정성태11/26/201530538개발 환경 구성: 279. signtool.exe의 다중 서명 기능 [2]
10874정성태11/26/201526504개발 환경 구성: 278. 인증서와 인증서를 이용한 코드 사인의 해시 구분
... [121]  122  123  124  125  126  127  128  129  130  131  132  133  134  135  ...