소개
호드는 BuildGraph를 스크립팅 언어로 사용하여 Windows, Mac, Linux를 지원하는 빌드 자동화 시스템을 구현합니다. 이 시스템은 호드의 원격 실행 기능인 언리얼 게임 싱크(UnrealGameSync) 및 언리얼 엔진 에코시스템의 다른 툴과 긴밀히 통합됩니다.
지속적 통합(Continuous Integration, CI) 및 지속적 전달(Continuous Delivery, CD)이라는 용어는 빌드 자동화에서 일반적인 명칭으로, 프로젝트의 상태가 지속적으로 모니터링되고 빌드가 정기적으로 제작되도록 합니다.
전제 조건
- 호드 서버 및 하나 이상의 호드 에이전트(호드 설치 튜토리얼 참고)
- 언리얼 엔진 5.4 이상이 포함된 스트림이 있는, 환경설정된 Perforce 서버
- 레거시 Perforce 분기는 현재 지원되지 않습니다.
- 호드는 향후에 다른 리비전 컨트롤 시스템을 지원할 수 있습니다.
구성
-
호드 서버의 환경설정 파일을 포함된
C:\ProgramData\Epic\Horde\Server폴더를 찾습니다.C:\ProgramData폴더는 기본적으로 숨겨져 있으므로, Windows 탐색기 주소창에 수동으로 입력해야 할 수 있습니다.
-
globals.json파일을 엽니다.- 이 파일은 서버의 두 메인 환경설정 파일 중 하나입니다.
server.json파일은 이 머신 관련 세팅(통신할 다른 서버, 로깅 세팅 등)을 환경설정하는 반면,globals.json파일은 멀티 머신 설치에서 모든 서버 인스턴스가 공유하는 세팅을 환경설정합니다. - 자세한 내용은 환경설정 > 오리엔테이션을 참고하세요.
- 모든 세팅에 대한 자세한 내용은 환경설정 > 스키마 > Globals.json을 참고하세요.
- 이 파일은 서버의 두 메인 환경설정 파일 중 하나입니다.
-
환경설정 파일의
perforceClusters섹션에서 Perforce 서버를 환경설정합니다.- 기본 환경설정이 포함되어 있지만 주석 처리되어 있으므로 디플로이에 적절하게
serverAndPort및credentials항목을 환경설정합니다. - 서버는 파일이 저장되면
globals.json에 대한 변경사항을 자동으로 리로드합니다. - 호드 대시보드(기본값: http://localhost:13340)로 이동하여 서버(Server) 메뉴를 열고 상태(Status) 를 선택하는 것이 좋습니다. 이 페이지에는 작동 중인 것으로 확인되어야 하는 Perforce 연결 상태를 비롯해 다양한 서버 서브시스템의 상태가 표시됩니다.
- 기본 환경설정이 포함되어 있지만 주석 처리되어 있으므로 디플로이에 적절하게
-
globals.json에서 다음 줄을 코멘트 해제하여 예시 프로젝트를 활성화합니다."projects": [ { "id": "ue5", "path": "ue5.project.json" } ]- 호드 용어에서 프로젝트란 일반적으로 Perforce의 스트림 디포와 유사한 게임이나 프로젝트를 말합니다. 에픽은
//UE5/Main,//UE5/Release-5.5,//UE5/Dev-Main-HordeDemo등 내부 호드 인스턴스의UE5프로젝트 아래에 여러 스트림을 보유하고 있습니다. - 참조된 환경설정 파일인
ue5.project.json은 동일한 디렉터리에 존재하며ue5-release-5.5.stream.json에서 환경설정된 스트림을 참조합니다. 이 파일의 이름은 이 튜토리얼에서 중요하지 않습니다.
- 호드 용어에서 프로젝트란 일반적으로 Perforce의 스트림 디포와 유사한 게임이나 프로젝트를 말합니다. 에픽은
-
ue5-release-5.5.stream.json파일을 열고name프로퍼티를 Perforce 서버의 스트림으로 업데이트합니다. 기본값은//UE5/Release-5.5-HordeSync입니다.- 아래
Project및ProjectPath매크로가 프로젝트를 참조하도록 업데이트해야 합니다. 기본적으로 이는 에픽게임즈의 라이라 샘플을 빌드하도록 설정되어 있습니다.
- 아래
-
이 시점에서 호드 대시보드의 메뉴 바에 나열된 UE5 프로젝트가 보여야 합니다. 이 버튼을 클릭하여 위에서 환경설정한 스트림을 선택합니다.
- 프로젝트가 나타나게 하려면 웹 브라우저에서 대시보드를 새로고침해야 할 수 있습니다.
기본 작업
ue5-release-5.4.stream.json 샘플 파일은 작업 템플릿과 에이전트 타입뿐만 아니라 호드 대시보드의
페이지 외관도 환경설정합니다.
- 작업 템플릿 은 BuildGraph 명령줄을 생성하는 데 사용되는 파라미터 세트를 정의합니다. 작업 템플릿은 작업을 시작하는 데 사용됩니다.
- 에이전트 타입 은 BuildGraph 스크립트에 나열된 에이전트와 실행 가능한 머신 풀의 매핑, 그리고 해당 머신이 작업을 실행하기 위해 Perforce에서 동기화해야 하는 세팅을 정의합니다.
예시 스트림을 활성화한 후 서버에 연결된 에이전트는 일치하는 에이전트 타입을 지원하는 데 필요한 Perforce 워크스페이스를 동기화하기 시작합니다.
예시 스트림 기본 페이지에는 페이지 상단에 걸쳐 여러 탭이 표시되며, 이 탭을 사용하여 관련된 작업 타입을 그룹화할 수 있습니다. 각 탭에는 몇 가지 사전 정의된 작업이 있습니다.
점증식
- 점증식 빌드(Incremental Build) - 프로젝트용 에디터를 빌드하고 호드에 언리얼 게임 싱크와 동기화될 수 있는 에디터 빌드를 업로드합니다. 이러한 작업은 하루 동안 빠르고 빈번하게 실행되도록 설계되었으며, 실행 간에 정리되지 않는 점증식 워크스페이스를 사용합니다. 이를 통해 빠르게 시작하고 이전 실행에서 생성된 중간 아티팩트를 사용할 수 있습니다.
패키지로 만든 빌드
- 패키지로 만든 프로젝트 빌드(Packaged Project Build) - 다양한 타깃 플랫폼을 위한 독립형 게임/클라이언트/서버 빌드를 컴파일 및 쿠킹하고 표준 테스트를 실행합니다. 이러한 작업은 비점증식 워크스페이스에서 실행되어 작업이 시작되기 전에 워크스페이스를 깨끗한 상태로 복원합니다.
프리서브밋
- 프리서브밋 테스트(Presubmit Tests) - 시작한 사용자 대신 변경사항을 제출하기 전에 보류된 체인지리스트에서 빠른 에디터 컴파일을 수행합니다. 언리얼 게임 싱크를 통해 활성화할 수 있는 P4VUtils 툴은 Perforce P4V에 익스텐션을 제공하므로 UI를 통해 셸프에서 프리서브밋 빌드를 시작할 수 있습니다.
유틸리티
- 설치된 엔진 빌드(Installed Engine Build) - 에픽게임즈 스토어에서 다운로드할 수 있는 것과 유사한 설치된 엔진 빌드를 생성합니다. 설치된 엔진 빌드를 통해 엔진을 SDK처럼 사용할 수 있습니다. 이는 엔진을 대폭 수정할 것으로 예상되지 않는 소규모 팀을 위해 설계되었습니다.
- 파라미터 데모(Parameter Demo) - 호드 대시보드를 통해 환경설정할 수 있는 다양한 파라미터 타입과 이를 해당 BuildGraph 스크립트(
Engine/Build/Graph/Examples/Parameters.xml)에서 사용하는 방법을 보여줍니다. - 원격 실행 테스트(Remote Execution Test) - UnrealBuildAccelerator를 사용하여 컴파일을 테스트합니다. 호드는 언리얼 빌드 툴이 추가 환경설정 없이 서버에 연결되도록 하는 환경 변수를 통해 작업에 세팅을 전달합니다.
- 테스트 실행자(Test Executor) - 시뮬레이션된 오류나 경고가 있는 모의 작업을 실행합니다. Perforce 워크스페이스를 동기화하지 않고 에이전트에 대한 연결을 테스트하는 데 유용합니다.