currently we are improving our build pipeline and since we are limited on hardware, we have only a limited amount of build machines.
Since the recommendation is to have only one Agent per build machine, we basically run out of disc space slowly but surely. I already optimized some workspaces, but still.
It would not be a problem to have another nvme installed, but I don’t see any way supported out of the box to assign workspaces to discs via the horde agent.
So is there a way to have one Horde Agent create / update workspaces depending of the job / stream on different hard drives? If not out of the box, could you guide me to the potential best place to hack it into Horde?
Hello! Unfortunately, this is not something that Horde supports out of the box, so you would need to patch this functionality in if required.
However, a simpler option might be to explore using a directory junction instead, without any code changes.
For example, if you’re using two workspace types (identifiers: ProjectOne, ProjectTwo), you could create a directory junction from “C:\<WorkspaceDir>\ProjectTwo” to “D:\Path\To\ProjectTwo” with “mklink /J”, and Horde should use this as normal.
This isn’t a setup that we’ve tested internally, so we can’t rule out any issues entirely, but it is worth validating first, in my opinion.
If you wanted to explore adding this functionality more explicitly in the Horde code, you would need to look for where the workspace identifier is used to build directory references.
I’ve found two spots where this is done: Drivers/JobDriver/Utility/WorkspaceInfo.cs#L210 and Drivers/JobDriver/Execution/ConformExecutor.cs#L101, so those would be a good point to start with.