Commit Graph

131 Commits

Author SHA1 Message Date
Ben Marsh
a9d4363a36 Horde: Fix incorrect method called for Utf8String.LastIndexOf.
#preflight none

[CL 18830126 by Ben Marsh in ue5-main branch]
2022-02-02 13:14:21 -05:00
Josh Engebretson
89c10334de Horde: Add systemic issue handler
#jira none
#skipci
#preflight none
#rnx

[CL 18813242 by Josh Engebretson in ue5-main branch]
2022-02-01 14:51:36 -05:00
Ben Marsh
1efd86c9da Horde: Use Horde.Storage for remote execution storage, rather than the legacy storage implementation in Horde.Build.
- Agent and server both use the IStorageClient interface in EpicGames.Horde to communicate with the storage backend.
- An instance of Horde.Storage is run in the same process as Horde.Build for local development, but is compiled out for containerized builds.
- Compute clusters are defined in global config file, and control permissions for who can create remote execution jobs. In the future it will likely be used to control access for different machines, prioritization, etc...
- Each compute cluster has an identifier, and the API for starting/monitoring jobs includes that identifier as part of the route (ie. /api/v1/compute/<cluster-id>).
- Removed gRPC interface for storage and compute services. May be resurrected in the future.

#preflight none

[CL 18784247 by Ben Marsh in ue5-main branch]
2022-01-29 14:50:26 -05:00
Ben Marsh
fd1f1f0c3b Restore CL 18614625 with fix for hang/memory leak.
#preflight none
#fyi Jack.Porter

[CL 18618782 by Ben Marsh in ue5-main branch]
2022-01-14 11:34:46 -05:00
Jack Porter
6cbd27e7e6 Back out CL 18601195 due to infinite hang/memory eat in UBT when building IOS or TVOS
#jira UE-139211
#preflight none
#rb Will.Damon
#fyi Ben.Marsh

[CL 18614625 by Jack Porter in ue5-main branch]
2022-01-13 23:40:02 -05:00
Ben Marsh
e031a88392 CS: Changes to ManagedProcess to better support cancellation on Mac/Linux when using merged output pipes.
- Data read from stdout/stderr is now writen to buffers posted in a Channel<T>, which correctly supports await and cancellation (unlike AsynchronousPipe).
- Public StdOut/StdErr streams are now a custom stream implementation that reads from the channel and copies data into the output buffer.
- Buffer objects are sized at 1024 bytes and pooled, which should be enough to accomodate most output lines without splitting.
- When the process is disposed, we now terminate the entire process tree. The tasks left reading from the child process terminate asynchronously.

Tested in a command line and WinForms app (by forcing SupportsJobObjects to return false) with asynchronous and synchronous reads to ensure code does not deadlock.

#preflight 61e062b3ed50181feb511e39

[CL 18601195 by Ben Marsh in ue5-main branch]
2022-01-13 14:17:35 -05:00
Ben Marsh
4cc55182e9 UGS: Add a filter command to allow adding and remove categories to sync.
#preflight none

[CL 18562812 by Ben Marsh in ue5-main branch]
2022-01-10 13:44:32 -05:00
Ben Marsh
4974dfe934 UGS: Add a command for listing submitted changes ("ugs changes -count=123 -lines=3")
#preflight none

[CL 18559173 by Ben Marsh in ue5-main branch]
2022-01-10 09:33:30 -05:00
UnrealBot
c47e81b2cb Branch snapshot for CL 18531810
[CL 18531810 in ue5-main branch]
2022-01-06 16:44:09 +00:00
Ben Marsh
16e0f22702 CS: Add support for setting properties via the CommandLineArguments class.
#preflight none

[CL 18530605 by Ben Marsh in ue5-main branch]
2022-01-06 09:05:06 -05:00
UnrealBot
2987349d36 Branch snapshot for CL 18514113
[CL 18514113 in ue5-main branch]
2022-01-05 20:41:17 +00:00
Ben Marsh
791885c855 UGS: Fix build errors for UnrealGameSyncLauncher and port to use new P4 library.
#preflight none

[CL 18518998 by Ben Marsh in ue5-main branch]
2022-01-05 10:22:48 -05:00
Ben Marsh
7a9e8c8b5c UGS: Significant refactor of UGS internals.
- Now uses the custom C++ Perforce library developed for Horde. This removes dependencies on an installed P4.EXE tool, improves performance, and paves the way to cross-platform support via command line invocations.
- As part of the migration to the new Perforce library, the codebase now uses async/await extensively instead of background threads, and supports a proper cancellation path rather than aborting threads.
- ILogger is now used for writing log files.
- Started converting to use of nullable annotations.

#preflight none

[CL 18511154 by Ben Marsh in ue5-main branch]
2022-01-04 14:03:17 -05:00
Ben Marsh
9d15d0651c [CS] Add utility methods for writing word-wrapped text to the console.
#preflight none

[CL 18503877 by Ben Marsh in ue5-main branch]
2022-01-03 17:00:37 -05:00
Ben Marsh
22a40c102c UBT: Support for single-file compile of headers.
When a header is specified via the -File=... or -FileList=... arguments, we scan the engine and project directories for source files and parse the include directives from them. A lookup table is built that maps from filename to files that include it, allowing building a (conservative) superset of the files which may include it.
#preflight 61bd194a6041819fd179bf21

[CL 18486253 by Ben Marsh in ue5-main branch]
2021-12-17 18:28:16 -05:00
Ben Marsh
a59ef99c07 BuildGraph: New mechanism for declaring graphs using C# code (WIP).
Nodes can now be implemented by arbitary C# methods. Graph structure is specified through expression trees implemented using Bg* types, which are not substituted with values until execution time. Doing so allows determination of node and option dependencies for a particular target, allowing us to generate dynamic UI for presenting relevant settings to the user.

Includes partial implementation of Installed Build script as an example implementation.

#preflight 61bb85d46c2686e86322eec9

[CL 18477305 by Ben Marsh in ue5-main branch]
2021-12-16 13:55:22 -05:00
Ben Marsh
35a6212c01 Horde: Strip VT100 escape codes from log output.
#preflight none

[CL 18476242 by Ben Marsh in ue5-main branch]
2021-12-16 11:24:47 -05:00
Ben Marsh
b8dcffbecd Horde: Fix multi-line errors creating multiple single-line events, rather than one event that covers the whole thing.
[CL 18467105 by Ben Marsh in ue5-main branch]
2021-12-15 10:19:50 -05:00
Ben Marsh
cff5ed646f Horde: Enable code analysis warnings for Horde.Build (currently IDE only due to long build times, but also enabled in Docker builds)
[CL 18462178 by Ben Marsh in ue5-main branch]
2021-12-14 18:44:21 -05:00
Ben Marsh
6a2855f64c UAT: Add support for async build commands and BuildGraph tasks.
#preflight 61b3aa86e928cffe866fa918

[CL 18433916 by Ben Marsh in ue5-main branch]
2021-12-10 15:36:47 -05:00
Ben Marsh
4dc2f1bf62 Horde: Validate the preflight change when starting a job, and return a descriptive error describing the problem with it if it fails.
#fyi Josh.Engebretson

[CL 18369077 by Ben Marsh in ue5-main branch]
2021-12-03 11:43:19 -05:00
Ben Marsh
c1362acc2d Horde: More descriptive error return paths. Errors now return a JSON log event with information about the problem, including a specific error message and properties.
- HordeControllerBase defines methods for generating standard 404, 503 responses with typed data.
- Unhandled exceptions include an exception field detailing the source of the error.
- Added a string typeconverter for AgentId and SubResourceId, so they can be bound directly to controller routes.
- Modified SessionId to be an alias for ObjectId<ISession>.

#fyi Josh.Engebretson

[CL 18369047 by Ben Marsh in ue5-main branch]
2021-12-03 11:35:15 -05:00
Ben Marsh
6d5f35aba9 Horde: Fix conversion of default logger events to LogEvent objects leaving key names inside properties.
[CL 18363605 by Ben Marsh in ue5-main branch]
2021-12-02 21:51:22 -05:00
Ben Marsh
03c172cbc5 Horde: Trap exceptions when jobs output exceptions that look like structured log messages, but fail to parse.
[CL 18269930 by Ben Marsh in ue5-main branch]
2021-11-23 10:06:33 -05:00
Marc Audy
0c3be2b6ad Merge Release-Engine-Staging to Test @ CL# 18240298
[CL 18241953 by Marc Audy in ue5-release-engine-test branch]
2021-11-18 14:37:34 -05:00