Microsoft MVP성태의 닷넷 이야기
Team Foundation Server: 7. 외부 빌드 머신 구성 [링크 복사], [링크+제목 복사],
조회: 18388
글쓴 사람
정성태 (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

비밀번호

댓글 작성자
 




... 76  77  78  79  80  81  [82]  83  84  85  86  87  88  89  90  ...
NoWriterDateCnt.TitleFile(s)
11887정성태5/8/201921522.NET Framework: 829. C# - yield 문을 사용할 수 있는 메서드의 조건
11886정성태5/7/201919333오류 유형: 534. mstest.exe 실행 시 "Visual Studio Enterprise is required to execute the test." 오류 [2]
11885정성태5/7/201916276오류 유형: 533. mstest.exe 실행 시 "File extension specified '.loadtest' is not a valid test extension." 오류 발생
11884정성태5/5/201921079.NET Framework: 828. C# DLL에서 Win32 C/C++처럼 dllexport 함수를 제공하는 방법 - 두 번째 이야기
11883정성태5/3/201926247.NET Framework: 827. C# - 인터넷 시간 서버로부터 받은 시간을 윈도우에 적용하는 방법파일 다운로드1
11882정성태5/2/201922540.NET Framework: 826. (번역글) .NET Internals Cookbook Part 11 - Various C# riddles파일 다운로드1
11881정성태4/28/201922649오류 유형: 532. .NET Core 프로젝트로 마이그레이션 시 "CS0579 Duplicate 'System.Reflection.AssemblyCompanyAttribute' attribute" 오류 발생
11880정성태4/25/201918503오류 유형: 531. 이벤트 로그 오류 - Task Scheduling Error: m->NextScheduledSPRetry 1547, m->NextScheduledEvent 1547
11879정성태4/24/201926940.NET Framework: 825. (번역글) .NET Internals Cookbook Part 10 - Threads, Tasks, asynchronous code and others파일 다운로드2
11878정성태4/22/201922722.NET Framework: 824. (번역글) .NET Internals Cookbook Part 9 - Finalizers, queues, card tables and other GC stuff파일 다운로드1
11877정성태4/22/201922770.NET Framework: 823. (번역글) .NET Internals Cookbook Part 8 - C# gotchas파일 다운로드1
11876정성태4/21/201921746.NET Framework: 822. (번역글) .NET Internals Cookbook Part 7 - Word tearing, locking and others파일 다운로드1
11875정성태4/21/201922810오류 유형: 530. Visual Studo에서 .NET Core 프로젝트를 열 때 "One or more errors occurred." 오류 발생
11874정성태4/20/201922996.NET Framework: 821. (번역글) .NET Internals Cookbook Part 6 - Object internals파일 다운로드1
11873정성태4/19/201921614.NET Framework: 820. (번역글) .NET Internals Cookbook Part 5 - Methods, parameters, modifiers파일 다운로드1
11872정성태4/17/201922380.NET Framework: 819. (번역글) .NET Internals Cookbook Part 4 - Type members파일 다운로드1
11871정성태4/16/201920937.NET Framework: 818. (번역글) .NET Internals Cookbook Part 3 - Initialization tricks [3]파일 다운로드1
11870정성태4/16/201919274.NET Framework: 817. Process.Start로 실행한 콘솔 프로그램의 출력 결과를 얻는 방법파일 다운로드1
11869정성태4/15/201925115.NET Framework: 816. (번역글) .NET Internals Cookbook Part 2 - GC-related things [2]파일 다운로드2
11868정성태4/15/201921093.NET Framework: 815. CER(Constrained Execution Region)이란?파일 다운로드1
11867정성태4/15/201920288.NET Framework: 814. Critical Finalizer와 SafeHandle의 사용 의미파일 다운로드1
11866정성태4/9/201923350Windows: 159. 네트워크 공유 폴더(net use)에 대한 인증 정보는 언제까지 유효할까요?
11865정성태4/9/201919223오류 유형: 529. 제어판 - C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools is not accessible.
11864정성태4/9/201917885오류 유형: 528. '...' could be '0': this does not adhere to the specification for the function '...'
11863정성태4/9/201917784디버깅 기술: 127. windbg - .NET x64 EXE의 EntryPoint
11862정성태4/7/201920290개발 환경 구성: 437. .NET EXE의 ASLR 기능을 끄는 방법
... 76  77  78  79  80  81  [82]  83  84  85  86  87  88  89  90  ...